2015-03-02 161 views
2

我有一個有幾列的熊貓數據幀。對於每列我想計算某些百分點。然後我想與每個觀測落在百分來代替我的數據幀。確定一個值落在一個熊貓數據幀中的分位數

import pandas as pd 
M = np.random.uniform(0, 100, (10, 6)) 
df = pd.DataFrame(M, columns=['c%i'%i for i in range(6)]) 

>>> df[:2] 
       c0   c1   c2   c3   c4   c5 
    0 24.883165 2.299054 11.002427 98.711018 39.042343 50.408190 
    1 42.099085 78.028507 25.099002 39.099628 38.687483 15.794404 

df.quantile([.1, .5, .9]) 

        c0   c1   c2   c3   c4   c5 
     0.1 21.418274 7.094343 10.904711 25.014356 15.958873 21.984237 
     0.5 41.793102 36.973471 29.031637 64.246471 41.136274 42.408574 
     0.9 75.724554 62.274133 86.604768 93.690257 73.757992 89.365606 

例如,行0中,C0 = 24.883。最大的c0分位數q_c0其中24.883 < = q_c0將是0.5。在我的新數據框中,我想用0.5代替24.883。

回答

1

如何使用:

import pandas as pd 
import numpy as np 
M = np.random.uniform(0, 100, (10, 6)) 
df = pd.DataFrame(M, columns=['c%i'%i for i in range(6)]) 

bins = [0.0, 0.1, 0.5, 0.9, 1.0] 
df.apply(lambda s:pd.qcut(s, bins, bins[1:]).astype(float)) 
相關問題