首页 > 解决方案 > 同时检查多个分类列的值

问题描述

我有多个分类列,例如婚姻状况、教育、性别、城市,我想一次检查这些列中的所有唯一值,而不是每次都编写此代码。

df['Education'].value_counts()

我只能举几个特性的例子,但是当有这么多分类特性并且不可能一次又一次地编写代码来检查它们时,我需要一个解决方案。

Maritial_Status Education City
Married         UG        LA
Single          PHD       CA
Single          UG        Ca

预期输出:

Maritial_Status   Education  City
Married        1  UG       2 LA  1 
Single         2  PHD      1 CA  2

在 Python 中有什么方法可以做到这一点吗?谢谢

标签: pythonpandasjupyter-notebook

解决方案


是的,您可以通过以下方法获得您正在寻找的内容(您也不必担心您的df数据是否超过您指定的 4 列):

  1. (仅)从您的dfin 中获取所有分类列list
cat_cols = [i for i in df.columns if df[i].dtypes == 'O']
  1. 然后,在分类列上对分组对象运行loop执行,并将每个结果(这是一个对象)存储在一个空的..size()dflist
li = []
for col in cat_cols:
    li.append(df.groupby([col]).size().reset_index(name=col+'_count'))
  1. 最后,concat将您的列表中新创建dataframes的,放入 1。
dat = pd.concat(li,axis=1)

全部在 1 块中

cat_cols = [i for i in df.columns if df[i].dtypes == 'O']

li = []
for col in cat_cols:
    li.append(df.groupby([col]).size().reset_index(name=col+'_count'))

dat = pd.concat(li,axis=1)# use axis=1, so that the concatenation is column-wise

  Marital Status  Marital Status_count  ...       City  City_count
0       Divorced                   4.0  ...     Athens           4
1        Married                   3.0  ...     Berlin           2
2         Single                   3.0  ...     London           2
3        Widowed                   2.0  ...   New York           2
4            NaN                   NaN  ...  Singapore           2

推荐阅读