在本教程中,我们将使用 Python 中的 pandas 和 matplotlib 库来对 911 新闻进行数据可视化。我们将使用一个包含所有 911 新闻的 CSV 文件,并学习如何使用 pandas 从 CSV 文件中读取数据。之后,我们将使用 matplotlib 来生成柱状图、线图和饼图,以便更好地理解数据。
首先,让我们从下载并导入所需的库开始。我们需要 pandas 和 matplotlib,如果你尚未安装这些库,请运行以下命令:

```
!pip install pandas matplotlib
```
现在,我们将从 Kaggle 网站下载包含所有 911 新闻的 CSV 文件。此数据集有 996,717 行数据。我们可以从此处下载数据集:https://www.kaggle.com/mchirico/montcoalert 。我们可以使用 pandas 从 CSV 文件中读取数据。pandas.read_csv()方法使我们能够读取 CSV 文件及其内容,如下所示:
```
df = pd.read_csv('911.csv')
```
现在,我们可以开始根据需要处理数据。我们可以使用 pandas 的 groupby() 方法来对数据进行分类,以便更好地理解消息性质的周期性和分布。
```
df.groupby('Reason')['Reason'].count().sort_values(ascending=False)
```
通过运行以上代码,我们可以看到每个原因(EMS,Traffic 和 Fire)的计数。下面是可视化 EMS 调用值的柱状图、折线图和饼图。同样的方式,我们可以可视化其他类型的调用。
```
plt.figure(figsize=(8, 6))
plt.xticks(rotation=60)
plt.title('EMS Calls Count')
sns.countplot(x='Reason', data=df[df['Reason'] == 'EMS'])
plt.show()
```
```
plt.figure(figsize=(8, 6))
plt.xticks(rotation=60)
plt.title('EMS Calls Count')
plt.plot(df[df['Reason'] == 'EMS'].groupby('timeStamp')['timeStamp'].count())
plt.show()
```
```
data = df[df['Reason'] == 'EMS'].groupby('timeStamp')['timeStamp'].count()
plt.figure(figsize=(8, 8))
labels = data.sort_values(ascending=False).index[:5]
plt.pie(data.sort_values(ascending=False)[:5], labels=labels, autopct='%1.1f%%')
plt.show()
```
通过这些图表,我们可以了解警报的周期性和分布。