python - 如何将 tidyverse 从 R 翻译成 Python 中的 pandas?
问题描述
我正在用 R 和 Python 进行数据分析,以比较它们的差异。目前我正在努力翻译
data %>%
mutate(pct_leader = ballotsLeader/validBallots) %>%
group_by(community) %>%
mutate(mean_pct_leader = mean(pct_leader),
sd_pct_leader = sd(pct_leader),
up_pct_leader = mean_pct_leader+2*sd_pct_leader) %>%
filter(pct_leader > up_pct_leader) %>%
top_n(5, pct_leader)
进入 Python。
我尝试了以下python代码
grouped = data.assign(pct_leader = lambda x: x['ballotsLeader']/x['validBallots']).groupby('community').assign(mean_pct_leader = lambda x: mean(x['pct_leader']),
sd_pct_leader = lambda x: stdev(x['pct_leader']),
up_pct_leader = lambda x: x['mean_pct_leader']+2*x['sd_pct_leader']).query('pct_leader > up_pct_leader').pct_leader.nlargest(5)
但得到一个AttributeError: 'DataFrameGroupBy' object has no attribute 'assign'
错误。
我意识到这是因为 DataFrameGroupBy 对象没有 assign 方法。
如何保留R代码的顺序但将其翻译成python?
编辑:这是我正在使用的数据
| community | province | municipality | precinct | registeredVoters | emptyBallots | invalidBallots | validBallots | ballotsLeader |
|-----------|-----------|--------------|----------|------------------|--------------|----------------|--------------|---------------|
| GALICIA | Coruña, A | Ames | 001 B | 270 | 3 | 7 | 206 | 129 |
| GALICIA | Coruña, A | Ames | 004 A | 356 | 2 | 7 | 257 | 136 |
| GALICIA | Coruña, A | Ames | 002 C | 296 | 1 | 2 | 214 | 149 |
| GALICIA | Coruña, A | Ames | 010 U | 646 | 15 | 10 | 507 | 189 |
| GALICIA | Coruña, A | Ames | 012 B | 695 | 6 | 8 | 479 | 247 |
解决方案
如果没有看到一些数据,很难做到这一点,但这应该有效:
(data.assign(pct_leader=data['ballotsLeader'] / data['validBallots'])
.groupby('community').agg(
mean_pct_leader=('pct_leader', 'mean')
sd_pct_leader=('pct_leader', 'std'),
up_pct_leader=('pct_leader', lambda x: (x['pct_leader'].mean()+2) * x['pct_leader'].std())
)
.query('pct_leader > up_pct_leader')
.nlargest(5, 'pct_leader')
)
推荐阅读
- android - AOSP 6 单音量控制
- c++ - 如何从函数返回 grpc::ClientContext?
- ruby-on-rails - Rails 路由优先级偏爱第一个
- elasticsearch - Logstash nginx 过滤器不适用于一半的行
- php - angularjs 从 mysql 加载数据,然后由 angularjs 显示
- objective-c - 如何在objective-c的nsmutablearray中存储长值
- operating-system - 在 Autosar Davinci 配置器中添加可运行
- ruby-on-rails - Rails - 数据库逻辑,公司范围数据
- google-app-engine - 通过 Google App Engine 标准环境查询 Amazon Web Services RDS
- sql - 确定正在使用哪个外键 ORACLE SQL