python|jupyter|pandas|4.4使用分组聚合进行组内计算
2020-01-14 20:38
796 查看
4.4使用分组聚合进行组内计算
使用groupby拆分数据DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,**kwargs)
import pandas as pd import numpy as np from sqlalchemy import create_engine engine=create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/testdb?charset=utf8') detail=pd.read_table('',con=engine) #对菜品订单表依据订单编号分组 detailgroup=detail[['order_id','counts','amounts']].groupby(by='order_id') print('分组结果',detailgroup) #groupby求均值、标准差、中位数 print('订单详情表分组后前5组每组均值为:',detailgroup.mean().head()) print('订单详情表分组后前5组每组标准差为:',detailgroup.std().head()) print('订单详情表分组后前5组每组大小为:',detailgroup.size().head())使用agg聚合函数
dataframe.agg(func,axis=0,*args,**kwargs) dataframe.aggregate(func,axis=0,*args,**kwargs)
#使用agg求出当前数据对应的统计量 print('订单详情表的菜品销量和售价的和与均值为',detail[['counts','amounts']].agg([np.sum,np.mean]) #使用agg分别求字段的不同统计量 print('订单详情表的菜品销量总和和售价的均值为',detail.agg({'counts':np.sum,'amounts':np.mean})) #使用agg方法求不同字段的不同数目统计量 print('订单详情表的菜品销量总和和售价的总和与均值为',detail.agg({'counts':np.sum,'amounts':[np.sum,np.mean]})) #在agg方法中使用自定义函数 #自定义函数求两倍的和 def doublesum1(data): s=data.sum()*2 return s print('订单详情表的菜品销量总和的两倍为',detail.agg({'counts':doublesum1},axis=0)) #agg方法中使用的自定义函数含numpy中的函数 #自定义求两倍的和 def doublesum2(data): s=np.sum(data)*2 return s print(detail.agg({'counts':doublesum2},axis=0).head()) print(detail[[''counts,'amounts']].agg(doublesum2) #使用agg做简单的聚合 print('订单详情表分组后前3组每组均值:',detailroup.agg(np.mean).head(3)) print('订单详情表分组后前3组每组标准差:',detailroup.agg(np.std).head(3)) print('订单详情表分组后前3组菜品总数和售价均值:',detailroup.agg({'counts:np.sum','amounts:np.mean'}).head(3))使用apply方法聚合数据
dataframe.apply(func,axis=0,broadcast=False,raw=False,reduce=None,args=(),**kwds)
#基本用法 print('订单详情表的菜品销量与售价的均值',detail[['counts','amounts']].apply(np.mean)) #使用apply进行聚合 print('前三组的均值',detailgroup.apply(np.mean).head(3)) print('前三组的标准差',detailgroup.apply(np.std).head(3))使用transform方法进行聚合
print('订单详情表菜品销量和售价的两倍',detail[['counts','amounts']].transform(lambda x:x*2).head(4)) #组内离差标准化 print('订单详情表分组后实现组内离差标准化后前5行为,',detailgroup.transform(lambda x:(x.mean()-x.min())/(x.max()-x.min())).head())
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 总结四——使用pandas进行数据清洗,规整、聚合与分组
- 利用python进行数据分析-pandas.concat/subplots/gropuby/pivot_table,多文件整合、聚合、分组,子图
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- 利用Python进行数据分析--数据聚合与分组运算1
- python中Groupby使用(四)-通过函数进行分组
- 在arcgis使用python脚本进行字段计算时是如何解决中文问题的
- elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg
- 如何使用python进行递归计算
- 使用Python,pandas,seaborn和scikit-Learn进行探索性数据分析
- 利用python进行数据分析之数据聚合和分组运算
- 在arcgis使用python脚本进行字段计算时是如何解决中文问题的
- Python使用scipy进行多项式计算与符号计算
- python使用gensim进行文本相似度计算
- 【量化小讲堂-Python&Pandas系列03】使用python计算移动平均线
- 使用python计算方差——pandas.series.std()
- Python Pandas分组聚合的实现方法
- python 使用pandas计算累积求和的方法
- NumPy v1.17.2 发布,使用Python进行科学计算的基础包
- 转:Python 文本挖掘:使用gensim进行文本相似度计算