您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Python分析美國(guó)警察槍擊案EDA”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python分析美國(guó)警察槍擊案EDA”吧!
開(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
首先,約會(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()
時(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')
顯然,我們沒(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 (%)');
我們可以看到,只有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');
受害者的年齡
接下來(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)
由這些疊加的密度圖可以拋光:
對(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()
到此,相信大家對(duì)“Python分析美國(guó)警察槍擊案EDA”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(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)容。