如何基于中位数对数据集非零数据分类(NA视为0)
解决方法:用Pandas处理数据分类需求
没问题,我来帮你搞定这个数据分类的需求!咱们用Python的pandas库就能快速实现,步骤清晰易懂:
1. 准备原始数据并导入依赖库
首先导入pandas和numpy,然后把你的原始数据集转换成DataFrame格式:
import pandas as pd import numpy as np # 构建原始数据集 raw_data = { 'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9], 'Quantity': [0.93, 0.17, np.nan, 0.44, np.nan, 0.86, 0.07, 0.23, 1.00] } df = pd.DataFrame(raw_data)
2. 生成Quantity_median分类列
按照你的要求:
- NA值直接视为0,对应
Quantity_median列显示0 - 非NA的数值和给定中位数0.44比较,分为
<=0.44和>0.44两类
咱们用numpy.where嵌套条件判断来实现:
# 定义给定的中位数 median_value = 0.44 # 生成分类列 df['Quantity_median'] = np.where( df['Quantity'].isna(), 0, np.where(df['Quantity'] > median_value, f'>{median_value}', f'<={median_value}') )
3. 查看最终结果
运行代码后,打印DataFrame就能得到你想要的结果:
print(df.to_string(index=False))
输出结果如下:
ID Quantity Quantity_median 1 0.93 >0.44 2 0.17 <=0.44 3 NaN 0 4 0.44 <=0.44 5 NaN 0 6 0.86 >0.44 7 0.07 <=0.44 8 0.23 <=0.44 9 1.00 >0.44
也可以用Markdown表格直观展示:
| ID | Quantity | Quantity_median |
|---|---|---|
| 1 | 0.93 | >0.44 |
| 2 | 0.17 | <=0.44 |
| 3 | NA | 0 |
| 4 | 0.44 | <=0.44 |
| 5 | NA | 0 |
| 6 | 0.86 | >0.44 |
| 7 | 0.07 | <=0.44 |
| 8 | 0.23 | <=0.44 |
| 9 | 1.00 | >0.44 |
内容的提问来源于stack exchange,提问作者amty
相关产品推荐
相关产品推荐

