Диаграмма для отображения отношений - несколько нечисловых столбцов - PullRequest
0 голосов
/ 21 апреля 2020

В настоящее время я занимаюсь исследовательским проектом и использую данные, показывающие людей, которых рекомендовали стать жертвами современного рабства.

Мой первоначальный план состоял в том, чтобы просто сделать простые гистограммы для каждого из заголовков с подсчетами. Однако мне нужно показать отношения (например, большинство детских рефералов - британки sh, для сексуальной эксплуатации). Я поиграл с точечными графиками, но не могу разобраться с этим при использовании нечисловых данных. Я использовал 'group-by', чтобы получить счетчик, но потом не знаю, что делать с счетчиками по отношению к графикам!

вот что я сделал - фактические данные намного больше

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")

1 Ответ

0 голосов
/ 21 апреля 2020

Поскольку у вас есть так много категориальных переменных для отображения, хорошим решением будет использование фазовых графиков. Это означает, что вы создаете многосюжетные сетки, где каждый подзаголовок имеет один и тот же вид, но применяется к разным подмножествам данных, как определено значениями определенных категориальных переменных. Библиотека Seaborn отлично подходит для этой цели.

Например, чтобы получить сетку из четырех вспомогательных участков в соответствии с каждой возможной комбинацией Gender и Age, при этом каждый график показывает Type на оси x и рассчитывает на оси y с точками, окрашенными в соответствии с Nationality, вы можете сделать это (при условии, что у вас есть дополнительный столбец Count в вашем кадре данных, который содержит действительные числа):

import seaborn as sns

grid = sns.catplot(x='Type', y='Count', 
                   row='Gender', col='Age', 
                   hue='Nationality',
                   data=df, kind='point')

Сведения о настройке и других параметрах см. в разделе морская документация для sns.catplot () и sns.pointplot () .

...