逐列选择值的平均值
Posted
技术标签:
【中文标题】逐列选择值的平均值【英文标题】:Select mean of the values column wise 【发布时间】: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。
【参考方案1】:
如果您要依靠col3
(但仍归入City
),请尝试以下操作:
df.groupby('City')['col3'].value_counts(normalize=True)
这将为您提供所需的相对部分(总和为 1),而不是实际计数。您也可以对其他列进行类似的重复。
【讨论】:
以上是关于逐列选择值的平均值的主要内容,如果未能解决你的问题,请参考以下文章