0


Python实战10:印度女性安全现状及改进措施探讨

背景问题

本数据集来源于印度政府官方网站[data.gov.in],涵盖了从2001年至2021年间针对妇女的一系列犯罪行为的全州统计数据。该数据集详细记录了各类针对女性的犯罪案例,包括但不限于强奸、绑架、嫁妆死亡等严重违法行为。通过对这些年来犯罪模式的变化趋势进行分析,可以帮助政策制定者和执行机构更好地理解影响女性安全的关键因素,并据此设计有效的预防和应对策略。

数据说明

问题描述

地区对比分析
时间趋势分析
犯罪类型相关性分析

数据预处理

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
df = pd.read_csv(r'/home/mw/input/08236512/CrimesOnWomenData.csv',index_col=0)
df.head()

print('-'*50)
print('数据集大小:',df.shape)
print('-'*50)
print('数据集重复值个数:',df.duplicated().sum())
print('-'*50)
print('数据集缺失值个数:',df.isna().sum())
print('-'*50)
print('数据集信息:',df.info())

将Year的数据类型修改为object。

df['Year'] = df['Year'].astype('object')

接下来给数据添加案件总数计算列,即每个地区每年发生的案件总数。

# CT:Case Total
df['CT'] = df.iloc[:,2:-1].sum(axis=1)
print(df.head())

查看地区名称是否存在不规范的问题,例如格式拼写(受蓝皮怪的启发)。

print('原数据的地区唯一值有:',df['State'].nunique())
print(df['State'].unique())

有的地名是全部大写,有的是首字母大写,这就需要将所有地区名称标准化为首字母大写。另外,D&N Haveli和D & N Haveli是同一个地名,因此也需要进行处理。

df['State'] = df['State'].str.title()
df['State'] = df['State'].replace('D&N Haveli','D & N Haveli')

print('现数据的地区唯一值有:',df['State'].nunique())
print(df['State'].unique())

display('数据集统计描述:',df.describe(include='all'))

解读:

  • State:一共有36个唯一值地区,其中最常见的地区是Andhra Pradesh(26条记录)。
  • Year:一共有21个唯一值年份,即2001年到2021年,其中被涉及最多的年份是2011年。
  • Rape:每个地区每年的平均强奸案件数约为727.8件,而中位数为348.5件,最高达到6337件。
  • K&A:每个地区每年的平均绑架与袭击案件数约为1134.5件,而中位数为290件,最高达到15381件。
  • DD:每个地区每年的平均聘礼致死案件数约为215.6件,而中位数为29件,最高达到2524件。
  • AoW:每个地区每年的平均针对女性袭击案件数约为1579.1件,而中位数为387.5件,最高达到14853件。
  • AoM:每个地区每年的平均侮辱女性贞操案件数约为332.7件,而中位数为31件,最高达到9422件。
  • DV:每个地区每年的平均家庭暴力案件数约为2595件,而中位数为678.5件,最高达到23278件。
  • WT:每个地区每年的妇女贩卖案件数约为28.7件,而中位数为0件,最高达到549件。

由此可见以上类型案件数的平均数远远要高于中位数,说明存在极端高值,导致平均值偏高。另外,最小值和最大值之间差距非常大,说明数据集中的案件数分布非常广泛。

可视化分析

1.时间趋势分析

a.按地区维度进行分析

  • 2001年-2021年各地区案件数变化趋势¶

plot_fig = px.line(df,x='Year',y='CT',color='State')

plot_fig.update_layout(
    title='2001年-2021年各地区案件数变化趋势',
    title_x=0.5,
    width=1100,
    height=600
)

unique_years = df['Year'].unique()
plot_fig.update_xaxes(
    tickmode='array',
    tickvals=unique_years,
    tickangle=45,
    tickformat='.0f'
)

plot_fig.show()

