2016-10-20 24 views
1

隨着分類:如何將數字由值數據框

import pandas as pd  
df = pd.DataFrame({'a':[1,2,3,4,5,12,14,121,131,298,299,1001]}) 
print df.a.mean() 

返回所有數的平均值:

157.583333333 

數字的一半是小於100。我不知道是否有一種將數字分類的方法(基本上將它們分類)。我會指定組的數量來分類數字,函數將返回一個列表,其中每個數字被對應的類別索引所取代。因此,小於100的數字將被賦予一個整數類別1.然後,來自100-200的數字將被賦予類別2等等。基本上某種舍入函數會將數字四捨五入到值的範圍內:從0到100,從100.1到200.0等

+0

「其中每個數字被替換爲相應的類別的指數」。或者只是添加一個列「類別」的數據框?那麼你不會失去輸入的數字。 – Evert

回答

2
import pandas as pd  
df = pd.DataFrame({'a':[1,2,3,4,5,12,14,121,131,298,299,1001]}) 
df['category'] = df['a'] // 100 + 1 
print(df[['a', 'category']]) 

     a category 
0  1   1 
1  2   1 
2  3   1 
3  4   1 
4  5   1 
5  12   1 
6  14   1 
7 121   2 
8 131   2 
9 298   3 
10 299   3 
11 1001  11 
2

使用pd.cut。參數bins=允許您定義要獲取的類別數量。結果是具有箱一系列範圍:

pd.cut(df.a, bins=10) 
Out[156]: 
0  (0, 101] 
1  (0, 101] 
2  (0, 101] 
3  (0, 101] 
4  (0, 101] 
5  (0, 101] 
6  (0, 101] 
7  (101, 201] 
8  (101, 201] 
9  (201, 301] 
10  (201, 301] 
11 (901, 1001] 
Name: a, dtype: category 
Categories (10, object): [(0, 101] < (101, 201] < (201, 301] < (301, 401] ... (601, 701] < (701, 801] < (801, 901] < (901, 1001]] 
+0

如果垃圾箱的*數量*未知,但垃圾箱的大小(全部相等)是否已設置,如何使用? – Evert

+0

通過bin的大小,您是指您想要在每個bin中獲取的元素的數量,還是每個bin範圍的寬度?不知道要記住你想要的實際案例 – Boud

+0

垃圾箱寬度。這個問題表明固定的寬度爲100,因此我的問題。 – Evert

相關問題