在 Pandas 中添加分位数作为新列

Dan*_*ata 3 python quantile dataframe pandas

我有一个包含三列的数据框

| 一个 | 乙 | C |

我计算了分位数:

df.quantile(.25)
df.quantile(.75)
Run Code Online (Sandbox Code Playgroud)

我想根据一个简单的规则添加一个新的列Q分类使用'small', 'medium', 'large'。如果值小于 1 个四分位数,则很小;如果它大于 3 个四分位数,那么大,中间的所有东西都是中等的。

我试过使用 qcut 但它只接收一维输入。

谢谢

cs9*_*s95 8

pd.qcut 是你的朋友。

pd.qcut(s, q=[0, .25, .75, 1], labels=['small', 'medium', 'large'])
Run Code Online (Sandbox Code Playgroud)

移动电源

print(s)
0     1
1     1
2     2
3     3
4     4
5     2
6     4
7     6
8     4
9     6
10    5
11    4
12    6
13    7
14    3
15    2
16    1
17    1
18    2
dtype: int64

print (pd.qcut(s, q=[0, .25, .75, 1], labels=['small', 'medium', 'large']))
0      small
1      small
2      small
3     medium
4     medium
5      small
6     medium
7      large
8     medium
9      large
10     large
11    medium
12     large
13     large
14    medium
15     small
16     small
17     small
18     small
dtype: category
Categories (3, object): [small < medium < large]
Run Code Online (Sandbox Code Playgroud)

对于 DataFrames,对每一列重复此操作apply

df.apply(pd.qcut, q=[0, .25, .75, 1], labels=['small', 'medium', 'large'], axis=0)
Run Code Online (Sandbox Code Playgroud)