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

使用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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值