pandas - 对 DataFrame 进行排序、存储和应用功能
问题描述
我有以下示例数据框:
pd.DataFrame({'Name': ['A', 'B', 'C', 'D', 'E'],
'Score': [2, 6, np.nan, 3, 4],
'Value 1': [10, 30, 20, 5, 15],
'Value 2': [400, 250, 100, 300, 150]})
Name Score Value 1 Value 2
0 A 2.0 10 400
1 B 6.0 30 250
2 C NaN 20 100
3 D 3.0 5 300
4 E 4.0 15 150
我想根据“分数”的排序将这个数据框分为:[前四分位数、第二四分位数、第三四分位数、下四分位数、无评分],然后计算,比如说落在相应存储桶中的值的平均值来自“价值 1”和“价值 2”。因此,来自 Score 的 NaN 应该属于 No Rating 桶,来自“Value 1”的 30 和来自“Value 2”的 250 应该属于 Top Quartile,因为 6 的得分最高(30 和 250 是单个数字的平均值是它本身)。
解决方案
您可以按如下方式应用 qcut;
df['bucket'] = pd.qcut(df['Score'], 4, ['q1','q2','q3','q4'])
df.groupby('bucket')[['Value 1','Value 2']].mean()
通常,它将排除 NaN,因此我将存储桶列更改为 str ,或者您可以应用 fillna 将值指定为 NaN。
df['bucket'] = df['bucket'].astype(str)
df.groupby('bucket')[['Value 1','Value 2']].mean()
推荐阅读
- debian - 使用 pybuild 在非标准目录中为 Debian 打包 Python 库
- mysql - 我无法将输入保存到数据库 Vuejs 和 Laravel
- r - 删除R中数据中相同的重复行
- c# - 如何通过按钮单击将数据导出到 linq c# 中的 .csv 文件
- c++ - 如何解决对我自己的类的构造函数和析构函数的未定义引用的问题?
- object - 使用 kotlin 在对象中获取视图
- linux - 将文本附加到特定文件夹下的所有文件
- c++ - 使用 c/c++ 加载 xaml 文件并过滤标签和值
- filter - 使用切片器 Power BI 突出显示
- android - 使用 JobScheduler 启动服务而不加载 UI