python - 如何获得特定类别的平均值并使用对应的中位数明智地估算缺失值类别
问题描述
您好,我有以下数据:
import pandas as pd
import numpy as np
将数据加载到数据框中
X = pd.read_csv('demo.csv')
感兴趣的两列是 Category 和 Totals 列:
Category Totals estimates
A 2777 0.43
B 1003 0.26
D NA 0.65
D 2638 0.17
B NA 0.74
C 2196 0.13
D 2630 0.91
A NA 0.39
C 2472 0.51
B 1090 0.12
C NA 0.64
我可以找到该类别的中位数A
:
df.groupby('Category').Totals.median().loc['A']
我需要帮助来实现以下目标:
- 我需要一次找到所有类别的中位数,而不是一个一个。
Totals
然后我需要按相应的类别中位数估算列中的缺失值。
帮助将不胜感激。
解决方案
df['Totals'] = df.Totals.fillna(df.groupby('Category').Totals.transform('median'))
或者另一种方式可能是:
df['Totals'] = (df.set_index('Category').Totals
.fillna(df.groupby('Category').Totals.median()).values)
print(df)
Category Totals estimates
0 A 2777.0 0.43
1 B 1003.0 0.26
2 D 2634.0 0.65
3 D 2638.0 0.17
4 B 1046.5 0.74
5 C 2196.0 0.13
6 D 2630.0 0.91
7 A 2777.0 0.39
8 C 2472.0 0.51
9 B 1090.0 0.12
10 C 2334.0 0.64
推荐阅读
- php - 如何在 php 中使用大 txt 文件而不受内存限制或句柄错误(错误 500)
- ios - 快速自动更新?
- swift - 编辑 Core Data 类实例字符串时,SwiftUI List 中的 TextField 出现光标定位错误?
- list - 如何使用 Powershell 列出自昨天以来磁盘上的名称、上次写入日期和文件大小?
- css - 通过 CSS 调整 SVG 大小的动画
- makefile - 在构建 .so 后删除 .cc 不受控制
- sip - sipp不断重发消息
- javascript - 您如何改进以下方法?
- javascript - 在选择其他单选按钮时隐藏 DIV
- java - 当用户输入特定关键字时,如何让我的程序退出循环?