0

我是一个新的 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

我可以逐行读取并获取一个用户的聚合,但我正在努力读取不同用户的数据。

任何关于如何为不同用户读取文件的建议都非常感谢。

谢谢

4

2 回答 2

0

这些集合有一个基于此的Counter对象(文档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)
于 2014-05-21T23:27:01.007 回答
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 数据框。

您可以按多个列进行分组,或者查看每个用户支出的时间趋势,或者......这里和他们的文档中有很多关于 pandas 的食谱示例。

于 2014-05-21T23:48:06.197 回答