Как получить связь между категориальными и числовыми переменными кадра данных? - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть датафрейм с 49 столбцами. Большинство из них являются категориальными (объект типа), некоторые числовыми. Поскольку я новичок ie в науке о данных, я попытался построить тепловую карту корреляции Пирсона и увидеть корреляцию независимых переменных, но учитываются только числовые c переменные.

Итак, как получить связь между категориальными и числовыми переменными кадра данных?

Вот выдержка из моего кадра данных:

>>> df1.head(3)
    Sexe    date_naissance  Groupe_dage     ville   Statut_marital  Niveau_de_scolarite     Situation_professionnelle   Autre_situation_professionnelle     Revenu_mensuel  Si_connexion_internet   Canal_acces_info    Autre_canal_acces_info  Si_situtation_ville_degradee    Si_intention_emigration     Besoin_Sante    Besoin_Education    Besoin_Conditions_de_vie    Besoin_Lutte_contre_criminalite     Besoin_Emploi   Besoin_Lutte_contre_corruption  Besoin_Eau_potable  Besoin_Infrastructures  Besoin_Culture_art  Besoin_Amelioration_services_publics    Besoin_Acces_logement   Besoin_Autres_besoins   Non_declaration_besoins     Autres_besoins  Si_connait_president_commune    Si_connait_parlementaires   Si_inscrit_LE   Si_vote_2016    Intention_vote_2021     Consentement    Langue_du_questionnaire     region  id_reg  status  nbr_app     adherent
0   Une femme   1964-04-15  Entre 45 et 54 ans  Al Hoceima  Marié et je n'ai pas encore d'enfants à charge    1er cycle universitaire / Licence   Je suis independent     NaN     5,000-7,499 DHS     Oui     Internet    NaN     Je suis d'accord    Je ne suis pas d'accord     True    False   True    False   True    False   False   False   False   False   False   False   False   NaN     Oui     Oui     Oui     Oui     Je sais déjà pour qui je vais voter en 2021   J'accepter d'être recontacté  Arabe   Tanger-Tetouan-Al Hoceima   1.0     Qualifié   3.0     True
1   Une femme   NaN     Entre 18 et 24 ans  Tétouan    Célibataire    1er cycle universitaire / Licence   Je suis journalier, je travaille de temps à a...   NaN     1-2,499 DHS     Non     Internet    NaN     Je suis d'accord    Je suis d'accord    True    True    False   False   True    False   False   False   False   False   False   False   False   NaN     Oui     Non     Non     NaN     Je ne voterai pas en 2021   Non     Arabe   Tanger-Tetouan-Al Hoceima   1.0     NaN     NaN     NaN
2   Un homme    NaN     Entre 25 et 34 ans  Khenifra    Marié et j'ai des enfants à charge    Niveau lycée   Je suis journalier, je travaille de temps à a...   NaN     Je préfére ne pas répondre   Non     Télévision    NaN     Je suis d'accord    Je suis d'accord    True    False   True    False   True    False   False   False   False   False   False   False   False   NaN     Oui     Non     Non     NaN     Je vais voter en 2021 mais je ne sais toujours...   J'accepter d'être recontacté  Arabe   Beni Mellal-Khenifra    5.0     Na veut pas répondre   2.0     NaN

Моя попытка

После этого руководства по категориальному кодированию Я попробовал следующее:

# for each column where dtype is object
for column in df1.columns:
    if df1[column].dtypes == np.object:
        df1[column] = df1[column].astype('category')
        df1[column] = df1[column].cat.codes

#Using Pearson Correlation
cor = df1.corr()

mask = np.zeros_like(cor, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True
plt.figure(figsize=(12,10))
sns.heatmap(cor,
            vmin=-1,
            cmap='coolwarm',
            annot=False,
            mask = mask);

Я думаю, это не имеет смысла, поскольку я делаю корреляцию между категориальными переменными или числовыми и категориальными переменными.

...