1.计算变量缺失率

df=pd.read_csv('titanic_train.csv')
def missing_cal(df):"""df :数据集return:每个变量的缺失率"""missing_series = df.isnull().sum()/df.shape[0]missing_df = pd.DataFrame(missing_series).reset_index()missing_df = missing_df.rename(columns={'index':'col',0:'missing_pct'})missing_df = missing_df.sort_values('missing_pct',ascending=False).reset_index(drop=True)return missing_df
missing_cal(df)

如果需要计算样本的缺失率分布,只要加上参数axis=1.

2.获取分组里最大值所在的行方法

分为分组中有重复值和无重复值两种。无重复值的情况。

df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]})
dfdf.iloc[df.groupby(['Mt']).apply(lambda x: x['Count'].idxmax())]

先按Mt列进行分组,然后对分组之后的数据框使用idxmax函数取出Count最大值所在的列,再用iloc位置索引将行取出。有重复值的情况

df["rank"] = df.groupby("ID")["score"].rank(method="min", ascending=False).astype(np.int64)
df[df["rank"] == 1][["ID", "class"]]

对ID进行分组之后再对分数应用rank函数,分数相同的情况会赋予相同的排名,然后取出排名为1的数据。

3.多列合并为一行

df = pd.DataFrame({'id_part':['a','b','c','d'], 'pred':[0.1,0.2,0.3,0.4], 'pred_class':['women','man','cat','dog'], 'v_id':['d1','d2','d3','d1']})df.groupby(['v_id']).agg({'pred_class': [', '.join],'pred': lambda x: list(x),
'id_part': 'first'}).reset_index()

4.删除包含特定字符串所在的行

df = pd.DataFrame({'a':[1,2,3,4], 'b':['s1', 'exp_s2', 's3','exps4'], 'c':[5,6,7,8], 'd':[3,2,5,10]})
df[df['b'].str.contains('exp')]

5.组内排序

df = pd.DataFrame([['A',1],['A',3],['A',2],['B',5],['B',9]], columns = ['name','score'])

介绍两种高效地组内排序的方法。

df.sort_values(['name','score'], ascending = [True,False])
df.groupby('name').apply(lambda x: x.sort_values('score', ascending=False)).reset_index(drop=True)

6.选择特定类型的列

drinks = pd.read_csv('data/drinks.csv')
# 选择所有数值型的列
drinks.select_dtypes(include=['number']).head()
# 选择所有字符型的列
drinks.select_dtypes(include=['object']).head()
drinks.select_dtypes(include=['number','object','category','datetime']).head()
# 用 exclude 关键字排除指定的数据类型
drinks.select_dtypes(exclude=['number']).head()

7.字符串转换为数值

df = pd.DataFrame({'列1':['1.1','2.2','3.3'],'列2':['4.4','5.5','6.6'],'列3':['7.7','8.8','-']})
df
df.astype({'列1':'float','列2':'float'}).dtypes

用这种方式转换第三列会出错,因为这列里包含一个代表 0 的下划线,pandas 无法自动判断这个下划线。为了解决这个问题,可以使用 to_numeric() 函数来处理第三列,让 pandas 把任意无效输入转为 NaN。

df = df.apply(pd.to_numeric, errors='coerce').fillna(0)

8.优化 DataFrame 对内存的占用

方法一:只读取切实所需的列,使用usecols参数

cols = ['beer_servings','continent']
small_drinks = pd.read_csv('data/drinks.csv', usecols=cols)

方法二:把包含类别型数据的 object 列转换为 Category 数据类型,通过指定 dtype 参数实现。

dtypes ={'continent':'category'}
smaller_drinks = pd.read_csv('data/drinks.csv',usecols=cols, dtype=dtypes)

9.根据最大的类别筛选 DataFrame

movies = pd.read_csv('data/imdb_1000.csv')
counts = movies.genre.value_counts()
movies[movies.genre.isin(counts.nlargest(3).index)].head()

10.把字符串分割为多列

