溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python分析美國(guó)警察槍擊案EDA

發(fā)布時(shí)間:2021-11-23 16:18:55 來(lái)源:億速云 閱讀:269 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Python分析美國(guó)警察槍擊案EDA”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python分析美國(guó)警察槍擊案EDA”吧!

1.準(zhǔn)備

開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip。

此外,推薦大家用VSCode編輯器,因?yàn)樗梢栽诰庉嬈飨旅娴慕K端運(yùn)行命令安裝依賴模塊

本文提供了流程性,建議使用VSCode的Jupiter Notebook擴(kuò)展,新建一個(gè)稱為 test.ipynb 的文件,跟著教程一步步走下去。


Windows環(huán)境下打開(kāi)Cmd(開(kāi)始-運(yùn)行-CMD),蘋果系統(tǒng)環(huán)境下請(qǐng)打開(kāi)Terminal(command +空格輸入Terminal),輸入命令安裝依賴:

所需依賴:

pip install numpy
pip install pandas
pip install plotly
pip install seaborn

2.代碼與分析

首先,約會(huì)我們分析所需要使用的模塊:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from datetime import datetime
import plotly.express as px
import plotly.graph_objects as go
import warnings
import plotly.offline as pyo
pyo.init_notebook_mode()
warnings.filterwarnings('ignore')
pd.set_option('display.max_columns', 500)
sns.set_style('white')
%matplotlib inline

需要分析的數(shù)據(jù)集:

df = pd.read_csv('./PoliceKillingsUS.csv', encoding='cp1252')
df.head()

Python分析美國(guó)警察槍擊案EDA


時(shí)間特征

從這6年的月度數(shù)據(jù)來(lái)看,我們可以看到,在2015年上半年,2018年初和2020年第一季度,我們達(dá)到了每月超過(guò)100起致命事故的高峰。從月度來(lái)看,這種現(xiàn)象不明顯的后果。

df['date'] = df['date'].apply(lambda x: pd.to_datetime(x))
df['date'].groupby(df.date.dt.to_period('M')).count().plot(kind='line')

看看警察槍擊案的事故是否具有周末特征:

count = df['date'].apply(lambda x: 'Weekday' if x.dayofweek < 5 else 'Weekend').value_counts(normalize=True)
f, ax = plt.subplots(1,1)
sns.barplot(x=count.index, y=count.values, ax=ax, palette='twilight')

Python分析美國(guó)警察槍擊案EDA

顯然,我們沒(méi)有證據(jù)表明周末會(huì)發(fā)生更多的案件。

不過(guò),如果細(xì)化到星期里的每一天,我們會(huì)發(fā)現(xiàn)周中發(fā)生案件的概率較高:

count = df['date'].apply(lambda x: x.dayofweek).value_counts(normalize=True).sort_index()
count.index = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']

f, ax = plt.subplots(1,1)
sns.barplot(x=count.index, y=count.values, ax=ax, palette='twilight')
ax.set_title('Cases (%) for each day of the week');

接下來(lái)看看以下4個(gè)特征的分布:

精神疾病的征兆:是否精神障礙

威脅等級(jí):威脅等級(jí)

body_camera:警察是否帶了隨身攝像頭

way_of_death:死亡方式

count_1 = df['signs_of_mental_illness'].value_counts(normalize=True)
count_2 = df['threat_level'].value_counts(normalize=True)
count_3 = df['body_camera'].value_counts(normalize=True)
count_4 = df['manner_of_death'].value_counts(normalize=True)

fig, axes = plt.subplots(2, 2, figsize=(8, 8), sharey=True)

sns.barplot(x=count_1.index, y=count_1.values, palette="rocket", ax=axes[0,0])
axes[0,0].set_title('Signs of mental illness (%)')
sns.barplot(x=count_2.index, y=count_2.values, palette="viridis", ax=axes[0,1])
axes[0,1].set_title('Threat level (%)')
sns.barplot(x=count_3.index, y=count_3.values, palette="nipy_spectral", ax=axes[1,0])
axes[1,0].set_title('Body camera (%)')
sns.barplot(x=count_4.index, y=count_4.values, palette="gist_heat", ax=axes[1,1])
axes[1,1].set_title('Manner of death (%)');

Python分析美國(guó)警察槍擊案EDA

我們可以看到,只有20%的案例受害者有精神殘疾的限額;

只有10%的警察有隨身攝像頭;

70%的情況被宣布為危險(xiǎn)狀況;

死亡方式似乎不是一個(gè)有趣的變量,因?yàn)榇蠖鄶?shù)案件都是“槍斃”;

美國(guó)的警察是否具有種族主義傾向?

count = df.race.value_counts(normalize=True)
count.index = ['White', 'Black', 'Hispanic', 'Asian', 'Native American', 'Other']

f, ax = plt.subplots(1,1, figsize=(8,6))
sns.barplot(y=count.index, x=count.values, palette='Reds_r')
ax.set_title('Total cases for each race (%)');
share_race_usa_2019 = pd.Series([60.0, 12.4, 0.9, 5.6, 18.4, 2.7], index=['White','Black','Native American','Asian','Hispanic','Other'])

count_races = count / share_race_usa_2019
count_races = count_races.sort_values(ascending=False)
f, ax = plt.subplots(1,1, figsize=(8,6))

sns.barplot(y=count_races.index, x=count_races.values, palette='Greens_r')
ax.set_title('Total cases for each race on total USA race percentage rate');

Python分析美國(guó)警察槍擊案EDA

受害者的年齡

接下來(lái)看看受害者年齡的分布密度圖:

sns.set_style('whitegrid')
fig, axes = plt.subplots(1, 1, figsize=(10, 8))
axes.xaxis.set_ticks(np.arange(0,100,10))

sns.kdeplot(df[df.race == 'N'].age, ax=axes, shade=True, color='#7FFFD4')
sns.kdeplot(df[df.race == 'O'].age, ax=axes, shade=True, color='#40E0D0')
sns.kdeplot(df[df.race == 'B'].age, ax=axes, shade=True, color='#00CED1')
sns.kdeplot(df[df.race == 'H'].age, ax=axes, shade=True, color='#6495ED')
sns.kdeplot(df[df.race == 'A'].age, ax=axes, shade=True, color='#4682B4')
sns.kdeplot(df[df.race == 'W'].age, ax=axes, shade=True, color='#008B8B')


legend = axes.legend_
legend.set_title("Race")
for t, l in zip(legend.texts,("Native", "Other", 'Black', 'Hispanic', 'Asian', 'White')):
    t.set_text(l)

Python數(shù)據(jù)分析:美國(guó)警察槍擊案EDA分析

由這些疊加的密度圖可以拋光:

對(duì)于而言和白人而言,大多數(shù)案件的受害者年齡都在30歲左右。

對(duì)于其他和印第安人來(lái)說(shuō),在大多數(shù)案件中,受害者大約28歲。

對(duì)于西班牙裔和黑人而言,大多數(shù)案件的受害者年齡都在25歲左右。

所以我們可以說(shuō),西班牙裔美國(guó)人和黑人的年輕人,是被警察開(kāi)槍射擊的高危人群。

受害者性別比例

按常理,這種暴力事件的受害者一般都為男性,看看是不是這樣:

fig = px.pie(values = df.gender.value_counts(normalize=True).values, names=df.gender.value_counts(normalize=True).index, title='Total cases gender (%)')
fig.update(layout=dict(title=dict(x=0.5),autosize=False, width=400, height=400))
fig.show()

Python分析美國(guó)警察槍擊案EDA

到此,相信大家對(duì)“Python分析美國(guó)警察槍擊案EDA”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI