2017-02-09 1 views
3

私はたくさんの投稿を表すデータセットを持っています。各投稿は4つのカテゴリと6つの結果のいずれかを持つことができます。pandas/matplot libを使用して2列のカテゴリデータをプロット/管理する方法は?

私がしたいことは、4つのカテゴリのそれぞれで6つのタイプのうちどれだけの結果が得られているかです。

私は必要なカウント/ wの3列のデータフレームを取得するには

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

を使用。 私がしたいのは、すべてのカテゴリの複数の棒グラフをプロットすることです.xticksがカテゴリで、各カテゴリにすべての結果が6つの棒が表示されます。

どうすればこの問題を解決できますか?

答えて

2

データフレームから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() 

enter image description here

関連する問題