首页 > 解决方案 > pandas 分类变量汇总

问题描述

如标题所述,我想对 中的分类变量进行一些总结分析pandas,但搜索了一段时间没有找到令人满意的解决方案。所以我开发了下面的代码作为一种自我回答问题,希望有人能帮助改进。

test_df = pd.DataFrame({'x':['a', 'b','b','c'],
                        'y':[1, 0, 0, np.nan],
                        'z':['Jay', 'Jade', 'Jia', ''],
                        'u':[1, 2, 3, 3]})
def cat_var_describe(input_df, var_list):
    df = input_df.copy()
    # dataframe to store result
    res = pd.DataFrame({'var_name', 'values', 'count'})
    for var in var_list:
        temp_res = df[var].value_counts(dropna=False).rename_axis('unique_values').reset_index(name='counts')
        temp_res['var_name'] = var
        if var==var_list[0]:
            res = temp_res.copy()
        else:
            res = pd.concat([res, temp_res], axis=0)
    res = res[['var_name', 'unique_values', 'counts']]
    return res

cat_des_test = cat_var_describe(test_df, ['x','y','z','u'])
cat_des_test

任何有用的建议将不胜感激。

标签: pythonpandas

解决方案


您可以使用 pandas DataFramedescribe()方法。 describe()默认情况下仅包括数字数据。要包含分类变量,您必须使用include参数。

using'object'仅返回非数值数据

 test_df.describe(include='object')

using返回统计数据不适合数据类型'all'的所有列的摘要NaN

 test_df.describe(include='all')

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html


推荐阅读