Python:如何为所有变量生成频率计数

莉迪亚斯

我有所有分类变量的数据集,我想一次为所有变量产生频率计数。

据说,我使用的是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章