【问题标题】:How to plot/manage 2 column categorical data using pandas/matplot lib?如何使用 pandas/matplotlib 绘制/管理 2 列分类数据?
【发布时间】:2017-06-28 03:06:12
【问题描述】:

我有一个代表一堆帖子的数据集。每个帖子可以有 4 个类别和 6 个结果中的任何一个。

我要做的是查看 4 个类别中的每个类别的所有 6 种类型有多少结果。

我用过

df = df.groupby(["Category", "Result"]).size().reset_index(name='Count')

获得一个包含必要计数的 3 列数据框。 我想做的是为所有类别绘制一个多条形图,这样 xticks 就是类别,每个类别有 6 个条形图来表示所有结果。

我怎样才能做到这一点?

【问题讨论】:

    标签: python pandas numpy matplotlib


    【解决方案1】:

    从数据框创建pivot table 可能是个好主意。使用内置的绘图功能可以轻松绘制生成的表格。

    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    cats = np.array([l for l in "ABCD"], dtype=str)
    cats = np.random.choice(cats, 100, p=[0.3, 0.1, 0.4, 0.2])
    
    res = np.random.choice(np.arange(1,7), 100, p=[0.2, 0.1, 0.08, 0.16,0.26,0.2])
    df = pd.DataFrame({"Category":cats, "Result":res})
    df2 = df.groupby(["Category", "Result"]).size().reset_index(name='Count')
    
    
    df3 = pd.pivot_table(df2,  values='Count',  columns=['Result'],  index = "Category",
                             aggfunc=np.sum,  fill_value=0)
    df4 = pd.pivot_table(df2,  values='Count',  columns=['Category'],  index = "Result",
                             aggfunc=np.sum,  fill_value=0)
    
    fig, ax = plt.subplots(1,2, figsize=(10,4))
    df3.plot(kind="bar", ax=ax[0])
    df4.plot(kind="bar", ax=ax[1]) 
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2015-09-10
      • 1970-01-01
      • 2019-08-14
      • 2020-06-20
      • 2019-11-05
      • 1970-01-01
      • 2023-03-16
      • 2014-05-29
      • 2017-08-04
      相关资源
      最近更新 更多