显示关系的图表 - 多个非数字列
Chart to show relationships - multiple nonnumerical columns
我目前正在做一个研究项目,并使用显示被转介成为现代奴隶制受害者的个人的数据。
我最初的计划只是为每个 headers 计数做简单的条形图。但是我需要展示关系(例如,大多数 child 推荐人都是英国女性,用于性剥削)。我玩过散点图,但在使用 non-numerical 数据时无法理解它。我用 'group-by' 得到了一个计数,但不知道如何处理与图表相关的计数!
这是我做的 df - 实际数据要大得多
test = {'Gender': ['Female','Female','Male','Male', 'Female'],
'Age': ['Adult', 'Adult', 'Child', 'Child', 'Adult'],
'Nationality': ['British', 'British', 'Vietnamese', 'Albanian', 'British'],
'Type': ['Sexual', 'Sexual', 'Sexual', 'Labour', 'Criminal'],
}
df = pd.DataFrame(test, columns = ['Gender', 'Age', 'Nationality','Type',])
dfcount=df.groupby(["Gender", "Age", "Nationality", "Type"]).Age.count().reset_index(name="count")
由于要显示的分类变量太多,一个好的解决方案是使用分面图。这意味着您创建多图网格,其中每个子图都属于同一类型,但应用于数据的不同子集,如某些分类变量的值所定义。 seaborn 图书馆非常适合这个目的。
例如,要根据 Gender
和 Age
的每个可能组合得到四个子图的网格,每个图在 x 轴上显示 Type
并计数在 y 轴上,点根据 Nationality
着色,你可以这样做(假设你的 DataFrame 中有一个额外的列 Count
包含实际数字):
import seaborn as sns
grid = sns.catplot(x='Type', y='Count',
row='Gender', col='Age',
hue='Nationality',
data=df, kind='point')
有关自定义和其他选项,请参阅 sns.catplot() and sns.pointplot() 的 seaborn 文档。
我目前正在做一个研究项目,并使用显示被转介成为现代奴隶制受害者的个人的数据。
我最初的计划只是为每个 headers 计数做简单的条形图。但是我需要展示关系(例如,大多数 child 推荐人都是英国女性,用于性剥削)。我玩过散点图,但在使用 non-numerical 数据时无法理解它。我用 'group-by' 得到了一个计数,但不知道如何处理与图表相关的计数!
这是我做的 df - 实际数据要大得多
test = {'Gender': ['Female','Female','Male','Male', 'Female'],
'Age': ['Adult', 'Adult', 'Child', 'Child', 'Adult'],
'Nationality': ['British', 'British', 'Vietnamese', 'Albanian', 'British'],
'Type': ['Sexual', 'Sexual', 'Sexual', 'Labour', 'Criminal'],
}
df = pd.DataFrame(test, columns = ['Gender', 'Age', 'Nationality','Type',])
dfcount=df.groupby(["Gender", "Age", "Nationality", "Type"]).Age.count().reset_index(name="count")
由于要显示的分类变量太多,一个好的解决方案是使用分面图。这意味着您创建多图网格,其中每个子图都属于同一类型,但应用于数据的不同子集,如某些分类变量的值所定义。 seaborn 图书馆非常适合这个目的。
例如,要根据 Gender
和 Age
的每个可能组合得到四个子图的网格,每个图在 x 轴上显示 Type
并计数在 y 轴上,点根据 Nationality
着色,你可以这样做(假设你的 DataFrame 中有一个额外的列 Count
包含实际数字):
import seaborn as sns
grid = sns.catplot(x='Type', y='Count',
row='Gender', col='Age',
hue='Nationality',
data=df, kind='point')
有关自定义和其他选项,请参阅 sns.catplot() and sns.pointplot() 的 seaborn 文档。