Python数据分析我爱编程

19、pandas的分组groupby()函数

2017-12-28  本文已影响0人  让数据告诉你

在数据处理的过程中,经常也要进行简单的运算,如果能够配合函数进行使用就会得到更好的结果。

源数据

1、加+, 减-,乘* ,除/ ,乘方**,取余数 %

根据Series和DataFrame的结构特征,进行运算时,结构中的每个数据都会计算。

同一列也可以相加 除法运算

2、还有一些常用的运算函数

count()                    计数,非空值的数量

min(), max()            计算最小值和最大值

argmin,argmax        计算能够获取到最小值和最大值的索引位置(整数)

idxmin,idxmax        计算能够获取到最小值和最大值的索引值

sum()                      求和

mean ()                    值的平均数, a.mean() 默认对每一列的数据求平均值;若加上参数  a.mean(1)则对每一行求平均值

media()                    值的算术中位数(50%分位数)

quantile(0.25)          计算样本的百分位数

var()                          样本值的方差

std ()                        样本值的标准差

cumsum()                样本值的累计和



对每一列的数值进行计算(只计算数值列需要指定参数numeric_only=True):

对数值列进行求和

当df.sum()不指定参数时会将每一列都进行求和,非数值的求和是将字符串进行拼接。

也可以指定每行进行求和(指定参数axis=1进行每行求和,每行求和默认只对数值型数据进行求和):

指定axis=1进行每行求和

还有如果DataFrame有多层索引,可以添加参数 level='索引层的名称', df.sum(level='索引层名称')就能根据索引层次的数据进行分组运算。


3、这些简单汇总运算可以跟groupby()、merge()、 concat()、pivot_table()等等连在一起使用。

groupby()就是将数据根据指定的列进行分组,分组后不能返回有用的结果,需要与其它运算合起来才能出结果

分组求和

由上图可知如果仅仅是进行分组是不显示出数据的,只要在分组之后加上一个运算函数就会得出想要的结果。

计算每个com_name的数量

在前面进行分组的时候,默认是将分组的依据那一列作为索引的,我们可以添加参数as_index=False来使用常用的索引:

使用as_index=False改变默认索引  

使用参数axis=1进行横向分组(横向分组的时候不能使用参数as_index=False):

使用参数axis=1进行横向分组

在使用merge()、concat()将汇总运算结果合并之前,请确认你的运算结果是个DataFrame结构。

数据为 DataFrame结构

使用concat()函数:

concat()函数拼接

因为df2是具有两列的数值,其它列为空值,所以拼接之后其它列显示为空值。

使用merge()函数:

df2列名重命名 计算每个相同com_name的平均值 使用merge进行合并

也可以把默认的merge索引取消(as_index=False),然后使用left_on和right_on进行合并:

使用left_on和right_on进行合并
上一篇下一篇

猜你喜欢

热点阅读