小结:
通过2001年到2021年各地区的案件数变化趋势的分析,可以将这些地区情况大致分为三个大类:
第一个类地区表现为案件总数逐年增长,可能表明这些地区在法律执行、犯罪活动、社会治安等存在长期的问题或变化,这些地区可能是占了较大的比例;
第二类地区的特点是从2001年到2018年案件数维持在较低水平,但在2019年出现了显著的激增,这种现象可能和特定事件、政策改变、执法力度或社会经济因素等有关;
第三类地区案件数量自2001年起持续上升,直到2020年出现急剧下降,这种现象可能反映出了2020年这一年内发生了重大时间或政策调整,导致案件数出现逆转。

b.按犯罪类型维度进行分析

  • 2001年-2021年案件数变化趋势

# 按需生成新df
year_df = df.groupby(by='Year').CT.sum().reset_index(name='Total')
# print(year_df)

# 绘画
year_fig = px.line(year_df,x='Year',y='Total')

year_fig.update_layout(
    title = '2001年-2021年总体案件数变化趋势',
    title_x = 0.5,
    width = 1100,
    height = 600
)

year_fig.update_xaxes(
    tickmode='array',
    tickvals = year_df['Year'].unique(),
    tickangle = 45
)

year_fig.show()

小结:
从2001年至2021年的年度案件总数变化来看,整体呈现波动上升的趋势。具体而言:
在2001年至2010年间,案件数量逐渐增长,从约13万起增加至接近20万起,表明这一时期内犯罪案件数有所上升。
到2011年,案件数量出现了短暂的回落,降至约16万起,这可能暗示着某些政策干预或其他外部因素的影响。
紧接着,到2014年,案件数迅速攀升至约33万起的峰值。之后,案件总数保持在一个较高的水平,大致在30万和35万之间波动,表明在此之后,案件数量增长速度有所放缓,但仍处于较高水平。

  • 2001年-2021年不同犯罪类型案件数变化趋势

# ['Rape','K&A','DD','AoW','AoM','DV','WT']

# 按需生成新df
df_melted = df.iloc[:,1:-1].melt(id_vars=['Year'],value_vars=['Rape','K&A','DD','AoW','AoM','DV','WT'],var_name='Case_type',value_name='Count')
df_melted = df_melted.groupby(by=['Year','Case_type'])['Count'].sum().reset_index(name='Count')
# print(df_melted)

# 绘画
case_fig = px.line(df_melted,x='Year',y='Count',color='Case_type')

case_fig.update_layout(
    title='2001年-2021年不同犯罪类型案件数的变化趋势',
    title_x=0.5,
    width=1100,
    height=600
)

unique_years = df['Year'].unique()
case_fig.update_xaxes(
    tickmode='array',
    tickvals=unique_years,
    tickangle=45,
    tickformat='.0f'
)

case_fig.show()

小结:
DV(家暴)、AoW(针对女性的袭击)、K&A(绑架与袭击)、Rape(强奸)这四种犯罪类型呈现逐渐增长的趋势。
DD(聘礼致死)、WT(妇女贩卖)这两种犯罪类型的案件数量处于较稳定水平,但相对前面四种犯罪类型案件数要低很多。
AoM(侮辱女性贞操)该犯罪类型的案件数量一开始趋于稳定水平,自2013年起至2016年有回升的现象,在此之后又回落,最后趋于稳定水平。
值得注意的是,前面提到2010年到2011年期间有短暂回落的现象,主要归因于AoW(针对女性的袭击)的显著减少。
由此可见,DV(家暴)、AoW(针对女性的袭击)、K&A(绑架与袭击)、Rape(强奸)这些犯罪类型案件数占据了较大比例,并且呈现增长得趋势。因此应该重点关注这些犯罪类型,采取有效措施加强预防和打击力度。

2.地区对比分析

  • 各地区案件总数比较

state_total = df.groupby(by='State')['CT'].sum().sort_values(ascending=False).reset_index(name='Total')
# print(state_total)

#创建柱状图
state_bar = px.bar(state_total,x='State',y='Total')

# 计算平均值
average = state_total['Total'].mean()
# 添加平均线
# 注意这里average外要加上方括号,这样就能生成一个列表而不是单一数值
state_bar.add_trace(
    go.Scatter(x=state_total['State'],y=[average]*len(state_total),name='Average',line=dict(dash='dash',width=1)) 
)

# 更新布局
state_bar.update_layout(
    title='各地区案件总数比较',
    title_x=0.5,
    width=1100,
    height=600,
    showlegend=True,
)

