从CSV计算大型数据集

时间:2016-08-27 21:22:35

标签: python python-2.7 python-3.x csv

假设我有一个包含大型数据集的csv文件。此csv文件是从DB创建的,即它本质上是一个表。什么是迭代这个csv文件并计算平均值或总和或使用Python进行一般计算的最佳方法?

例如:csv文件具有用户ID以及与之关联的金额和日期。现在我需要计算每个用户每月的支出。请注意,userid不是主键,用户可能已购买

如何使用pandas或其他任何方式加载数据?

2 个答案:

答案 0 :(得分:1)

您绝对可以尝试使用pandas,根据我的问题描述,您的csv文件的格式如下:

user_id amount date
1241    1000   01/Aug/2016
....    ...    ....

这应该是一个足够好的解决方案,首先计算每个user_id的每月总支出

df = pd.read_csv('your_csv_filename_path.csv')

df.loc[:,'date'] = pd.to_datetime(df.loc[:,'date'])
df.loc[:,'month'] = pd.PeriodIndex(df['date'],freq='M')
monthly_spendings = df.groupby(['month','user_id'])['amount'].sum()

答案 1 :(得分:0)

csv模块可以轻松读取CSV文件。例如,如果CSV文件的第一行包含列名,并且其中一个列名是“user_id”,则以下行将显示每行的user_id字段:

import csv
for rec in csv.DictReader(open("somefile.csv", "rb")):
  print("User ID = {}".format(rec["user_id"]))