我是一名新的Python用户,并学习如何操纵/汇总数据。
我有一些格式的示例数据:
User Date Price
A 20130101 50
A 20130102 20
A 20130103 30
B 20130201 40
B 20130202 20
等等。
我正在寻找围绕每个用户的一些聚合,并希望得到平均支出的输出,如:
User Mean_Spend
A 33
B 30
我可以逐行阅读并获取一个用户的聚合但我正在努力为不同的用户读取数据。
有关如何为不同用户阅读文件的任何建议都非常受欢迎。
由于
答案 0 :(得分:0)
这些集合的Counter
对象(documentation)基于Dictionary
,这意味着这种快速求和。天真地,您可以使用一个来累积支出金额,另一个来计算交易数量,然后除以。
from collections import Counter
accumulator = Counter()
transactions = Counter()
# assuming your input is exactly as shown...
with open('my_foo.txt', 'r') as f:
f.readline() # skip header line
for line in f.readlines():
parts = line.split()
transactions[parts[0]] += 1
accumulator[parts[0]]+=int(parts[2])
result = dict((k, float(accumulator[k])/transactions[k]) for k in transactions)
答案 1 :(得分:0)
pandas
包执行此操作(以及更多内容)。使用一个小数据集dft
作为示例:
dft = pandas.DataFrame([[1,2,'a'],[1,2,'b'],[3,1,'b'],[4,1,'a']])
dfg = dft.groupby(dft[2]) # Group by the third column
dfg.mean()
输出:
0 1
a 2.5 1.5
b 2.0 1.5
分别是第0列和第1列的平均值。
我不知道您的数据是什么格式;您可以通过读取文本文件或转换python数组等来制作pandas数据框。
您可以按多个列进行分组,或者查看每个用户的花费时间趋势,或者...此处和docs中有大量的大熊猫食谱示例。