我爱编程

pandas - cookbook 第三章 哪个区的噪音投诉最多

2018-04-03  本文已影响0人  踌躇月光

pandas - cookbook 第三章 哪个区的噪音投诉最多?(或者,选择数据多样性)


以下内容翻译自 https://github.com/jvns/pandas-cookbook


complaints = pd.read_csv('../data/311-service-requests.csv')

我们继续纽约311投诉服务请求的例子。

3.1 只选择噪音投诉

想要知道那个区有最多的噪音投诉,首先,我们得看看数据长啥样。

complaints[:5]

为了获得噪音投诉,我们需要找到"投诉类型"所在得行,该行得列是"噪音-街道/人行道",我会展示如何实现它,而且会解释为何如此。

noise_complaints = complaints[complaints['Complaint Type'] == "Noise - Street/Sidewalk"]
noise_complaints[:3]

如你看 noise_complaints, 你将看到是有效得。它只包含了正确得投诉类型。但是它为什么会这样?我们来将它拆分成两部分。

complaints['Complaint Type'] == "Noise - Street/Sidewalk"

这是一个大数组,包含了好多 TrueFalse,每行都再我们得数据帧中,当我们用这个数组索引数据帧,我们得到了行是数组评估为True的行。这点特别重要,通过布尔数组来过滤数据帧,而且数据帧索引,必须与数据帧有相同的长度。

你同样可以将多个条件用 & 操作符连接,如下所示:

is_noise = complaints['Complaint Type'] == "Noise - Street/Sidewalk"
in_brooklyn = complaints['Borough'] == "BROOKLYN"
complaints[is_noise & in_brooklyn][:5]

或者我们只需要一部分列:

complaints[is_noise & in_brooklyn][['Complaint Type', 'Borough', 'Created Date', 'Descriptor']][:10]

3.2 numpy arrays 回归

在pandas内部,列的类型是 pd.Series,pandas Series 内部是 numpy arrays, 如果你添加 .values 到任何 Series 之后,你将的到内部的 numpy array.

3.3 哪个区有更多的噪音投诉?

is_noise = complaints['Complaint Type'] == "Noise - Street/Sidewalk"
noise_complaints = complaints[is_noise]
(noise_complaints['Borough'].value_counts())

是曼哈顿!但是如果我们将数量除以总数,这样数据就会更加敏感,这是很容易操作的。

noise_complaint_counts = noise_complaints['Borough'].value_counts()
complaint_counts = complaints['Borough'].value_counts()

noise_complaint_counts / complaint_counts
上一篇下一篇

猜你喜欢

热点阅读