【问题描述】
对DataFrame中指定列数据进行频数分析。
【示例10-8】
本例使用的Excel文件的完整路径为“D:/Samples/ch10/05 频数分析/消费情况.xlsx”。该文件打开后如图10-5所示,是不同地区的消费情况。要求用“燃料”数据进行频数分析。
图10-5 不同地区的消费情况
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
prompt
你是pandas专家,文件路径为:D:/Samples/ch10/05 频数分析/消费情况.xlsx。该Excel文件的第一个工作表中A-D列为给定数据。用pandas导入Excel文件的数据,引擎为"openpyxl"。用“燃料”变量数据进行排序、分8箱和频数分析。输出区间编号、每个区间的起始值和终止值以及每个区间的频数。添加代码注释。
2. ChatGPT提示词模板说明
指定频数分析的数据、分箱数和输出哪些内容。
3. 代码
- 根据提示词得到类似下面的代码:
code.python
# 导入必要的库
import pandas as pd
# 读取Excel文件中的数据,使用openpyxl引擎
data = pd.read_excel('D:/Samples/ch10/05 频数分析/消费情况.xlsx', engine='openpyxl')
# 选取“燃料”变量进行排序
fuel_sorted = data['燃料'].sort_values()
# 使用qcut函数将数据分成8个箱子
fuel_cut = pd.qcut(fuel_sorted, 8)
# 对每个箱子中的值进行频数计数
frequency = fuel_cut.value_counts(sort=False)
# 打印每个区间的编号、起点和终点值以及对应的频数
for i in range(len(frequency)):
print("区间{}:{} - {},频数为{}".format(i+1, fuel_cut.unique()[i].left, fuel_cut.unique()[i].right, frequency.iloc[i]))
4. 使用代码
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出频数分析结果。
code.python
>>> == RESTART: D:/Samples/1.py =
区间1:5.699 - 8.46,频数为4
区间2:8.46 - 8.98,频数为3
区间3:8.98 - 10.94,频数为3
区间4:10.94 - 12.2,频数为3
区间5:12.2 - 12.72,频数为3
区间6:12.72 - 13.72,频数为3
区间7:13.72 - 16.96,频数为3
区间8:16.96 - 18.37,频数为3
可见,数据排序后从小到大等间隔分为8个区间,统计落在每个区间的数据个数,即频数。
【知识点扩展】
频数分析首先将数据从小到大进行排序,然后将整个区间等间隔分为指定个数的小区间,并统计落在每个区间的数据个数,即频数。如果用频数指定条形的高度,可以绘制直方图。