state_bar.show()

# 案件总数不超过1w的地区列表
# print(list(state_total.query('Total<10000').State))

print('犯罪高发地区Top5:')
print(list(state_total['State'].head(5)))
print('犯罪低发地区bottom5:')
print(list(state_total['State'].tail(5)))
犯罪高发地区Top5:
['Uttar Pradesh', 'Madhya Pradesh', 'West Bengal', 'Andhra Pradesh', 'Rajasthan']
犯罪低发地区bottom5:
['Goa', 'Mizoram', 'A & N Islands', 'Puducherry', 'Lakshadweep']

小结:
自2001年到2021年以来,数据显示,在总共36个地区中,有14个地区(约占总数的三分之一)的案件总数高于平均值134.6千件。特别值得注意的是,其中一个地区Uttar Pradesh(北方邦,处于印度北部)的案件总数高达529多千件,远超平均水平。
此外,大约有三分之一的地区案件总数较低,未超过10千件,分别是Daman & Diu、Sikkim、Chandigarh、Arunachal Pradesh、Manipur、Meghalaya、Goa、Mizoram、A & N Islands、Puducherry、Lakshadweep。
我们可以看出不同地区之间的案件数量差异很大,其中犯罪高发地区的前五名具有一个共同点:人口基数较大。这可能是因为人口密集导致了更多社交互动,从而增加了犯罪率,同时可能也反映了社会政策和经济条件对犯罪率的影响。相比之下,犯罪低发区前五名通常人口少,地位较为偏远,因此犯罪率相对较低。这意味着一些地区可能需要更多资源或关注来处理高发的案件,而其他地区则可能处于较稳定的状态。

  • 不同地区犯罪类型分布情况热力图

state_type_df = df.groupby(by='State')[['Rape','K&A','DD','AoW','AoM','DV','WT']].sum()

# 如果想要反转预设颜色,可以这样写color_continuous_scale=list(reversed(px.colors.sequential.YlOrRd))
state_type_fig = px.imshow(state_type_df,text_auto=True,aspect='auto',color_continuous_scale=px.colors.sequential.YlOrRd)
state_type_fig.update_layout(
    title='不同地区犯罪类型分布情况热力图',
    title_x = 0.5,
    width=1000,
    height=900
)
state_type_fig.show()

小结:
从热力图中可以看出,目前在大多数地区,DV(家庭暴力)的案件数量非常高,最高记录达到了26万起;紧随其后的是AoW(针对女性的袭击),最高记录为15万起;K&A(绑架与袭击)位居第三,最高记录为13万起;而Rape(强奸)案件的数量最高记录为7万起。这些数据再次证实了这四种犯罪类型在所有犯罪类型中占据了相当大的比例。接下来,我们将对这四种犯罪类型在不同地区的分布情况进行具体分析。

  • DV、AoW、K&A、Rape案件数的地区排名

type_list = ['DV','AoW','K&A','Rape']

rank_df = df.groupby(by='State')[type_list].sum().reset_index()
# print(rank_df)

# 绘图
type_fig = make_subplots(rows=4,cols=1,subplot_titles=[f"{type}案件数地区排名" for type in type_list])
for i,type in enumerate(type_list,start=1):
    sort_df = rank_df[['State',type]].sort_values(by=type,ascending=False)
    type_fig.add_trace(
        px.bar(sort_df,x='State',y=type).data[0],
        row = i,
        col = 1
    )
    
# 更新图形(非子图)的标题、尺寸
type_fig.update_layout(
    title='DV、AoW、K&A、Rape案件数的地区排名',
    title_x=0.5,
    width = 1100,
    height = 1200
)

# 更新图形(非子图)x轴标签角度
type_fig.update_xaxes(tickangle=45)

type_fig.show()

# 输出各类犯罪类型案件数前10个地区,并找出重复出现的地区
dv_rank10_list = rank_df[['State','DV']].sort_values(by='DV',ascending=False)

小结:
通过分析发现,这些不同犯罪类型案件数地区前几名都有高发地区前几名的身影。这说明了导致这些犯罪类型案件数高的原因之一是因为这些地区人口基数较大。

