2016-10-20 2 views
1

Mit klassifizieren:Wie die Zahlen von Wert in Datenrahmen

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

gibt einen Mittelwert aller Zahlen:

157.583333333 

Die Hälfte der Zahlen ist kleiner als 100. Ich frage mich, ob es eine Möglichkeit, die Zahlen in die Kategorien zu zerlegen (im Wesentlichen zu klassifizieren). Ich würde die Anzahl der Gruppen angeben, in die die Zahlen eingeordnet werden sollen, und die Funktion würde eine Liste zurückgeben, in der jede Zahl durch den Index der entsprechenden Kategorie ersetzt wird. Also würden die Zahlen kleiner als 100 eine ganzzahlige Kategorie 1 erhalten. Dann würden die Zahlen von 100 - 200 eine Kategorie 2 und usw. erhalten. Im Wesentlichen eine Art Rundungsfunktion, die die Zahlen auf alle im Wertebereich runden würde: von 0 bis 100, von 100,1 bis 200,0 und usw.

+0

„wobei jede Zahl mit der entsprechenden Kategorie-Index ersetzt“. Oder fügen Sie einfach eine Spalte "Kategorie" zum Datenrahmen hinzu? Dann werden Sie die eingegebenen Zahlen nicht verlieren. – Evert

Antwort

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

Verwenden Sie pd.cut. Mit dem Argument bins= können Sie die Anzahl der zu erhaltenden Kategorien definieren. Das Ergebnis ist eine Serie mit sind Bereiche:

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

Wie benutzt man das, wenn die * Anzahl * von Bins unbekannt ist, aber die Größe des Bins (alle gleich) eingestellt ist? – Evert

+0

Mit der Größe des Fachs meinen Sie die Anzahl der Elemente, die Sie in jedem Fach erhalten möchten, oder die Breite jedes Fachbereichs? Nicht sicher, um zu fangen, was Sie tatsächlich denken – Boud

+0

Die Fachbreite. Die Frage legt eine feste Behälterbreite von 100 nahe, daher meine Frage. – Evert

Verwandte Themen