Python实现CSV数据列累积平均计算及可视化的方法
累积平均计算代码补全方案
完整可运行代码
import matplotlib.pyplot as plt import pandas as pd import numpy as np # 若使用numpy实现方案才需要引入 df = pd.read_csv('somecsvfile.csv') # 补全x:生成1到numbers列长度的整数序列 x = list(range(1, len(df['numbers'])+1)) y = df['numbers'] # 补全z:pandas原生实现累积平均,无需额外依赖 z = y.expanding().mean() # 可选numpy实现方案,运行效率更高适合超大数据量,效果和上方实现完全一致 # z = np.cumsum(y) / np.arange(1, len(y)+1) plt.plot(x, z) plt.xlabel('前n项') plt.ylabel('累积平均值') plt.show()
实现逻辑说明
- x生成逻辑:直接通过
range生成从1开始、长度和numbers列行数完全一致的整数序列,符合需求的[1,2,3,...n]格式 - z计算逻辑:
- pandas的
expanding()方法会创建一个从序列开头扩展到当前位置的滑动窗口,调用mean()即可直接计算每个位置的前n项平均值,完全匹配你给出的计算规则,代入你提供的示例输入[1,4,7,4,19]可直接得到正确输出[1, 2.5, 4, 4, 7] - numpy实现方案先通过
cumsum计算累积和,再逐位除以对应的项数即可得到累积平均,大文件处理性能更优
- pandas的
- 注意:原代码框架中
df[numbers]需修改为df['numbers'],列名作为字符串引用需要加引号,否则会触发变量未定义报错
内容的提问来源于stack exchange,提问作者Wocky Bocky
相关产品推荐
相关产品推荐