3.犯罪类型相关性分析

corr_df = df.select_dtypes(include=[np.number]).corr().round(2)

corr_fig = px.imshow(corr_df,text_auto=True,aspect='auto',color_continuous_scale=px.colors.sequential.YlOrRd)
corr_fig.update_layout(
    title='犯罪类型相关性热力图',
    title_x = 0.5,
    width = 600,
    height = 600
)
corr_fig.show()

小结:

  • 非常强的正相关关系(>=0.8): Rape、K&A、AoW、DV与CT:意味着这些犯罪类型案件数增加时,总案件数也倾向于增加。 这与和先前对不同犯罪类型案件数的变化趋势的分析基本一致,表明这些犯罪类型占据了较大的比例。 Rape与AoW:意味着强奸和针对女性的袭击之间存在高度的同步发生。当一种犯罪的数量增加时,另一种犯罪的数量也很可能增加。
  • 比较强的正相关关系(>=0.6 & <0.8): K&A、DV与Rape:意味着强奸、绑架与袭击、家暴三个犯罪之间也存在比较高的同步发生率(bt人可真不少啊)。 DD、AoW、DV月K&A:意味着绑架与袭击、聘礼致死、针对女性的袭击、家暴几个犯罪之间也存在比较高的同步发生率。 AoW与DV:意味着家暴、针对女性的袭击两个犯罪之间也存在比较高的同步发生率,这一发现再次强调了女性在这些犯罪中所面临的威胁,因此必须加强防范措施。
  • 中等强度的正相关关系(0.5): DD、AoM与Rape:意味着强奸、聘礼致死、侮辱女性贞操这些犯罪类型之间也存在中等强度的同步发生率,不容忽视。 AoW、DV与DD:意味着针对女性的袭击、侮辱女性的贞操和聘礼致死这些范围类之间也存在中等强度的同步发生率。 AoW与AoM:意味着针对女性的袭击和侮辱女性贞操这两个犯罪也存在中等强度的同步发生率。
  • 微弱强度的正相关关系(<=0.3): WT与其他犯罪类型之间呈现微弱的正相关关系,意味着贩卖女性这一犯罪行为往往是独立发生的,但并不完全排除与其他类型犯罪同时存在的可能性。

总结

综合上述,整体犯罪案件数量随着时间的推移而呈现出增长趋势。值得注意的是,DV(家庭暴力)、AoW(针对女性的袭击)、Rape(强奸)这四种犯罪类型在所有犯罪类型中占比较高,这也是造成犯罪总数上升的一个重要因素。此外,除WT(妇女贩卖)这一类犯罪外,所其他各种犯罪类型之间存在一定程度的正相关性,表明这些犯罪行为往往不是孤立发生,而是可能存在相互关联的情况(因此我们在新闻/影剧中也经常看到Rape案件总会伴随着其他案件,懂的都懂)。
另外,犯罪案件的数量与多种因素关联,包括当地的人口密度、经济发展水平和社会环节等。由于现有数据的局限性,本分析主要聚焦于地区与犯罪类型之间的关系。研究发现,犯罪率较高的地区通常具有人口密集的特点。较大的人流量可能会增加社会互动的机会,进而潜在地提高了犯罪率。相反,犯罪率较低地地区往往是地理位置偏远,人口分布稀疏等。

建议

在人口密集地区增加警务力量,提高巡逻频率,以增强公众的安全感并及时干预潜在的犯罪行为。
改善照明条件,安装监控摄像头。
为高犯罪率地区的居民提供更多就业机会和发展经济的途径,减少因经济原因而犯罪的可能性。
通过开展社会包容性项目和提供教育资源,减少社会隔阂,提高居民的法律意识和社会责任感。
建立和完善心理健康服务体系,特别是针对易受伤害群体,如妇女和儿童,提供必要的心理辅导和支持。


本文转载自: https://blog.csdn.net/qq_39144560/article/details/142093491
版权归原作者 我只喝milk。 所有, 如有侵权,请联系我们删除。

“Python实战10:印度女性安全现状及改进措施探讨”的评论:

还没有评论