Skip to main content
 首页 » 编程设计

python之我如何量化 Pandas 中的数据

2025年05月04日8落叶无声

我有一个这样的数据框

a = pd.DataFrame(a.random.random(5, 10), columns=['col1','col2','col3','col4','col5']) 

我想根据一组阈值(相应的输出可以是从 0 到级别数的整数)量化特定列,例如 col4。是否有相应的 API?

请您参考如下方法:

也许 qcut() 就是您要找的。简短回答:

df['quantized'] = pd.qcut(df['col4'], 5, labels=False )

更长的解释:

>>> import pandas as pd 
>>> import numpy as np 
>>> df = pd.DataFrame(np.random.randn(10, 5), columns=['col1','col2','col3','col4','col5']) 
>>> df 
       col1      col2      col3      col4      col5 
0  0.502017  0.290167  0.483311  1.755979 -0.866204 
1  0.374881 -1.372040 -0.533093  1.559528 -1.835466 
2 -0.110025 -1.071334 -0.474367 -0.250456  0.428927 
3 -2.070885  0.095878 -3.133244 -1.295787  0.436325 
4 -0.974993  0.591984 -0.839131 -0.949721 -1.130265 
5 -0.383469  0.453937 -0.266297 -1.077004  0.123262 
6 -2.548547  0.424707 -0.955433  1.147909 -0.249138 
7  1.056661  0.949915 -0.234331 -0.146116  0.552332 
8  0.029098 -1.016712 -1.252748 -0.216355  0.458309 
9  0.262807  0.029040 -0.843372  0.492120  0.128395 

可以使用pd.qcut()获取对应的范围。

>>> q = pd.qcut(df['col4'], 5) 
>>> q 
0       (1.23, 1.756] 
1       (1.23, 1.756] 
2     (-0.975, -0.23] 
3    [-1.296, -0.975] 
4     (-0.975, -0.23] 
5    [-1.296, -0.975] 
6       (0.109, 1.23] 
7      (-0.23, 0.109] 
8      (-0.23, 0.109] 
9       (0.109, 1.23] 
Name: col4, dtype: category 
Categories (5, object): [[-1.296, -0.975] < (-0.975, -0.23] < (-0.23, 0.109] < (0.109, 1.23] < (1.23, 1.756]] 

您可以设置参数labels=False来获取整数表示

>>> q = pd.qcut(df['col4'], 5, labels=False) 
>>> q 
0    4 
1    4 
2    1 
3    0 
4    1 
5    0 
6    3 
7    2 
8    2 
9    3 
dtype: int64