【发布时间】:2021-07-08 14:24:22
【问题描述】:
我有一个数据集,其中有 5 列。考虑以下数据库:-
| City | Vehicle | col3 | col4 | col5 |
|---|---|---|---|---|
| Jaipur | Car | ... | ... | ... |
| Jaipur | Car | ... | ... | ... |
| Jaipur | Bike | ... | ... | ... |
| Pune | Car | ... | ... | ... |
| Mumbai | Bike | ... | ... | ... |
| ... | ... | ... | ... | ... |
大约有 10000 条记录,其中城市有 5 个可能值,即斋浦尔、浦那、孟买、钦奈、印多尔,而 Vehicle 可以有 3 个可能值 car、bike、Activa。
我在数据框上使用了 pandas 的分组功能
df.groupby(['City', 'Vehicle'])['col3'].count()
它给了我如下信息:-
| City | Vehicle | col3 |
|---|---|---|
| Jaipur | Car | 50 |
| Jaipur | Bike | 40 |
| Jaipur | Activa | 60 |
| Pune | Car | 80 |
| Pune | Bike | 90 |
| Pune | Activa | 30 |
但我想要的答案如下:-
| City | Vehicle | col3 |
|---|---|---|
| Jaipur | Car | 0.33 |
| Jaipur | Bike | 0.27 |
| Jaipur | Activa | 0.4 |
| Pune | Car | 0.40 |
| Pune | Bike | 0.45 |
| Pune | Activa | 0.15 |
我无法理解如何在 pandas 中编写代码。
【问题讨论】:
-
使用
value_counts(normalize=True)代替count()? -
预知:
df.groupby(['City'])['Vehicle'].value_counts(normalize=True). -
或者
df.groupby(['City'])['col3'].value_counts(normalize=True)如果想依靠 col3 (但仍分组在 City 下)。正如问题标题提到的按列。因此,可能要计算每列的各个值。 OP需要澄清这一点。 -
@SeaBean 谢谢它的工作,它给了我想要的答案。
-
太好了!我已将建议发布为下面的答案。如果您认为该建议对您有帮助,请记得accept the answer and upvote。
标签: pandas data-science data-analysis