Python 使用pandas查找大型csv文件中的平均值

Python 使用pandas查找大型csv文件中的平均值,python,csv,pandas,mean,Python,Csv,Pandas,Mean,我有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["di

我有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()
首先我知道“打印”不是个好主意。我想我需要给一个变量赋值。其次,我需要的是整个数据帧的平均值,而不仅仅是每个数据块的平均值

但我不知道怎么做。我想得到每个区块的平均值,然后对所有区块进行简单的平均。只要chunksize对于所有块都是相等的,就应该给出数据帧的平均值


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

根据文件的命名方式,我可以解决一些问题。我假定您的文件名为“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))

我假设数据集太大,无法作为数据帧加载到内存中。如果是这样的话,考虑在每个CSV文件上使用一个生成器,也有类似的情况:


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

跟踪距离和行数的总和;然后分开。同样,如果速度是一个问题,考虑一下这样的事情:()你想只用Python来做这项工作,或者你可以使用GEU/Linux工具,比如SED和AWK?抱歉,不熟悉SED和AWK。如果可能的话,我更喜欢Python。请查看pd.read\u csv()的'usecols'和'square'参数。加载不使用的列没有意义,对吗?