20190205
在Python中pandas库用于数据处理,我们从1787页的pandas官网文档中总结出最常用的36个函数,通过这些函数介绍如何通过Python完成数据生成和导入、数据清洗、预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作
主要内容包括对空值、重复值、大小写问题、数据格式的处理。这里不包含对数据间的逻辑验证。
对清洗完的数据进行整理以便后期的统计和分析工作。主要包括数据表的合并,排序,数值分列,数
据分组及标记等工作。
#如果price列的值>3000,group列显示high,否则显示low
df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
#对复合多个条件的数据进行分组标记, sign列显示为1
df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price']>= 4000), 'sign']=1
#对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列
名称为category和size
pd.DataFrame((x.split('-') for x in df_inner['category']),index=d
f_inner.index,columns=['category','size'])
使用与,或,非三个条件配合大于,小于和等于对数据进行筛选,并进行计数和求和。与Excel中的筛选功能和countifs和sumifs功能相似。
按条件筛选(与、或、非)
#使用“与”条件进行筛选
df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beiji
ng'), ['id','city','age','category','gender']]
#使用“或”条件筛选
df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beiji
ng'), ['id','city','age','category','gender']].sort(['age'])
#对筛选后的数据按price字段进行求和
df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beiji
ng'), ['id','city','age','category','gender','price']].sort(['age
']).price.sum()
#使用“非”条件进行筛选
df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age',
'category','gender']].sort(['id'])
#对筛选后的数据按city列进行计数
df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age',
'category','gender']].sort(['id']).city.count()
#使用query函数进行筛选
df_inner.query('city == ["beijing", "shanghai"]')
#对筛选后的结果按price进行求和
df_inner.query('city == ["beijing", "shanghai"]').price.sum()
Excel中使用分类汇总和数据透视可以按特定维度对数据进行汇总,Python中使用的主要函
数是groupby和pivot_table
#对所有列进行计数汇总
df_inner.groupby('city').count()
#对特定的ID列进行计数汇总
df_inner.groupby('city')['id'].count()
#对两个字段进行汇总计数
df_inner.groupby(['city','size'])['id'].count()
#对city字段进行汇总并计算price的合计和均值。
df_inner.groupby('city')['price'].agg([len,np.sum, np.mean])
#数据透视表
pd.pivot_table(df_inner,index=["city"],values=["price"],columns=[
"size"],aggfunc=[len,np.sum],fill_value=0,margins=True)
#简单的数据采样
df_inner.sample(n=3)
#手动设置采样权重
weights = [0, 0, 0, 0, 0.5, 0.5]
df_inner.sample(n=2, weights=weights)
#采样后不放回
df_inner.sample(n=6, replace=False)
#数据表描述性统计
df_inner.describe().round(2).T
#标准差
df_inner['price'].std()
1523.3516556155596
#两个字段间的协方差
df_inner['price'].cov(df_inner['m-point'])
17263.200000000001
#数据表中所有字段间的协方差
df_inner.cov()
#相关性分析
df_inner['price'].corr(df_inner['m-point'])
0.77466555617085264
#数据表相关性分析
df_inner.corr()
#输出到Excel格式
df_inner.to_Excel('Excel_to_Python.xlsx', sheet_name='bluewhale_c
c')
#输出到CSV格式
df_inner.to_csv('Excel_to_Python.csv')
to_csv 参数的一些细节
dt.to_csv(‘C:/Users/think/Desktop/Result.csv‘,sep=‘?‘)#使用?分隔需要保存的数据,如果不写,默认是,
dt.to_csv(‘C:/Users/think/Desktop/Result1.csv‘,na_rep=‘NA‘) #确实值保存为NA,如果不写,默认是空
dt.to_csv(‘C:/Users/think/Desktop/Result1.csv‘,float_format=‘%.2f‘) #保留两位小数
dt.to_csv(‘C:/Users/think/Desktop/Result.csv‘,columns=[‘name‘]) #保存索引列和name列
dt.to_csv(‘C:/Users/think/Desktop/Result.csv‘,header=0) #不保存列名
dt.to_csv(‘C:/Users/think/Desktop/Result1.csv‘,index=0) #不保存行索引
990万次骑行:纽约自行车共享系统分析
原文:https://www.cnblogs.com/bruspawn/p/10447241.html