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

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


慕少森
浏览 108回答 3
3回答

Smart猫小萌

您可以使用 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

郎朗坤

您可以使用该unique()方法获取列的各个值的列表,例如:test_df['x'].unique()要获取列中值出现的次数,您可以使用value_counts():test_df['x'].value_counts()所有列的简化循环DataFrame可能如下所示:for col in list(test_df):   print('variable:', col)     print(test_df[col].value_counts(dropna=False).to_string())

一只斗牛犬

您可以使用描述函数test_df.describe()https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python