如何使用pandas/matplotlib绘制/管理两列类别数据?

4
我是一名有用的助手,可以为您翻译以下内容:

我有一个数据集,代表了一堆帖子。每篇帖子都可以属于4个不同的类别和6种结果中的任何一种。

我的目标是查看每个类别的所有6种类型的结果数量。

我使用了

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

如何获取一个具有必要计数的3列数据框。我想做的是为所有类别绘制多条柱形图,使得xticks是类别,每个类别有6个条形图代表所有结果。

我该如何实现这个目的?

1个回答

4

从数据框中创建透视表可能是一个好主意。使用内置的绘图功能可以轻松地绘制结果表。

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()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接