python - 如何获得数据框的分类变量和数值变量之间的关系?
问题描述
我有一个包含 49 列的数据框。它们中的大多数是分类的(dtype 对象),有些是数字的。由于我是数据科学的新手,我尝试绘制 Pearson 相关热图并查看自变量的相关性,但只考虑数字变量。
那么如何获得数据框的分类变量和数值变量之间的关系呢?
这是我的数据框的摘录:
>>> 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
我的尝试
按照this guide on categorical encoding,我尝试了以下方法:
# 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);
我想这没有意义,因为我正在做分类变量或数值和分类变量之间的相关性。
解决方案
推荐阅读
- jenkins - 詹金斯共享库:权限被拒绝(公钥)
- php - 在 HTML 选择更改后将值传递给 PHP
- node.js - $lookup 与整数类型字段?
- python-3.x - 如果满足条件,则将行值替换为另一列中的行值
- javascript - 根据年、月和日计算使用 Bootstrap Datepicker 设置的两个日期之间的差异
- mongodb - MongoDb:删除另一个数组中数组的索引
- c++ - 标准::向量
分配有 (n,0) 是不可迭代的 - python-3.x - Python 和 SQLite3:如何写入比表中的列少的值
- scala - 在 Scala 中添加两个地图的复杂性
- windows - 当我尝试启动 tomcat 服务器时,Docker 在构建期间挂起