为了账号安全,请及时绑定邮箱和手机立即绑定

pandas 分类变量总结

pandas 分类变量总结

慕少森 2023-10-11 21:32:24
如标题所述,我想对 中的分类变量进行一些总结分析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 rescat_des_test = cat_var_describe(test_df, ['x','y','z','u'])cat_des_test任何有用的建议将不胜感激。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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


查看完整回答
反对 回复 2023-10-11
?
郎朗坤

TA贡献1921条经验 获得超9个赞

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


查看完整回答
反对 回复 2023-10-11
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

查看完整回答
反对 回复 2023-10-11
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信