如何从 Python 3 中的唯一值获取均值、中值和众数

How to get mean, median, mode from unique values in Python 3

你能帮我如何按照标题中的说明去做吗? 最近才开始学习python

我有一个 SalePrice 和 MSZoning 的数据集。

    MSZoning    SalePrice
0   RL  208500
1   RL  181500
2   RL  223500
3   RL  140000
4   RL  250000
... ... ...
1455    RL  175000
1456    RL  210000
1457    RL  266500
1458    RL  142125
1459    RL  147500

house = df[['MSZoning', 'SalePrice']]

房子

MSZoning具有RF、RL、RM、C(all)、FV、RH等多重唯一性。问题是,如何获取另一列中具有 RH、RF 和 RL 标签的 SalePrice 的均值、中值和众数?无论我如何尝试,我都无法将它们作为列表召唤。我看了一圈,还没有发现这样的情况。

不胜感激。 谢谢

对我来说,这看起来像是 groupby 的任务。让我们在玩具数据上做吧:

import pandas as pd
df = pd.DataFrame({'zone':['A','A','B','B','B','C','C','C'],'price':[1,2,3,4,5,6,7,20]})
print(df.groupby('zone').median())

输出:

      price
zone
A       1.5
B       4.0
C       7.0

如果将最后一行替换为:

print(df.groupby('zone').mean())

输出将是:

      price
zone
A       1.5
B       4.0
C      11.0

但是没有.mode(),但是无论如何在尝试获取模式之前你需要决定如果有不止一个最流行的值应该发生什么,例如 [2,4,2,4] 的模式是什么?

我想我终于明白怎么做了。

df['column I want to use its values'].loc['column that I use as pivot for filter' == 'category used']

例如使用Daweo的数据集,我想得到一个A值的列表并将它放在一个变量中:

A = df['price'].loc['zone' == 'A']

得到A后,我可以这样做来得到均值和中位数:

A.mean() #getting mean
np.median(A) #getting median

您可以使用 DataFrame.agg 应用多个函数和 return 字典中的输出,

output = df.groupby('zone')['price'].agg(['mean', 'median']).to_dict('index')

{'A': {'mean': 1.5, 'median': 1.5},
 'B': {'mean': 4.0, 'median': 4.0},
 'C': {'mean': 11.0, 'median': 7.0}}