机器学习之Pandas篇(二)

15736132-136cd86bd7dc5c74


前言


上一篇(戳我查看)Pandas的语句介绍到DataFrame的滑片,这篇就继续介绍Pandas中的一些基本语句。


数据清洗

df.columns = ['a','b','c']  # 重命名列名称                                                                         

pd.isnull() # 检查是否为null值,为null返回True,不为null返回False

pd.notnull() # 检查是否为null值,为null返回False,不为null返回True

df.dropna(axis=0) # 删掉所有含有null值的行,axis默认为0,此处可以不指定

df.dropna(axis=1) # 删掉所有含有null值的列

df.dropna(axis=1,thresh=n) # 删掉所有含有n个以上null值的列

df.fillna(x) # 用x的值填充所有null值

s.fillna(s.mean()) # 用该列的平均值替换掉null值,其中mean()可以换成任意函数,

                          # 如std(),min(),max()等

s.astype(float) # 将数据类型转换为float,可将float替换为int,object等

s.replace(1,'one') # 用‘one’来替换掉所有的1

s.replace([1,3],['one','three']) # 用‘one’来替换掉1,用‘three’替换掉3,

                                              # 注意两个list内部的顺序要一一对应

df.rename(columns=lambda x: x + 1) # 批量修改列名称

df.rename(columns={'old_name': 'new_name'}) # 制定特定列并修改其列名称

df.set_index('column_one') # 替换index的值

df.rename(index=lambda x: x + 1) # 批量替换index


过滤、排序、分组

df[df[col] > 0.5] # 选取某一列中所有值大于0.5的行                                                           

df[(df[col] > 0.5) & (df[col] < 0.7)] # 选取某一列中所有值大于0.5且小于0.7的行

df.sort_values(col1) # 根据col1(列1)的值对DataFrame进行正序排列

df.sort_values(col2,ascending=False) # 根据col2(列2)的值对DataFrame进行倒序排列

df.sort_values([col1,col2],ascending=[True,False]) # 先根据col1进行正序排列,

                                                  # 再对相同值根据col2进行倒序排列,

                                                  # 注意:顺序不同,结果千差万别

df.groupby(col) # 利用col中的类别对DataFrame的数据进行分类分组

df.groupby([col1,col2]) # 先利用col1中的类别对DataFrame的数据进行分类分组,

                        # 而后在各个组内根据col2中的类别再进行分类分组,

                        # 注意:顺序不同,结果千差万别

df.groupby(col1)[col2].mean() # 先根据col1进行分类分组,然后选取分类后的col2,

                              # 而后对col2中的值求平均值,即求出每一组中col2的平均值

                              # mean()可以由任何函数代替,如min(),max()等

df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean)

                        # 创建一个pivot table,以col1为分类分组的依据,

                        # 对col2和col3求组内平均值

df.groupby(col1).agg(np.mean) # 先根据col1进行分类分组,然后小组内对其所有列求均值

df.apply(np.mean) # 对每一列执行np.mean函数,即求均值,np.mean可替换

df.apply(np.max, axis=1) # 对每一行执行np.max函数,即求最大值,np.max可替换


DataFrame的组合

df1.append(df2) # 在df1后添加df2(每行必须不同)

pd.concat([df1, df2],axis=1) # 在df1后添加df2(每行必须不同)

df1.join(df2,on=col1,how='inner') # SQL风格代码,将df1和df2进行JOIN,

                                  # 所JOIN的列为col1,JOIN的方式为‘inner’

                                  # 其余可选JOIN方式为‘left’,‘right’,‘outer’


数值计算

# 以下所有同样可应用于Series                                                                                         

df.describe() # 返回所有值为数字的列的总结,均值、标准差等

df.mean() # 返回所有列的均值

df.corr() # 返回df的相关性矩阵

df.count() # 返回每一列中不为null的值的数量

df.max() # 返回每一列中的最大值

df.min() # 返回每一列中的最小值

df.median() # 返回每一列的中位数

df.std() # 返回每一列的标准差


结语

两篇Pandas的介绍基本涵盖了所有Pandas的基本语句,语句并不算太多,但基本已经足够日常使用。当然,如果需要对DataFrame做更为复杂的变化的话,一些我没有提到的特殊语句可能更为方便,但是这些特殊的功能往往可以通过2-3个基础语句的组合来实现。如果对Pandas进阶有兴趣的话,请查阅官方文档。




想成为一名合格的数据科学家/AI工程师吗?关注“机器学习学社”获取每天一份的新鲜咨询,为你开拓属于你自己的AI之路

15736132-09ba72ff1cffa46c
扫码关注机器学习学社,更多资讯早知道,更多学习干货等你来拿

猜你喜欢

转载自blog.csdn.net/weixin_33739523/article/details/87604513
今日推荐