python - 使用groupby函数后如何对表格进行平均排序?
问题描述
我有一个使用 groupby 函数创建的表,我想将其从最高均值排序到最低均值。但是,我不断收到错误消息:“'DataFrameGroupBy' 对象没有属性 'sort_values'”或有时“布尔对象不可调用”。
import pandas as pd
import numpy as np
df = pd.read_csv("Listings.csv")
df2 = df[df['city'].str.contains("Cape Town")]
df2_by_neighbourhood = df2.groupby('neighbourhood')
df2_by_neighbourhood.describe()
df2_by_neighbourhood.sort_values(['mean'], ascending=False)
当我去掉最后一行时,表格很完美,但平均值不是从最高到最低。它给了我这个:
邻里 | 数数 | 意思是 | 性病 | 分钟 | 25% | 50% | 75% | 最高价格 |
---|---|---|---|---|---|---|---|---|
病房 1 | 207 | 1181 | 1422 | 210.0 | 524.0 | 750.0 | 1145 | 10000 |
(等等,总共93行)
使用 groupby 之前的数据如下所示:
邻里 | 城市 | 价格 |
---|---|---|
115病房 | 开普敦 | 700 |
[19086 行 x 3 列]
在使用 groupby 函数之前,我无法对表格进行排序,因为 groupby 是我获取平均值的方式。
解决方案
你可以试试:
df2_by_neighbourhood['mean'].shift(0).sort_values(ascending=False)
将mean
列作为一个系列,按降序排列。
如果要按column 值的降序显示整个数据框df2_by_neighbourhood
(而不仅仅是列) ,可以使用:mean
mean
df2_by_neighbourhood.loc[df2_by_neighbourhood['mean'].shift(0).argsort().sort_values(ascending=False)]
编辑
从您新发布的示例数据中可以看出,您可以按如下方式获取mean
of 列:price
df2_by_neighbourhood['price'].mean().sort_values(ascending=False)
获取您的数据样本并添加一些行,您可以看到如下结果:
data = {'neighbourhood': ['Ward 115', 'Ward 115', 'Ward 226', 'Ward 226'],
'city': ['Cape Town', 'Cape Town', 'Cape Town', 'Cape Town'],
'price': [700, 900, 1000, 1200]}
df2 = pd.DataFrame(data)
print(df2)
neighbourhood city price
0 Ward 115 Cape Town 700
1 Ward 115 Cape Town 900
2 Ward 226 Cape Town 1000
3 Ward 226 Cape Town 1200
运行代码:
df2_by_neighbourhood = df2.groupby('neighbourhood')
df2_by_neighbourhood['price'].mean().sort_values(ascending=False)
输出:
neighbourhood
Ward 226 1100
Ward 115 800
Name: price, dtype: int64
这里,2组的平均值price
按降序排序。
推荐阅读
- python - 使用 Bootstrap 渲染 SelectFields 的 WTF 字段列表
- sql-server - 两列之一上的唯一外键
- arrays - Swift:遍历一个数组并逐项显示屏幕上的信息(屏幕更新)
- javascript - 如何使用自定义接口扩展 firebase.User 或将自定义值传递给 angularfire2 中的 firebase 集合?
- oracle - 在 oracle db 中创建了更多会话
- vue.js - 如何根据路由名称渲染特定的组件属性
- sql - 如何通过程序根据其他列的值更新列值?
- google-apps-script - 如何通过 Google Script 在 Google Apps 上检索 Google Apps USER SUSPEND 日期?
- php - “调用未定义函数 App\Http\Controllers\Auth\veiw()”
- asp.net-mvc - 无法从以下位置获取配置:“http://www.example.com:8080/openam/.well-known/openid-configuration”