Декартово произведение двух категориальных переменных - PullRequest
0 голосов
/ 14 июля 2020

Пусть DataFrame, который имеет среди двух других категориальных переменных, один имеет child young mature old классы, а другой male female классы

Как я мог систематически создавать новый столбец 'Sex_Age' с классами male_child, female_child, male_young, female_young, male_mature, female_mature, male_old, female_old?

В двух случаях:

  1. Я не хочу, чтобы эта новая категориальная переменная действительно добавлялась в мой DataFrame, а только хочу использовать ее концепцию и сказать, нарисуйте jitter plot, которые имеют восемь групп точек.

  2. Я хочу добавить эту новую категориальную переменную в свой DataFrame.

import pandas as pd
df = pd.DataFrame({'Sex':['male', 'female',\
         'male', 'male', 'male', 'female', 'male',\
        'male', 'female'], 'Age':['child', 'old', 'mature',\
        'young', 'young', 'mature', 'child', 'child', 'child'],
                  'HairLength':[2,30,8,15,9,35,3,5,6]})
df

В случае 1 я хочу jitter plot из 'HairLength' на 8 пучков в одной цифре, что соответствует 8 случаям: male_child, female_mature, ... и меня не интересует новый столбец:

В случае 2 меня интересует добавление 'Sex_Age' в мой DateFrame с истинными данными, такими как male_child и т. д.

1 Ответ

0 голосов
/ 14 июля 2020

Мой пример DataFrame:

df = pd.DataFrame({'A':['male', 'female', 'male'], 'B':['one', 'two', 'three']})

Таким образом, вы можете использовать функцию get_dummies из pandas:

pd.get_dummies(df, columns=['A', 'B'])

И вывод будет:


    A_female    A_male  B_one   B_three B_two
0          0         1      1         0     0
1          1         0      0         0     1
2          0         1      0         1     0

И вы можете использовать его для рисования, например (но это не график дрожания):

pd.get_dummies(df, columns=['A', 'B']).plot(kind='bar')

Или объедините его с вашим DataFrameWriter с помощью:

df = df.join(pd.get_dummies(df, columns=['A', 'B']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...