熊猫:数事

发布于 2021-01-29 15:09:28

在下面,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的速度稍微快一些,而且记不起来了!

关注者
0
被浏览
60
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我会喜欢Vishal,但不要使用size()来使用sum()来获取分配给每组“ start_station_id”的行数。所以:

    df = male_trips.groupby('start_station_id').size()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看