python - 大熊猫的分组计数,平均值,Q1,Q2,Q3和标准差
问题描述
我有一个如下所示的数据框
ID Sector Year Usage Rent
1 SE1 2017 R 100
2 SE1 2017 C 120
3 SE1 2017 R 150
4 SE1 2017 R 110
5 SE1 2017 C 200
6 SE1 2018 R 100
7 SE1 2018 R 120
8 SE1 2018 R 100
9 SE1 2018 C 100
10 SE1 2018 C 100
1 SE2 2017 R 100
2 SE2 2017 C 120
3 SE2 2017 R 150
4 SE2 2017 R 110
5 SE2 2017 C 200
6 SE2 2018 R 100
7 SE2 2018 R 120
8 SE2 2018 R 100
9 SE2 2018 C 100
10 SE2 2018 C 100
11 SE2 2018 C 100
从上面的数据框我想准备下面的数据框
预期产出
Sector Year Usage N_of_contract Mean_Rent Q1 Q2 Q3 Std
SE1 2017 R 3
SE1 2017 C 2
SE1 2018 R
SE1 2018 C
SE2 2017 R
SE2 2017 C
SE2 2018 R
SE2 2018 C
其中 N_of_contract = 这种组合发生的次数,只是计数
Mean_Rent = 这种组合的平均租金
Q1 = Q1 租金等等
Std = 租金的标准差。
注意:我没有写一些列的值,因为我无法计算那一列。
解决方案
GroupBy.describe
与 一起使用DataFrame.drop
:
new_df = (df.groupby(['Sector','Year','Usage'])['Rent']
.describe()
.drop(columns = ['min','max'])
.reset_index()
)
print(new_df)
Sector Year Usage count mean std 25% 50% 75%
0 SE1 2017 C 2.0 160.000000 56.568542 140.0 160.0 180.0
1 SE1 2017 R 3.0 120.000000 26.457513 105.0 110.0 130.0
2 SE1 2018 C 2.0 100.000000 0.000000 100.0 100.0 100.0
3 SE1 2018 R 3.0 106.666667 11.547005 100.0 100.0 110.0
4 SE2 2017 C 2.0 160.000000 56.568542 140.0 160.0 180.0
5 SE2 2017 R 3.0 120.000000 26.457513 105.0 110.0 130.0
6 SE2 2018 C 3.0 100.000000 0.000000 100.0 100.0 100.0
7 SE2 2018 R 3.0 106.666667 11.547005 100.0 100.0 110.0
推荐阅读
- ruby - 如何在 Factorybot 中为具有nested_attributes 的模型创建工厂
- javascript - 如何让自定义代理字段出现在开发人员工具中
- vb.net - VB.NET通过属性文本反序列化XML子节点
- vuejs2 - quasar框架中的Q-Table,状态对象数据表不显示
- html - 为什么我的代码中没有指定样式元素
- javascript - Having some doubts on how to name my Vue.js components and some more
- sql - HANA SQL IsDate() 等效或采用无效数据的 to_date 函数?
- windows-ce - Mifare Standard 1K - 6D00 for external authentication APDU
- python - asyncio tcp 套接字:当套接字关闭时如何取消 asyncio.sleep()?
- firebase - Firebase 存储和无效的 HTTP 方法/URL 对