2016-07-11 2 views
1

Ich spiele mit einem bekannten Verbrechensdatensatz. Es sieht wie folgt aus:Wie kann man die häufigsten 10 häufigen Spaltenwerte mit Pandas zurückgeben?

Dates,Category,Descript,DayOfWeek,PdDistrict,Resolution,Address,X,Y,Time 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM OF VEHICLES",Wednesday,TENDERLOIN,NONE,TURK ST/JONES ST,-122.41241426358101,37.7830037964534,22:30:00 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM",Wednesday,NORTHERN,NONE,1500 Block of FILLMORE ST,-122.432743822617,37.7838424505847,20:45:00 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM",Wednesday,NORTHERN,NONE,1100 Block of FILLMORE ST,-122.431979576386,37.7800478529923,17:07:00 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM OF VEHICLES",Wednesday,TENDERLOIN,NONE,LEAVENWORTH ST/EDDY ST,-122.414242955907,37.783724025447796,17:00:00 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM OF VEHICLES",Wednesday,CENTRAL,NONE,CALIFORNIA ST/STOCKTON ST,-122.40753977435699,37.79224917725779,16:45:00 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM",Wednesday,BAYVIEW,NONE,100 Block of KISKA RD,-122.375989158092,37.7301576924252,16:00:00 
2015-05-13,VANDALISM,"MALICIOUS MISCHIEF, VANDALISM OF VEHICLES",Wednesday,NORTHERN,"ARREST, BOOKED",300 Block of MCALLISTER ST,-122.417777932619,37.7803089893403,14:30:00 
2015-05-13,NON-CRIMINAL,LOST PROPERTY,Wednesday,TENDERLOIN,NONE,300 Block of OFARRELL ST,-122.41050925879499,37.786043222299206,21:00:00 
2015-05-13,LARCENY/THEFT,GRAND THEFT FROM LOCKED AUTO,Wednesday,NORTHERN,NONE,2000 Block of BUSH ST,-122.43101755702699,37.7873880712241,21:00:00 
..... 
2015-05-13,LARCENY/THEFT,GRAND THEFT FROM LOCKED AUTO,Wednesday,INGLESIDE,NONE,500 Block of COLLEGE AV,-122.42365634294501,37.7325564882065,21:00:00 
2015-05-13,LARCENY/THEFT,ATTEMPTED THEFT FROM LOCKED VEHICLE,Wednesday,TARAVAL,NONE,19TH AV/SANTIAGO 

Wenn ich die Frequenzzahl für Dates Spalte bekomme ich 2011-01-01 650 bekommen. Mit anderen Worten 650 Straftaten in 2011-01-01 im gesamten Datensatz aufgetreten. Allerdings würde ich gerne wissen, wie man die Top 10 Kategorien (Category Spalte) dieser 650 Verbrechen in 2011-01-01 aufgetreten zurückgibt. Von der documentation lese ich über Indexauswahl und Slicing. Trotzdem finde ich immer noch nicht heraus, wie man solche Kategorien zurückgibt.

+0

Zeigen Sie, was Sie getan haben. – Merlin

+2

Bitte stellen Sie Ihr rohes 'DataFrame' mit' print df' oder ähnlichem zur Verfügung, ich kann Ihr 'df' nicht richtig laden. – MaThMaX

Antwort

1

Ich denke, das tut, was Sie wollen, zunächst einen logischen Index konstruieren mit df.Dates == "2011-01-01" zum Filtern von Zeilen auf Datum 2011-01-01 und Category an dem Spaltenindex geben Sie nur die Category Spalt zu wählen, so dass Sie die Kategorie alle auf 2011-01-01 bekommen. Verwenden Sie die value_counts() Funktion, um eine Häufigkeitstabelle für jede Kategorie zu erstellen und nach der Häufigkeit zu sortieren, die standardmäßig in aufsteigender Reihenfolge ist, um die häufigsten Kategorien zu erhalten. Verwenden Sie die Liste [::-1] Umkehrindex, um die Häufigkeitszählung umzukehren, und verwenden Sie [:10] um die ersten 10 Elemente zu sammeln, die zu den zehn häufigsten gehören:

df.loc[df.Dates == "2011-01-01", "Category"].value_counts().sort_values()[::-1][:10] 
+0

Danke für die Hilfe, das hat funktioniert. Könnten Sie eine Erklärung liefern? –