【发布时间】:2017-04-20 13:37:56
【问题描述】:
我有 60 个巨大的 csv 文件(每个大约 2.5 GB)。每个涵盖一个月的数据,并有一个我感兴趣的“距离”列。每个都有大约 1400 万行。
我需要找出每个月的平均距离。
这是我目前所拥有的:
import pandas as pd
for x in range(1, 60):
df=pd.read_csv(r'x.csv', error_bad_lines=False, chunksize=100000)
for chunk in df:
print df["distance"].mean()
首先我知道“打印”不是一个好主意。我需要将平均值分配给我猜的变量。其次,我需要的是整个数据帧的平均值,而不仅仅是每个块。
但我不知道该怎么做。我正在考虑获取每个块的平均值并取所有块的简单平均值。只要所有块的块大小相等,那应该给我数据帧的平均值。
第三,我需要对所有 60 个 csv 文件执行此操作。我在上面的代码中循环是否正确?我的文件被命名为 1.csv 到 60.csv 。
【问题讨论】:
-
跟踪距离和行数的总和;然后分。此外,如果速度是一个问题,请考虑查看以下内容:(stackoverflow.com/questions/3122442/…)
-
您只想在 Python 中完成这项工作,或者您可以使用 sed 和 awk 等 Gnu/Linux 工具?
-
抱歉,不熟悉 sed 和 awk。如果可能,更喜欢 Python。
-
查看 pd.read_csv() 的“usecols”和“squeeze”参数。加载你不使用的列是没有意义的,对吧?