2017-12-14 54 views
1

サンプル・データのpythonでの非数値変数のヒストグラムを作成する方法

import pandas as pd 
import matplotlib.pyplot as plt 

dummy = {'id': [1,2,3,4,5], 
     'brand': ['MS', 'Apple', 'MS', 'Google', 'Apple'], 
     'quarter': ['2017Q2', '2017Q2', '2017Q2', '2016Q1', '2015Q1']} 

dummyData = pd.DataFrame(dummy, columns = ['id', 'brand', 'quarter']) 
dummyData 


# id brand quarter 
# 0 1 MS  2017Q2 
# 1 2 Apple 2017Q2 
# 2 3 MS  2017Q2 
# 3 4 Google 2016Q1 
# 4 5 Apple 2015Q1 

は今、私はmatplotlibのとパンダ、ここでの説明

  • X軸を使用してヒストグラムをPLATしたいです:四半期
  • Y軸:値の数
  • ヒストグラムビン:2017Q2のようなブランドで塗られています。MSとAppleの2色の値があります
  • 伝説:ブランド名

私はRの背景とそのとても簡単使用ggplotを持って、私はPythonで同じことをやってみたいが、私は任意の適切なコードを見つけていないです、私が言及したエラー

の下に取得しています
TypeError: Empty 'DataFrame': no numeric data to plot 
+0

エラーを投げるコードはなんですか? – timgeb

+0

このエラーにつながるコードを示してください。 – Cleb

+1

Rでggplotの出力がどのように見えるか教えてください。 –

答えて

2

IIUCは、使用することができますgroupby + count + unstack + plot -

plt.style.use('ggplot') 

dummyData.groupby(['quarter', 'brand'])\ 
     .brand.count().unstack().plot.bar(legend=True) 

plt.show() 

enter image description here

これはプロットされたものです -

brand Apple Google MS 
quarter      
2015Q1  1.0  NaN NaN 
2016Q1  NaN  1.0 NaN 
2017Q2  1.0  NaN 2.0 
+0

私はグループを逃して数値に変換しましたが、Rはそのようなグループを必要としませんでしたので、ここでも期待しませんでした。返信ありがとう – Vineet

+0

@Vineetよろしくお願いします。私はあなたがRから来た 'ggplot'スタイルのプロットも感謝すると思いました。 –

2

私はunstackcrosstabにより再形成、その後、あなたはsizegroupbyが必要と考えています。

最終プロットDataFrame.plot.barによって:

df = dummyData.groupby(['quarter','brand']).size().unstack(fill_value=0) 
#alternative solution 
#df = pd.crosstab(dummyData['quarter'], dummyData['brand']) 
print (df) 
brand Apple Google MS 
quarter     
2015Q1  1  0 0 
2016Q1  0  1 0 
2017Q2  1  0 2 

df.plot.bar() 

graph

+0

返事をありがとう、私はそれを数値に変換する 'グループ'がありませんでした... – Vineet

+0

あなたは歓迎です、素敵な一日! – jezrael

関連する問題