python - 同时检查多个分类列的值
问题描述
我有多个分类列,例如婚姻状况、教育、性别、城市,我想一次检查这些列中的所有唯一值,而不是每次都编写此代码。
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 中有什么方法可以做到这一点吗?谢谢
解决方案
是的,您可以通过以下方法获得您正在寻找的内容(您也不必担心您的df
数据是否超过您指定的 4 列):
- (仅)从您的
df
in 中获取所有分类列list
:
cat_cols = [i for i in df.columns if df[i].dtypes == 'O']
- 然后,在分类列上对分组对象运行
loop
执行,并将每个结果(这是一个对象)存储在一个空的..size()
df
list
li = []
for col in cat_cols:
li.append(df.groupby([col]).size().reset_index(name=col+'_count'))
- 最后,
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
推荐阅读
- php - 确定 JSON 中给出的属性是否为数组
- xaml - Xamarin 自定义面板:缺少大小类型。我需要哪些参考资料?
- ruby-on-rails - 如何在 rails 中使用 params[:search] 作为输入?
- python - 将两个日期时间对象转换为每月日期时间范围
- vue.js - 如何在 VueJS 中全局覆盖第 3 方组件的属性
- javascript - 如何使用 --outDir TypeScript compilerOptions
- neo4j - 在 neo4j 中获取用户时间轴上的聚合消息
- sql - SQL - SAP HANA - 仅使用列表中的第一个条目(基于日期/时间)
- javascript - 间隔太慢
- python - 尝试使用 Selenium 从网站上的所有产品生成链接