数据挖掘技术与应用:使用agg方法聚合数据

数据挖掘技术与应用:使用agg方法聚合数据,第1张

使用agg方法聚合数据

准备数据

准备数据meal_order_info.csv,并将meal_order_info.csv数据放到Linux本地/course/DataAnalyze/data目录。

使用agg方法聚合数据

  1. 以T餐饮企业的菜品订单信息表为例,可以使用agg方法一次求出当前数据中所有菜品销量和售价的总和与均值,如代码 43所示。

代码 43 使用agg求出所有字段对应的统计量

In[5]:

print('订单详情表的菜品销量与售价的和与均值为:\n',

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

Out[5]:

订单详情表的菜品销量与售价的和与均值为:

            counts        amounts

sum   3088.000000  125992.000000

mean     1.111191      45.337172

  1. 代码 43中使用求和与求均值的函数求出“counts”和“amounts”两个字段的和与均值。使用agg分别求字段的不同统计量,如代码 44所示。

代码 44 使用agg分别求字段的不同统计量

In[6]:

print('订单详情表的菜品销量总和与售价的均值为:\n',

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

Out[6]:

订单详情表的菜品销量总和与售价的均值为:

counts     3088.000000

amounts     45.337172

dtype: float64

  1. 在某些时候还希望求出某个字段的多个统计量,某些字段则只需要求一个统计量,此时只需要将字典对应key的value变为列表,列表元素为多个目标的统计量即可,如代码 45所示。

代码 45 使用agg方法求不同字段不同数目统计量

In[7]:

print('菜品订单详情表的菜品销量总和与售价的总和与均值为:\n',

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

Out[7]:

菜品订单详情表的菜品销量总和与售价的总和与均值为:

       counts        amounts

mean     NaN      45.337172

sum   3088.0  125992.000000

  1. 在agg方法可传入读者自定义的函数,如代码 46所示。

代码 46 在agg方法中使用自定义函数

In[8]:

##自定义函数求两倍的和

def DoubleSum(data):

    s = data.sum()*2

    return s

print('菜品订单详情表的菜品销量两倍总和为:','\n',

detail.agg({'counts':DoubleSum},axis = 0))

Out[8]:

菜品订单详情表的菜品销量两倍总和为:

counts    6176.0

dtype: float64

  1. 使用自定义函数需要注意的是NumPy库中的函数能够在agg中直接使用,如代码 47所示。

代码 47 agg方法中使用自定义函数含NumPy中的函数

In[9]:

def DoubleSum1(data):

    s = data.sum()*2

    return s

print('菜品订单详情表的菜品销量两倍总和为:','\n',

detail.agg({'counts':DoubleSum1},axis = 0))

Out[9]:

菜品订单详情表的菜品销量两倍总和为: 

 counts    6176.0

dtype: float64

In[10]:

print('订单详情表的菜品销量与售价的和的两倍为:\n',

      detail[['counts','amounts']].agg(DoubleSum1))

Out[10]:

订单详情表的菜品销量与售价的和的两倍为:

counts       6176.0

amounts    251984.0

dtype: float64

  1. 使用agg方法也能够实现对每一个字段每一组使用相同的函数,如代码 48所示。

代码 48 使用apply,agg方法做简单的聚合

In[11]:

print('订单详情表分组后前3组每组的均值为:\n', detailGroup.agg(np.mean).head(3))

Out[11]:

订单详情表分组后前 3 组每组的均值为:

             counts    amounts

order_id                     

137       1.500000  32.333333

165       1.166667  52.944444

166       1.400000  48.200000

In[12]:

print('订单详情表分组后前3组每组的标准差为:\n', detailGroup.agg(np.std).head(3))

Out[12]:

订单详情表分组后前 3 组每组的标准差为:

             counts    amounts

order_id                     

137       1.224745  35.200379

165       0.383482  52.193613

166       0.547723  41.829415

  1. 使用agg方法对分组后的菜品订单表求取每组菜品总数和售价均值,如代码 49所示。

代码 49 使用agg方法对分组数据使用不同聚合函数

In[13]:

print('订单详情分组前3组每组菜品总数和售价均值为:\n',

detailGroup.agg({'counts':np.sum,'amounts':np.mean}).head(3))

Out[13]:

订单详情分组前 3 组每组菜品总数和售价均值为:

           counts    amounts

order_id                   

137            9  32.333333

165           21  52.944444

166            7  48.200000

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/922822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存