逐列选择值的平均值

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),而不是实际计数。您也可以对其他列进行类似的重复。

【讨论】:

以上是关于逐列选择值的平均值的主要内容,如果未能解决你的问题,请参考以下文章

将一个表中的值与另一表中具有相同属性的值的平均值计算进行比较

如何从此表中选择并添加平均值然后排序[重复]

最大相关 - 最小冗余(mRMR)特征选择

使用来自选择的值的Mysql更新[重复]

在R中的几列中获取月度均值的有效方法

在同一查询中返回分组值的平均值以及该值的前 n% 的平均值?