使用pandas

时间:2016-12-06 01:46:22

标签: python csv pandas mean

我有60个巨大的csv文件(每个大约2.5 GB)。每个封面数据一个月,并且距离为#39;我感兴趣的专栏。每行有大约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()

首先我知道' print'不是个好主意。我需要将均值分配给变量。其次,我需要的是整个数据帧的平均值,而不仅仅是每个块。

但我不知道该怎么做。我想要获得每个块的平均值并采用所有块的简单平均值。只要chunksize对所有块都相等,那就应该给出数据帧的平均值。

第三,我需要为所有60个csv文件执行此操作。我在上面的代码中循环是否正确?我的文件名为1.csv到60.csv。

2 个答案:

答案 0 :(得分:3)

根据您的文件命名方式,我会修复一些事情。我假设你的文件名为“1.csv”,“2.csv”。还要记住范围是独占的,因此你需要在范围内转到61。

distance_array = []
for x in range(1,61):
   df = pd.read((str(x) + ".csv", error_bad_lines=False, chunksize=100000)
   for index, row in df.iterrows():
      distance_array.append(x['distance'])
print(sum(distance_array)/len(distance_array))

答案 1 :(得分:0)

我假设数据集太大而无法作为pandas数据帧加载到内存中。如果是这种情况,请考虑在每个csv文件上使用生成器,类似的东西:Where to use yield in Python best?

由于您所追求的总体结果是平均值,您可以累计每行的总和并跟踪增量步的行数。