19、pandas的分组groupby()函数
在数据处理的过程中,经常也要进行简单的运算,如果能够配合函数进行使用就会得到更好的结果。
源数据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进行合并