《python数据分析与挖掘实战》(第2版)代码清单3.3的一点问题

《python数据分析与挖掘实战》(第2版)代码清单3.3的一点问题

绘制频率分布直方图

代码清单3.3的任务是根据“捞起生鱼片”的销售情况绘制频率分布直方图,其基本步骤如下:

  1. 求极差
  2. 分组
  3. 决定分点
  4. 绘制频率分布直方表
  5. 绘制频率分布直方图

根据1,2,3步骤可确定组距为500,组数为8,原书提供的程序如下:

# 代码3-3 捞起生鱼片的季度销售情况
import pandas as pd
import numpy as np
catering_sale = '../data/catering_fish_congee.xls'  # 餐饮数据
data = pd.read_excel(catering_sale,names=['date','sale'])  # 读取数据,指定“日期”列为索引

bins = [0,500,1000,1500,2000,2500,3000,3500,4000]
labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)',
       '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] 

data['sale分层'] = pd.cut(data.sale, bins, labels=labels)
aggResult = data.groupby(by=['sale分层'])['sale'].agg({'sale': np.size})

pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100

import matplotlib.pyplot as plt
plt.figure(figsize=(10,6))  # 设置图框大小尺寸
pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10)  # 绘制频率直方图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.title('季度销售额频率分布直方图',fontsize=20)
plt.show()

问题分析

对该程序直接运行之后,则会出现报错

SpecificationError: nested renamer is not supported

stack overflow
上给出的原因是:在新的pandas版本中,建议使用Aggregation来替代已弃用的“ dict-of-dicts”方法,以命名特定于列的聚合的输出。
pandas版本迭代说明

程序修改

事实上问题语句不必写的如此复杂,问题语句的任务是将在一个组段的数量统计出来,可以将语句第12行修改为

aggResult = data.groupby('sale分层').agg({'sale':'count'})

结果输出频率分布直方图
在这里插入图片描述

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值