pandas - cookbook 第二章 选择数据 & 找出最常见的投诉类型
以下内容翻译自 https://github.com/jvns/pandas-cookbook
# The usual preamble
# matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
# # Make the graphs a bit prettier, and bigger
# pd.set_option('display.mpl_style', 'default')
# This is necessary to show lots of columns in pandas 0.12.
# Not necessary in pandas 0.13.
pd.set_option('display.width', 5000)
pd.set_option('display.max_columns', 60)
plt.rcParams['figure.figsize'] = (15, 5)
在这里,我们将使用新的数据集,来展示如何处理更大的数据集。这是一个纽约市公开的数据311投诉服务请求的子集。
注:可以通过github下载该数据集 https://raw.githubusercontent.com/jvns/pandas-cookbook/master/data/311-service-requests.csv
complaints = pd.read_csv('311-service-requests.csv')
输出
sys:1: DtypeWarning: Columns (8) have mixed types. Specify dtype option on import or set low_memory=False.
依赖于记得pandas版本,你可能回看到一些错误类似于 "DtypeWarning: Columns (8) have mixed types"。意思是说数据中有一些是有问题的。本例中很可能是有一些列的数据实体是字符串,而一些是整型。
现在我们可以忽略它而且我们不希望产生问题,但是长期的运行过程中需要考虑这些警告带来的问题。
2.1 概要
当你打印一个大数据帧时,它将仅仅显示开头的几行。
如果你不想这样,不用惊慌,默认行为已修改在pandas 0.12 和 0.13,0.13将回展示数据帧的概要,这包括了所有列,和每列有多少非空数据。
2.2 选择列和行
想要选择列,我们可以使用列名索引,如下所示
print(complaints['Complaint Type'])
想要的到数据帧的前五行,我们可以使用切片: df[:5]
这是一个很好的方法,来通过直观感觉来获得数据帧的信息。花一分钟时间看看数据集的内容吧。
print(complaints[:5])
我们可以将前两个查找方式合并起来,查出某列的前五行,如下所示
print(complaints['Complaint Type'][:5])
或者
print(complaints[:5]['Complaint Type'])
选择的顺序无关紧要。
2.3 选择多行
如果我们想知道投诉类型和区呢?但是没有其他的信息? Pandas 可以简单的选择你想要的列,只需要写入列名就可以了。同样和可以用切片来选择前几行。
print(complaints[['Complaint Type', 'Borough']][:10])
2.4 最常见的投诉是啥?
这个问题太容易回答了! 从.value_counts()方法我们就可以得到。同样,也可以使用切片来获取我们想要的区间数据。
print(complaints['Complaint Type'].value_counts()[:10])
为了更好,我们可以将他们画出来。
complaints['Complaint Type'].value_counts()[:10].plot(kind='bar')
plt.show()