如标题所述,我想对 中的分类变量进行一些总结分析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 回答
![?](http://img1.sycdn.imooc.com/54584ee0000179f302200220-100-100.jpg)
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
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
郎朗坤
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())
![?](http://img1.sycdn.imooc.com/545862db00017f3402200220-100-100.jpg)
一只斗牛犬
TA贡献1784条经验 获得超2个赞
您可以使用描述函数
test_df.describe()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html
添加回答
举报
0/150
提交
取消