我正在使用一个众所周知的犯罪数据集。它看起来像这样:
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
当我获得日期
列的频率计数时,我得到2011-01-01 650
。换句话说,整个数据集中 2011-01-01
发生了 650
起犯罪事件。但是,我想知道如何返回 2011-01-01
发生的 650
犯罪行为的前 10 个类别(Category
列) 。来自 documentation我读到了有关索引选择和切片的内容。尽管如此,我仍然不知道如何返回此类类别。
最佳答案
我认为这符合您的要求,首先使用 df.Dates == "2011-01-01"
构造一个逻辑索引来过滤日期 2011-01-01< 上的行
并在列索引处指定 Category
以仅选择 Category
列,这样您就可以获得 2011-01-01
上的所有类别。使用value_counts()
函数为每个类别制作一个频数表,并按频数排序,默认是升序排列,为了得到出现次数最多的类别,可以使用列表[::-1]
反转索引以反转频率计数,并使用 [:10]
选取前 10 个元素,这将是前 10 个最常见的类别:
df.loc[df.Dates == "2011-01-01", "Category"].value_counts().sort_values()[::-1][:10]
关于python - 如何使用 pandas 返回前 10 个频繁列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38298385/