像Excel一样使用python进行数据分析-(3)
文|蓝鲸
Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理,我们从1787页的pandas官网文档中总结出最常用的36个函数,通过这些函数介绍如何通过python完成数据生成和导入,数据清洗,预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作。
7.数据汇总
第七部分是对数据进行分类汇总,Excel中使用分类汇总和数据透视可以按特定维度对数据进行汇总,python中使用的主要函数是groupby和pivot_table。下面分别介绍这两个函数的使用方法。
分类汇总
Excel的数据目录下提供了“分类汇总”功能,可以按指定的字段和汇总方式对数据表进行汇总。Python中通过Groupby函数完成相应的操作,并可以支持多级分类汇总。
Groupby是进行分类汇总的函数,使用方法很简单,制定要分组的列名称就可以,也可以同时制定多个列名称,groupby按列名称出现的顺序进行分组。同时要制定分组后的汇总方式,常见的是计数和求和两种。
#对所有列进行计数汇总 df_inner .groupby ( 'city' ) .count ()
可以在groupby中设置列名称来对特定的列进行汇总。下面的代码中按城市对id字段进行汇总计数。
#对特定的 ID 列进行计数汇总 df_inner .groupby ( 'city' ) ['id'] .count () city beijing 2 guangzhou 1 shanghai 2 shenzhen 1 Name : id , dtype : int64
在前面的基础上增加第二个列名称,分布对city和size两个字段进行计数汇总。
#对两个字段进行汇总计数 df_inner .groupby ([ 'city' , 'size' ]) ['id'] .count () city size beijing A 1 F 1 guangzhou A 1 shanghai A 1 B 1 shenzhen C 1 Name : id , dtype : int64
除了计数和求和外,还可以对汇总后的数据同时按多个维度进行计算,下面的代码中按城市对price字段进行汇总,并分别计算price的数量,总金额和平均金额。
#对 city 字段进行汇总并计算 price 的合计和均值。 df_inner .groupby ( 'city' ) ['price'] .agg ([len,np.sum, np.mean])
数据透视
Excel中的插入目录下提供“数据透视表”功能对数据表按特定维度进行汇总。Python中也提供了数据透视表功能。通过pivot_table函数实现同样的效果。
数据透视表也是常用的一种数据分类汇总方式,并且功能上比groupby要强大一些。下面的代码中设定city为行字段,size为列字段,price为值字段。分别计算price的数量和金额并且按行与列进行汇总。
#数据透视表 pd.pivot_table(df_inner, index =[ "city" ], values =[ "price" ],columns=[ "size" ],aggfunc=[ len ,np.sum],fill_value=0,margins=True)
8.数据统计
第九部分为数据统计,这里主要介绍数据采样,标准差,协方差和相关系数的使用方法。
数据采样
Excel的数据分析功能中提供了数据抽样的功能,如下图所示。Python通过sample函数完成数据采样。
Sample是进行数据采样的函数,设置n的数量就可以了。函数自动返回参与的结果。
#简单的数据采样
df_inner.sample(n=3)
Weights参数是采样的权重,通过设置不同的权重可以更改采样的结果,权重高的数据将更有希望被选中。这里手动设置6条数据的权重值。将前面4个设置为0,后面两个分别设置为0.5。
#手动设置采样权重
weights = [0, 0, 0, 0, 0.5, 0.5]
df_inner.sample(n=2, weights=weights)
从采样结果中可以看出,后两条权重高的数据被选中。
Sample函数中还有一个参数replace,用来设置采样后是否放回。
#采样后不放回 df_inner.sample(n= 6 , replace= False )
#采样后放回 df_inner.sample(n= 6 , replace= True )
描述统计
Excel中的数据分析中提供了描述统计的功能。Python中可以通过Describe对数据进行描述统计。
Describe函数是进行描述统计的函数,自动生成数据的数量,均值,标准差等数据。下面的代码中对数据表进行描述统计,并使用round函数设置结果显示的小数位。并对结果数据进行转置。
#数据表描述性统计 df_inner .describe () .round (2) .T
标准差
Python中的Std函数用来接算特定数据列的标准差。
#标准差 df_inner ['price'] .std () 1523 .3516556155596
协方差
Excel中的数据分析功能中提供协方差的计算,python中通过cov函数计算两个字段或数据表中各字段间的协方差。
Cov函数用来计算两个字段间的协方差,可以只对特定字段进行计算,也可以对整个数据表中各个列之间进行计算。
#两个字段间的协方差 df_inner ['price'] .cov ( df_inner ['m-point'] ) 17263 .200000000001
#数据表中所有字段间的协方差
df_inner.cov()
相关分析
Excel的数据分析功能中提供了相关系数的计算功能,python中则通过corr函数完成相关分析的操作,并返回相关系数。
Corr函数用来计算数据间的相关系数,可以单独对特定数据进行计算,也可以对整个数据表中各个列进行计算。相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关。
#相关性分析 df_inner ['price'] .corr ( df_inner ['m-point'] ) 0 .77466555617085264
#数据表相关性分析
df_inner.corr()
9.数据输出
第九部分是数据输出,处理和分析完的数据可以输出为xlsx格式和csv格式。
写入excel
#输出到 excel 格式 df_inner .to_excel ( 'excel_to_python.xlsx' , sheet_name= 'bluewhale_cc' )
写入csv
#输出到 CSV 格式 df_inner .to_csv ( 'excel_to_python.csv' )
在数据处理的过程中,大部分基础工作是重复和机械的,对于这部分基础工作,我们可以使用自定义函数进行自动化。以下简单介绍对数据表信息获取自动化处理。
#创建数据表 df = pd.DataFrame({ "id" : [ 1001 , 1002 , 1003 , 1004 , 1005 , 1006 ], "date" :pd .date_range( '20130102' , periods= 6 ), "city" : [ 'Beijing ' , 'SH' , ' guangzhou ' , 'Shenzhen' , 'shanghai' , 'BEIJING ' ], "age" : [ 23 , 44 , 54 , 32 , 34 , 32 ], "category" : [ '100-A' , '100-B' , '110-A' , '110-C' , '210-A' , '130-F' ], "price" : [ 1200 ,np.nan, 2133 , 5433 ,np.nan, 4432 ]}, columns =[ 'id' , 'date' , 'city' , 'category' , 'age' , 'price' ])
#创建自定义函数 def table_info (x) : shape=x.shape types=x.dtypes colums=x.columns print( "数据维度(行,列):\n" ,shape) print( "数据格式:\n" ,types) print( "列名称:\n" ,colums)
#调用自定义函数获取df数据表信息并输出结果 table_info(df) 数据维度(行,列): ( 6 , 6 ) 数据格式: id int64 date datetime64[ns] city object category object age int64 price float64 dtype: object 列名称: Index ([ 'i d', 'dat e', 'cit y', 'categor y', 'ag e', 'pric e'], dtype= 'objec t')
像Excel一样使用python进行数据分析-(1)
像Excel一样使用python进行数据分析-(2)
End.
转载请注明来自36大数据(36dsj.com): 36大数据 » 像Excel一样使用python进行数据分析-(3)