【问题标题】:Computing a large data set from CSV [closed]从 CSV 计算大型数据集 [关闭]
【发布时间】:2016-08-27 21:22:35
【问题描述】:
假设我有一个包含大型数据集的 csv 文件。这个 csv 文件是从 DB 创建的,即它本质上是一个表。迭代此 csv 文件并计算平均值或总和或使用 Python 进行一般计算的最佳方法是什么?
例如:csv 文件有一个用户 ID 以及与之关联的金额和日期。现在我需要计算每个用户每月的支出。请注意,userid 不是主键,该用户可能已经购买了
应该如何加载数据,使用 pandas 或其他方式?
【问题讨论】:
标签:
python
python-2.7
python-3.x
csv
【解决方案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()
【解决方案2】:
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"]))