- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 400.000 行和 15 列的 csv 文件。我必须为每一行进行多次过滤操作。所以,我想到使用 pandas 和 groupby 来尝试提高性能。使用 groupby 很快,但 get_group 似乎很慢。
import pandas as pd
filepath = 'data.csv'
df = pd.read_csv(filepath, sep=',', na_values=['', '-'], parse_dates=True)
groups = df.groupby(['Year', 'Team'])
team_matches = groups.get_group(('2014', 'Barcelona'))
groupby 非常快。但是随着用于分组的列数的增加,get_group 变得非常慢。对于上面的示例,需要 0.6s 才能获取组。
澄清一下,对于我的 csv 中的每一行,我都必须根据前面的行创建一些统计数据。我的 csv 包含足球数据,其中包含主队、客队、全场得分、每种结果的赔率等列。
例如,查找主队的平均进球数。
goal_avg = np.average(df[(df['HOMETEAM'] == hometeam) & (df['LEAGUE'] == league)]['HOME_GOALS'])
最佳答案
与其使用 get_group()
,不如使用过滤(如 df[(df.Year == '2014') & (df.Team == 'Barcelona') ]
)。这非常快并且执行相同的操作。这是两者的详细比较。
In [1]: df = DataFrame(dict(A = np.random.randint(0,1000,size=N),B=np.random.randint(0,1000,size=N),C=np.random.randn(N)))
In [2]: %time df.groupby(['A','B'])
CPU times: user 0 ns, sys: 804 µs, total: 804 µs
Wall time: 802 µs
In [3]: g = df.groupby(['A','B'])
In [4]: %time g.get_group((100,100))
CPU times: user 1.47 s, sys: 93.8 ms, total: 1.56 s
Wall time: 1.57 s
A B C
325601 100 100 1.547365
837535 100 100 -0.058478
In [5]: %time df[(df.A == 100) & (df.B == 100)]
CPU times: user 12.6 ms, sys: 317 µs, total: 12.9 ms
Wall time: 21.3 ms
A B C
325601 100 100 1.547365
837535 100 100 -0.058478
这是超过 70 倍的速度提升。此外,过滤是按列值而不是分组访问行的正确方法!
关于python - 为什么 get_group 在 Pandas 中这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308763/
我有一个像这样的数据框: name . profession Alex . Data Analyst Markus . Sales Manager Carlos . Credit Analys
我有一个包含 400.000 行和 15 列的 csv 文件。我必须为每一行进行多次过滤操作。所以,我想到使用 pandas 和 groupby 来尝试提高性能。使用 groupby 很快,但 get
嘿, 我使用 SharePoint 的 JavaScript API。我需要知道用户是否属于某个组。 使用 SahrePoint 2013,我已成功收集当前用户的所有组 this.currentUse
我正在将每个国家/地区的人口统计数据分组为一个 DataFrame。我发现问题是我想获取每个组的大小,.size 或 np.size() 返回组第一列的总和,而不是行数。 我正在使用 Python 3
我有一个 DataFrame df,我已经对其进行了“分组”。我正在寻找一个类似于 get_group(name) 的函数,除了它不是在名称不存在时抛出 KeyError,而是返回一个空的 DataF
我是一名优秀的程序员,十分优秀!