我有所有分类变量的数据集,我想一次为所有变量产生频率计数。
据说,我使用的是Iris数据集函数,df['class'].value_counts()
只允许我计算一个变量。
分析数据集的所有变量仅包括通过Pandas作为csv提取的分类变量。我正在考虑只提取第一行并放入for循环中。为了从csv文件中提取第一行,我们使用将csv转换为dataframe data = pd.DataFrame(data)
。但是,data[0]
会产生错误。
为所有变量生成频率分析或条形图的最有效方法是什么?
具有分类变量的样本数据集:
Mary John David Jenny
a t y n
a t n y
a u y y
a u n y
a u n n
b t y n
方法1
df.apply(lambda x: x.value_counts()).T.stack()
输出:
Mary a 5.0
b 1.0
John t 3.0
u 3.0
David n 3.0
y 3.0
Jenny n 3.0
y 3.0
dtype: float64
方法2
df.apply(pd.value_counts).T.fillna(0)
输出量
a b n t u y
Mary 5.0 1.0 0.0 0.0 0.0 0.0
John 0.0 0.0 0.0 3.0 3.0 0.0
David 0.0 0.0 3.0 0.0 0.0 3.0
Jenny 0.0 0.0 3.0 0.0 0.0 3.0
然后,您可以简单地使用以下o创建条形图。
df.apply(pd.value_counts).T.stack().plot(kind='bar')
输出:
或者,您可以使用:
df.apply(pd.value_counts).fillna(0).T.plot(kind='bar')
输出:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句