最近在学习用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。