Pandas大数据统计的最佳方法

2024-10-03 15:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个19000000行的熊猫数据帧。标题是艺术家和星期。我想再加一列,计算艺术家在一周内出现的次数。现在我使用以下代码:

#Function to determine the number
def playsxweek(week,art):
    return len(data[(data.week == week) & (data.artist == art)])
#Then I map
data['playsxweek'] = map(playsxweek,data['week'],data['artist'])

现在代码需要一个永恒的时间来处理所有1900万条记录。。。有更好的方法吗?你知道吗


Tags: theto数据代码标题mapdataartist
2条回答

我认为groupby会解决问题:

data.groupby(["week", "artist"]).count()

这并不是因为它的处理量是19000000次,而是3万亿次。你知道吗

如果有3个艺术家和52周,那就是3 x 52 x 19000000或2964000000。3万亿次搜索,每一位新艺术家将再增加988000000次。每一位艺术家都有近万亿次的搜索!你知道吗

相反,遍历数据一次,并在遍历时构建一个计数(本例假设每行都可以作为字典访问):

playsPerWeek=dict()
for row in data:
    week, artist = row['week'],row['artist']
    playsPerWeek[(week, artist)] = playsPerWeek.get((week, artist),0) + 1

在这里,我们实例化一个计数,并遍历每一行一次。然后我们使用.get()查看(week, artist)元组是否作为键存在(如果它不使用默认值0),添加一个元组并将其分配到字典中。你知道吗

作为参考,由于元组是不可变的,所以它们可以用作字典键,而列表不能。你知道吗

相关问题 更多 >