第一场:武器
第二列:Pepetrator_Age
例如y轴应为案例数 犯罪者的x轴年龄
线是凶手使用的武器类型
您可以将其复制粘贴到jupyter以初始化数据集
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
data = pd.read_csv("hdb.csv", low_memory=False)
cols = data.columns
cols = cols.map(lambda x: x.replace(' ', '_'))
data.columns = cols
#clear the unnecessary data here
data = data.drop(['Agency_Code', 'Victim_Ethnicity', 'Agency_Name','Agency_Type', 'Perpetrator_Ethnicity', 'Victim_Count', 'Perpetrator_Count'], axis=1)
data = data[data.Perpetrator_Age != "0"]
data = data[data.Perpetrator_Age != ""]
data = data[data.Perpetrator_Age != " "]
data = data[data.Victim_Sex != "Unknown"]
data = data[data.Victim_Race != "Unknown"]
data = data[data.Perpetrator_Sex != "Unknown"]
data = data[data.Perpetrator_Race != "Unknown"]
data = data[data.Relationship != "Unknown"]
data = data[data.Weapon != "Unknown"]
data
此处设置的数据: https://www.kaggle.com/jyzaguirre/us-homicide-reports
答案 0 :(得分:1)
IIUC,这种数据分组最好以分组条形图的形式显示,例如在Seaborn的countplot
中,而不是在折线图中,因为您想按特定的列着色(Weapon
),但您希望在x轴(Perpetrator_Age
)上显示其他列。 AFAIK,折线图不会同时捕获这些聚集。
这是一个显式的熊猫groupby
,用于显示您正在引用的聚合
df_grouped = df.groupby(['Perpetrator_Age', 'Weapon']).count()
print(df_grouped)
Perpetrator_Race Relationship
Perpetrator_Age Weapon
15 Blunt Object 1 1
27 Knife 1 1
36 Rifle 1 1
42 Strangulation 2 2
现在,您要在x轴上显示第一个索引级别(Perpetrator_Age
),并且必须使用第二个索引级别Weapon
为绘制的数据上色。
以下是一些方法(不需要groupby
)
Seaborn
countplot
会生成条形图(对应于案例数,或者通常是每个分组中的记录数),它使您可以指定用于分组数据的列< / li>
Weapon
列进行着色,因此countplot
允许使用参数hue
进行指定进口
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set(style="whitegrid")
代码
ax = sns.countplot(x="Perpetrator_Age", hue="Weapon", data=df)
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles=handles, labels=labels)
ax.set_ylabel("Number of cases")
Altair
进口
import altair as alt
alt.renderers.enable('notebook')
代码
alt.Chart(df).mark_bar(size=15).encode(
alt.Y('count(Weapon):Q', axis=alt.Axis(title='Number of cases')),
alt.X('Perpetrator_Age:O', axis=alt.Axis(labelAngle=0)),
color='Weapon:N'
).properties(
width=250,
height=250
)