pandas模块四之高级操作

分组与聚合

分组

pf.groupby(by=索引名称)

求以某一列分组后某一列的平均值
means = detail.groupby(by=索引名称)[行名称].mean()

agg方法 同时进行多个统计分析

detail[["counts","amounts"]].agg([np.sum,np.mean,np.min])

对于不同的数据求不同的统计分析

detail.agg({"counts":np.sum,"amounts":np.mean})

对某一列求多个统计分析

detail.agg({"amounts":[np.mean,np.sum],"counts":[np.max,np.min]})

apply方法 自定义自己的统计方法

detail['amounts'].apply(lambda x:x+1)

transform方法

detail.groupby(by='amounts').transform(np.sum)

透视表  

比分组聚合更强大
按列
res = pd.pivot_table(data,values=["counts","amounts"],index="order_id") # 默认求平均值
按行
res = pd.pivot_table(data,values=["counts","amounts"],columns="dishes_name") # 默认求平均值

参数: fill_value 填充空值   aggfunc 求值函数 margins最后增加all  dropna  是否删掉全为空的列
pd.pivot_table(data,values=["counts","amounts"],columns="dishes_name",index="order_id",aggfunc='max',fill_value=0,
                    margins=True)   # 默认求平均值

交叉表

pd.crosstab(index=detail['order_id'],values=detail['amounts'],aggfunc=max,columns=detail['dishes_name'])
参数 : index 行  columns 列  values 值 aggfunc 数据分析函数
可以将values去掉 统计的是分组交叉频率
res = pd.crosstab(index=detail['order_id'],columns=detail['dishes_name'])

去重

单列数据去重
data = detail["counts"].drop_duplicates() # 对原数据没有修改 只是展示
多列数据去重 inplace 对原数据改变
data = detail.drop_duplicates(subset=["counts","amounts"],inplace=True)

 

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页