如何从Python3中的唯一值获取平均值、中值和模式

2024-05-23 14:09:14 发布

您现在位置:Python中文网/ 问答频道 /正文

你能帮我怎么做标题里说的吗? 我最近才开始学习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(全部)、FV、RH。问题是,我如何获得SalePrice的平均值、中位数和模式,它在另一列中有RH、RF和RL标签?不管我怎么努力,我都不能把他们列为名单。我环顾四周,还没有发现这样的病例

我们将不胜感激。 多谢各位


Tags: 数据rm标题df模式rlhouse平均值
3条回答

您可以使用DataFrame.agg应用多个函数并在字典中返回输出

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}}

对我来说,这看起来像是^{}的任务。让我们来看看玩具数据:

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提供的dataset,我想得到一个a值的列表,并将其放入变量中:

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

在获得A后,我可以这样做以获得平均值和中值:

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

相关问题 更多 >