df = pd.DataFrame({'姓名':['张 三','李 四','王 五'],'所在地':['北京-东城区','上海-黄浦区','广州-白云区']})
df
df.姓名.str.split(' ', expand=True)

11.把 Series 里的列表转换为 DataFrame

df = pd.DataFrame({'列1':['a','b','c'],'列2':[[10,20], [20,30], [30,40]]})
dfdf_new = df.列2.apply(pd.Series)
pd.concat([df,df_new], axis='columns')

12.用多个函数聚合

orders = pd.read_csv('data/chipotle.tsv', sep='\t')
orders.groupby('order_id').item_price.agg(['sum','count']).head()

13.分组聚合

import pandas as pd
df = pd.DataFrame({'key1':['a', 'a', 'b', 'b', 'a'],'key2':['one', 'two', 'one', 'two', 'one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})
dffor name, group in df.groupby('key1'):print(name)print(group)dict(list(df.groupby('key1')))

通过字典或Series进行分组

people = pd.DataFrame(np.random.randn(5, 5),columns=['a', 'b', 'c', 'd', 'e'],index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis'])
mapping = {'a':'red', 'b':'red', 'c':'blue','d':'blue', 'e':'red', 'f':'orange'}
by_column = people.groupby(mapping, axis=1)
by_column.sum()

14.显示已安装的版本

输入下面的命令查询pandas版本:

1In [7]:pd.__version__
2Out[7]: 0.24.2

如果你还想知道pandas所依赖的模块的版本,你可以使用show_versions()函数:

 1In [9]:2pd.show_versions()34INSTALLED VERSIONS 5------------------ 6commit: None 7python: 3.7.3.final.0 8python-bits: 64 9OS: Darwin
10OS-release: 18.6.0
11machine: x86_64
12processor: i386
13byteorder: little
14LC_ALL: None
15LANG: en_US.UTF-8
16LOCALE: en_US.UTF-8
17
18pandas: 0.24.2
19pytest: None
20pip: 19.1.1
21setuptools: 41.0.1
22Cython: None
23numpy: 1.16.4
24scipy: None
25pyarrow: None
26xarray: None
27IPython: 7.5.0
28sphinx: None
29patsy: None
30dateutil: 2.8.0
31pytz: 2019.1
32blosc: None
33bottleneck: None
34tables: None
35numexpr: None
36feather: None
37matplotlib: 3.1.0
38openpyxl: None
39xlrd: None
40xlwt: None
41xlsxwriter: None
42lxml.etree: None
43bs4: None
44html5lib: None
45sqlalchemy: None
46pymysql: None
47psycopg2: None
48jinja2: 2.10.1
49s3fs: None
50fastparquet: None
51pandas_gbq: None
52pandas_datareader: None
53gcsfs: None

你可以查看到Python,pandas, Numpy, matplotlib等的版本信息。

15.创建示例DataFrame

假设你需要创建一个示例DataFrame。有很多种实现的途径,我最喜欢的方式是传一个字典给DataFrame constructor,其中字典中的keys为列名,values为列的取值。

现在如果你需要创建一个更大的DataFrame,上述方法则需要太多的输入。在这种情况下,你可以使用Numpy的random.rand()函数,告诉它行数和列数,将它传递给DataFrame constructor:

这种方式很好,但如果你还想把列名变为非数值型的,你可以强制地将一串字符赋值给columns参数:

你可以想到,你传递的字符串的长度必须与列数相同。

16.更改列名

让我们来看一下刚才我们创建的示例DataFrame:

我更喜欢在选取pandas列的时候使用点(.),但是这对那么列名中含有空格的列不会生效。让我们来修复这个问题。

更改列名最灵活的方式是使用rename()函数。你可以传递一个字典,其中keys为原列名,values为新列名,还可以指定axis:

In [14]:
df = df.rename({ col one : col_one ,  col two : col_two }, axis= columns )

使用这个函数最好的方式是你需要更改任意数量的列名,不管是一列或者全部的列。

如果你需要一次性重新命令所有的列名,更简单的方式就是重写DataFrame的columns属性:

In [15]:
df.columns = [ col_one ,  col_two ]

上述三个函数的结果都一样,可以更改列名使得列名中不含有空格:

最后,如果你需要在列名中添加前缀或者后缀,你可以使用add_prefix()函数:

或者使用add_suffix()函数

17.行序反转

让我们来看一下drinks这个DataFame:

In [20]:
drinks.head()Out[20]:


该数据集描述了每个国家的平均酒消费量。如果你想要将行序反转呢?

最直接的办法是使用loc函数并传递::-1,跟Python中列表反转时使用的切片符号一致:

In [21]:
drinks.loc[::-1].head()Out[21]:


如果你还想重置索引使得它从0开始呢?

你可以使用reset_index()函数,告诉他去掉完全抛弃之前的索引:

In [22]:
drinks.loc[::-1].reset_index(drop=True).head()Out[22]:


你可以看到,行序已经反转,索引也被重置为默认的整数序号。

18.列序反转

跟之前的技巧一样,你也可以使用loc函数将列从左至右反转:

In [23]:
drinks.loc[:, ::-1].head()Out[23]:

逗号之前的冒号表示选择所有行,逗号之后的::-1表示反转所有的列,这就是为什么country这一列现在在最右边。

19.通过数据类型选择列

这里有drinks这个DataFrame的数据类型:

In [24]:
drinks.dtypesOut[24]:
country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object

假设你仅仅需要选取数值型的列,那么你可以使用select_dtypes()函数:

In [25]:
drinks.select_dtypes(include= number ).head()Out[25]:


这包含了int和float型的列。

你也可以使用这个函数来选取数据类型为object的列:

你还可以选取多种数据类型,只需要传递一个列表即可:

你还可以用来排除特定的数据类型:

20.将字符型转换为数值型

让我们来创建另一个示例DataFrame:

这些数字实际上储存为字符型,导致其数据类型为object:

为了对这些列进行数学运算,我们需要将数据类型转换成数值型。你可以对前两列使用astype()函数

但是,如果你对第三列也使用这个函数,将会引起错误,这是因为这一列包含了破折号(用来表示0)但是pandas并不知道如何处理它。

你可以对第三列使用to_numeric()函数,告诉其将任何无效数据转换为NaN:

如果你知道NaN值代表0,那么你可以fillna()函数将他们替换成0:

最后,你可以通过apply()函数一次性对整个DataFrame使用这个函数:

仅需一行代码就完成了我们的目标,因为现在所有的数据类型都转换成float:

21.减小DataFrame空间大小

pandas DataFrame被设计成可以适应内存,所以有些时候你可以减小DataFrame的空间大小,让它在你的系统上更好地运行起来。

这是drinks这个DataFrame所占用的空间大小:

可以看到它使用了30.4KB。

如果你对你的DataFrame有操作方面的问题,或者你不能将它读进内存,那么在读取文件的过程中有两个步骤可以使用来减小DataFrame的空间大小。

第一个步骤是只读取那些你实际上需要用到的列,可以调用usecols参数:

通过仅读取用到的两列,我们将DataFrame的空间大小缩小至13.6KB。

第二步是将所有实际上为类别变量的object列转换成类别变量,可以调用dtypes参数:

通过将continent列读取为category数据类型,我们进一步地把DataFrame的空间大小缩小至2.3KB。

值得注意的是,如果跟行数相比,category数据类型的列数相对较小,那么catefory数据类型可以减小内存占用。

22.按行从多个文件中构建DataFrame

假设你的数据集分化为多个文件,但是你需要将这些数据集读到一个DataFrame中。

举例来说,我有一些关于股票的小数聚集,每个数据集为单天的CSV文件。这是第一天的:

这是第二天的:

这是第三天的:

你可以将每个CSV文件读取成DataFrame,将它们结合起来,然后再删除原来的DataFrame,但是这样会多占用内存且需要许多代码

更好的方式为使用内置的glob模块。你可以给glob()函数传递某种模式,包括未知字符,这样它会返回符合该某事的文件列表。在这种方式下,glob会查找所有以stocks开头的CSV文件:

glob会返回任意排序的文件名,这就是我们为什么要用Python内置的sorted()函数来对列表进行排序。

我们以生成器表达式用read_csv()函数来读取每个文件,并将结果传递给concat()函数,这会将单个的DataFrame按行来组合:

不幸的是,索引值存在重复。为了避免这种情况,我们需要告诉concat()函数来忽略索引,使用默认的整数索引:

23.按列从多个文件中构建DataFrame

上一个技巧对于数据集中每个文件包含行记录很有用。但是如果数据集中的每个文件包含的列信息呢?

这里有一个例子,dinks数据集被划分成两个CSV文件,每个文件包含三列:

同上一个技巧一样,我们以使用glob()函数开始。这一次,我们需要告诉concat()函数按列来组合:

现在我们的DataFrame已经有六列了。

24.11. 从剪贴板中创建DataFrame

假设你将一些数据储存在Excel或者Google Sheet中,你又想要尽快地将他们读取至DataFrame中。
  你需要选择这些数据并复制至剪贴板。然后,你可以使用read_clipboard()函数将他们读取至DataFrame中:

和read_csv()类似,read_clipboard()会自动检测每一列的正确的数据类型:

让我们再复制另外一个数据至剪贴板:

神奇的是,pandas已经将第一列作为索引了:

 需要注意的是,如果你想要你的工作在未来可复制,那么read_clipboard()并不值得推荐。

25.将DataFrame划分为两个随机的子集

假设你想要将一个DataFrame划分为两部分,随机地将75%的行给一个DataFrame,剩下的25%的行给另一个DataFrame。
  举例来说,我们的movie ratings这个DataFrame有979行:

我们可以使用sample()函数来随机选取75%的行,并将它们赋值给"movies_1"DataFrame:

接着我们使用drop()函数来舍弃“moive_1”中出现过的行,将剩下的行赋值给"movies_2"DataFrame:

 你可以发现总的行数是正确的:

你还可以检查每部电影的索引,或者"moives_1":

或者"moives_2":

需要注意的是,这个方法在索引值不唯一的情况下不起作用。
读者注:该方法在机器学习或者深度学习中很有用,因为在模型训练前,我们往往需要将全部数据集按某个比例划分成训练集和测试集。该方法既简单又高效,值得学习和尝试。

26.通过多种类型对DataFrame进行过滤

让我们先看一眼movies这个DataFrame:

 其中有一列是genre(类型):

 比如我们想要对该DataFrame进行过滤,我们只想显示genre为Action或者Drama或者Western的电影,我们可以使用多个条件,以"or"符号分隔:

 但是,你实际上可以使用isin()函数将代码写得更加清晰,将genres列表传递给该函数:

 如果你想要进行相反的过滤,也就是你将吧刚才的三种类型的电影排除掉,那么你可以在过滤条件前加上破浪号:

这种方法能够起作用是因为在Python中,波浪号表示“not”操作。

27.从DataFrame中筛选出数量最多的类别

假设你想要对movies这个DataFrame通过genre进行过滤,但是只需要前3个数量最多的genre。
  我们对genre使用value_counts()函数,并将它保存成counts(type为Series):

&emp; 该Series的nlargest()函数能够轻松地计算出Series中前3个最大值:

事实上我们在该Series中需要的是索引:

 最后,我们将该索引传递给isin()函数,该函数会把它当成genre列表:

这样,在DataFrame中只剩下Drame, Comdey, Action这三种类型的电影了。

28.处理缺失值

让我们来看一看UFO sightings这个DataFrame:

你将会注意到有些值是缺失的。
  为了找出每一列中有多少值是缺失的,你可以使用isna()函数,然后再使用sum():

isna()会产生一个由True和False组成的DataFrame,sum()会将所有的True值转换为1,False转换为0并把它们加起来。
  类似地,你可以通过mean()和isna()函数找出每一列中缺失值的百分比。

如果你想要舍弃那些包含了缺失值的列,你可以使用dropna()函数:

或者你想要舍弃那么缺失值占比超过10%的列,你可以给dropna()设置一个阈值:

len(ufo)返回总行数,我们将它乘以0.9,以告诉pandas保留那些至少90%的值不是缺失值的列

29.将一个字符串划分成多个列

我们先创建另一个新的示例DataFrame:

如果我们需要将“name”这一列划分为三个独立的列,用来表示first, middle, last name呢?我们将会使用str.split()函数,告诉它以空格进行分隔,并将结果扩展成一个DataFrame:

这三列实际上可以通过一行代码保存至原来的DataFrame:

如果我们想要划分一个字符串,但是仅保留其中一个结果列呢?比如说,让我们以", "来划分location这一列:

如果我们只想保留第0列作为city name,我们仅需要选择那一列并保存至DataFrame:

30.将一个由列表组成的Series扩展成DataFrame

让我们创建一个新的示例DataFrame:

这里有两列,第二列包含了Python中的由整数元素组成的列表。
  如果我们想要将第二列扩展成DataFrame,我们可以对那一列使用apply()函数并传递给Series

通过使用concat()函数,我们可以将原来的DataFrame和新的DataFrame组合起来:

31.对多个函数进行聚合

让我们来看一眼从Chipotle restaurant chain得到的orders这个DataFrame:

每个订单(order)都有订单号(order_id),包含一行或者多行。为了找出每个订单的总价格,你可以将那个订单号的价格(item_price)加起来。比如,这里是订单号为1的总价格:

如果你想要计算每个订单的总价格,你可以对order_id使用groupby(),再对每个group的item_price进行求和。

但是,事实上你不可能在聚合时仅使用一个函数,比如sum()。为了对多个函数进行聚合,你可以使用agg()函数,传给它一个函数列表,比如sum()和count():

这将告诉我们没定订单的总价格和数量。

32.将聚合结果与DataFrame进行组合

让我们再看一眼orders这个DataFrame:

如果我们想要增加新的一列,用于展示每个订单的总价格呢?回忆一下,我们通过使用sum()函数得到了总价格:

sum()是一个聚合函数,这表明它返回输入数据的精简版本(reduced version )。
  换句话说,sum()函数的输出:

比这个函数的输入要小:

解决的办法是使用transform()函数,它会执行相同的操作但是返回与输入数据相同的形状:

我们将这个结果存储至DataFrame中新的一列:

你可以看到,每个订单的总价格在每一行中显示出来了。
  这样我们就能方便地甲酸每个订单的价格占该订单的总价格的百分比:

33.选取行和列的切片

让我们看一眼另一个数据集:

这就是著名的Titanic数据集,它保存了Titanic上乘客的信息以及他们是否存活。
  如果你想要对这个数据集做一个数值方面的总结,你可以使用describe()函数:

但是,这个DataFrame结果可能比你想要的信息显示得更多。
  如果你想对这个结果进行过滤,只想显示“五数概括法”(five-number summary)的信息,你可以使用loc函数并传递"min"到"max"的切片:

如果你不是对所有列都感兴趣,你也可以传递列名的切片:

34.对MultiIndexed Series进行重塑

Titanic数据集的Survived列由1和0组成,因此你可以对这一列计算总的存活率:

如果你想对某个类别,比如“Sex”,计算存活率,你可以使用groupby():

如果你想一次性对两个类别变量计算存活率,你可以对这些类别变量使用groupby():

该结果展示了由Sex和Passenger Class联合起来的存活率。它存储为一个MultiIndexed Series,也就是说它对实际数据有多个索引层级。
  这使得该数据难以读取和交互,因此更为方便的是通过unstack()函数将MultiIndexed Series重塑成一个DataFrame:

该DataFrame包含了与MultiIndexed Series一样的数据,不同的是,现在你可以用熟悉的DataFrame的函数对它进行操作。

35.创建数据透视表(pivot table)

如果你经常使用上述的方法创建DataFrames,你也许会发现用pivot_table()函数更为便捷:

想要使用数据透视表,你需要指定索引(index), 列名(columns), 值(values)和聚合函数(aggregation function)。
  数据透视表的另一个好处是,你可以通过设置margins=True轻松地将行和列都加起来:

这个结果既显示了总的存活率,也显示了Sex和Passenger Class的存活率。
  最后,你可以创建交叉表(cross-tabulation),只需要将聚合函数由"mean"改为"count":

这个结果展示了每一对类别变量组合后的记录总数。

36.将连续数据转变成类别数据

让我们来看一下Titanic数据集中的Age那一列:


它现在是连续性数据,但是如果我们想要将它转变成类别数据呢?
  一个解决办法是对年龄范围打标签,比如"adult", “young adult”, “child”。实现该功能的最好方式是使用cut()函数:

这会对每个值打上标签。0到18岁的打上标签"child",18-25岁的打上标签"young adult",25到99岁的打上标签“adult”。
  注意到,该数据类型为类别变量,该类别变量自动排好序了(有序的类别变量)。

37.更改显示选项

让我们再来看一眼Titanic 数据集:

注意到,Age列保留到小数点后1位,Fare列保留到小数点后4位。如果你想要标准化,将显示结果保留到小数点后2位呢?
  你可以使用set_option()函数:

set_option()函数中第一个参数为选项的名称,第二个参数为Python格式化字符。可以看到,Age列和Fare列现在已经保留小数点后两位。注意,这并没有修改基础的数据类型,而只是修改了数据的显示结果。
  你也可以重置任何一个选项为其默认值:

对于其它的选项也是类似的使用方法。

38.25. Style a DataFrame

上一个技巧在你想要修改整个jupyter notebook中的显示会很有用。但是,一个更灵活和有用的方法是定义特定DataFrame中的格式化(style)。
  让我们回到stocks这个DataFrame:

我们可以创建一个格式化字符串的字典,用于对每一列进行格式化。然后将其传递给DataFrame的style.format()函数:

注意到,Date列是month-day-year的格式,Close列包含一个$符号,Volume列包含逗号。
  我们可以通过链式调用函数来应用更多的格式化:

我们现在隐藏了索引,将Close列中的最小值高亮成红色,将Close列中的最大值高亮成浅绿色。
  这里有另一个DataFrame格式化的例子:

Volume列现在有一个渐变的背景色,你可以轻松地识别出大的和小的数值。
  最后一个例子:

现在,Volumn列上有一个条形图,DataFrame上有一个标题。
  请注意,还有许多其他的选项你可以用来格式化DataFrame。

额外技巧:Profile a DataFrame

假设你拿到一个新的数据集,你不想要花费太多力气,只是想快速地探索下。那么你可以使用pandas-profiling这个模块。
  在你的系统上安装好该模块,然后使用ProfileReport()函数,传递的参数为任何一个DataFrame。它会返回一个互动的HTML报告:

  • 第一部分为该数据集的总览,以及该数据集可能出现的问题列表;
  • 第二部分为每一列的总结。你可以点击"toggle details"获取更多信息;
  • 第三部分显示列之间的关联热力图;
  • 第四部分为缺失值情况报告;
  • 第五部分显示该数据及的前几行。
    使用示例如下(只显示第一部分的报告):

    这部分的代码已经放在Github上,网址为:https://github.com/percent4/panas_usage_25_tricks 。

参考链接 :
13个Pandas实用技巧 : https://mp.weixin.qq.com/s/MecrZsTtEbUDZroNYtlKPg
25 个 Pandas 实用技巧 : https://mp.weixin.qq.com/s/lSUDAyYpLwGDN-Dx_BN6Kg

38个Pandas实用技巧相关推荐

  1. pandas 读取sqlserver_13个Pandas实用技巧,请收好

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货. 归纳整理了一些工作中常用到的pandas使用技巧,方便更高效地实现数据分析.文章很短 ...

  2. 13个Pandas实用技巧,有点香 !

    作者:风控猎人 归纳整理了一些工作中常用到的pandas使用技巧,方便更高效地实现数据分析.文章很短,不用收藏就能Get~ 1.计算变量缺失率 df=pd.read_csv('titanic_trai ...

  3. 整理了 25 个 Pandas 实用技巧,拿走不谢!

    来源:机器学习算法与Python学习 本文约2639字,建议阅读6分钟. 本文一共为大家分享25个pandas技巧. 显示已安装的版本 输入下面的命令查询pandas版本: 1In [7]:pd.__ ...

  4. pandas object转float_25个Pandas实用技巧

    本文一共为大家分享25个pandas技巧,此为上篇~显示已安装的版本 输入下面的命令查询pandas版本: In [7]:pd.__version__Out[7]:'0.24.2' 如果你还想知道pa ...

  5. 【Python基础】Pandas笔记---通过比赛整理出的10条Pandas实用技巧

    点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.最近还在参加某比赛,将pandas对数据预处理的方法进行了总结,以下列出的10条是我觉得 ...

  6. 不容错过的Pandas小技巧:万能转格式、轻松合并、压缩数据,让数据分析更高效...

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 作者 | Roman Orac 转自 | 量子位    编译 | 鱼羊 数据分析,如何 ...

  7. JavaScript的一些实用技巧收藏

    JavaScript的一些实用技巧收藏 [Copy to clipboard] CODE: 1. οncοntextmenu="window.event.returnValue=false& ...

  8. 数组反向遍历ios_iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧-Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  9. pandas fillna_6个提升效率的pandas小技巧

    文章来源:towardsdatascience 作者:B.Chen 翻译\编辑:Python大数据分析 pandas是python中常用的数据分析库,出现频率非常高,而且pandas功能之多让人咋舌, ...

最新文章

  1. 通过C#实现集合类纵览.NET Collections及相关技术
  2. Redis:内存满了的解决方案
  3. boost::program_options模块一个配置ini文件被解析程序选项库,它包括许多不同的值类型的测试程序
  4. ajax 微信code获取_ajax 实现微信网页授权登录的方法
  5. ListBox实现拖拽排序功能
  6. CentOS查询端口占用和清除端口占用的程序
  7. oracle 11g 数据库cmd修改用户名密码及创建用户
  8. mysql加锁6_MySQL优化(6):Mysql锁机制
  9. 弱密码校验_TomCat8 弱密码上传getshell
  10. html中模板引擎—前端与后端
  11. java的人patch方法_java – Spring MVC PATCH方法:部分更新
  12. 华为服务器SNMP协议怎么修改,华为迈普交换机、瑞斯康达SNMP协议配置方法
  13. Android更换字体
  14. 多源异构网络安全关联分析
  15. 测试知识 - 关于电脑
  16. 《简化iOS APP上架流程,App Uploader助你搞定!》
  17. 月饼电商“内卷”?看数据如何驱动营销,全链路精细化运营抢占C位!
  18. 福大计算机专业排名,2019福州大学专业排名
  19. html5+Css3 做一个婚纱网页
  20. 城市无线应急广播系统方案

热门文章

  1. 让我们了解下什么是智能客服(问答)
  2. linux cron 服务,Linux定时任务Crontab详解(推荐)
  3. R语言数据集合并、数据增减、不等长合并
  4. popupWindow的使用心得
  5. Java Annotaion认识
  6. 基于Jupyter Notebook---卷积神经网络的图像分类(keras对猫狗图像数据集进行分类)
  7. python中startout是什么意思_Python socket.timeout方法代碼示例
  8. go语言学习笔记(5)数组与切片
  9. Asp.net MVC2使用第三方控件
  10. Android应用程序键盘(Keyboard)消息处理机制分析(11)