最近在学习用pandas处理数据,pandas的易用性真的让人很爽,想找点数据玩一下,同事说kaggle上的数据很多,值得玩耍。
数据
我处理的数据是从kaggle数据分析竞赛网站下载的旧金山的分类犯罪数据-点此下载。
如下图所示,数据共有九列,X、Y是GPS坐标,其它都是字符串,没法用describe直接看概要。
初步分析
排除数值列,对字符串列进行descirbe分析,可以知道 数据值类型、数量最多类型。
PdDistrict Category DayOfWeek Resolution
count 878049 878049 878049 878049
unique 10 39 7 17
top SOUTHERN LARCENY/THEFT Friday NONE
freq 157182 174900 133734 526790
其后逐列按类型查看类型对应数量。
如按警区查看 print(df['PdDistrict'].value_counts())
SOUTHERN 157182
MISSION 119908
NORTHERN 105296
BAYVIEW 89431
CENTRAL 85460
TENDERLOIN 81809
INGLESIDE 78845
TARAVAL 65596
PARK 49313
RICHMOND 45209
Name: PdDistrict, dtype: int64
可视化
很多人对数字并不敏感,有图会提高对数据对理解。pandas自带的plot函数可以快速的将dataframe图形化。
默认是线状走势图,下面是按类型对警情进行分析。
不够直观,并且横坐标有重复,使用直方图形式,以横向的方式将类型显示完全。在控制坐标旋转的时候,我发现这个plot函数有不少bug,控制起来也很不方便。如果想更精细的控制图的显示,建议直接使用matplotlib,当然dataframe的plot函数最终也是直接调用matplotlib。
category.plot(figsize=(26, 10), title=u'犯罪类型统计', rot=0, kind='barh', legend=True)
由于我是用pycharm来玩的,所以如果我不加plt.show,plot显示不出来。所以我最终还是得导入matplotlib。