获取使用chunksize时的平均值



我从这里得到了这段代码,它帮助我在python上使用chunksize时获得平均值。

chunks = pd.read_csv("f.csv",chunksize=3)
pieces = [x.groupby('id')['val'].agg(['sum','count']) for x in chunks]
agg = pd.concat(pieces).groupby(level=0).sum()
print agg['sum']/agg['count']

结果idA 7.272727B 6.000000C 7.333333

但对于我的新场景,我不需要按ID分组,而是获得总体平均值(修改一点结构,不使用一行表示循环,而是使用"缩进表示循环"(

我试过这个,但不起作用。

path = r"f.CSV"
for df in pd.read_csv(path, chunksize=3):
pieces = [df.groupby(level=0).agg(['sum','count'])]
agg = pd.concat(pieces).groupby(level=0).sum()
print (agg['sum']/agg['count'])

如果最终只需要处理平均值,那么您可以将运行总数和计数存储在变量中,而不是使用数据帧:

import pandas as pd
sum_vals, counter = 0, 0
for df in pd.read_csv("foo.csv", chunksize=3):
sum_vals += df["val"].sum()
counter += df["val"].count()
print (sum_vals/counter)