熊猫:数事
在下面,male_trips是一个大熊猫数据帧,station是一个小熊猫数据帧。对于每个车站ID,我想知道有多少次男性旅行。以下工作可以完成,但是需要很长时间:
mc = [ sum( male_trips['start_station_id'] == id ) for id in stations['id'] ]
我应该怎么做呢?
更新!因此,有两种主要方法:groupby()
其次是size()
和更简单的方法.value_counts()
。我很快完成了timeit
,这种groupby
方法大获全胜!这是代码:
from timeit import Timer
setup = "import pandas; male_trips=pandas.load('maletrips')"
a = "male_trips.start_station_id.value_counts()"
b = "male_trips.groupby('start_station_id').size()"
Timer(a,setup).timeit(100)
Timer(b,setup).timeit(100)
结果如下:
In [4]: Timer(a,setup).timeit(100) # <- this is value_counts
Out[4]: 9.709594964981079
In [5]: Timer(b,setup).timeit(100) # <- this is groupby / size
Out[5]: 1.5574288368225098
请注意,以这种速度,用于探索数据 键入 value_counts的速度稍微快一些,而且记不起来了!