2016-03-26 22 views
4

することにより、グループでパンダと積み重ねられたヒストグラムをプロット:私は高さと幅の積み重ねヒストグラムを視覚化したいは、私は次のように見えるのデータセットで働いています

Gender, Height, Width Male, 23.4, 4.4 Female, 45.4, 4.5

。私はプロットごとに2つのヒストグラムを積み重ねることを望んでいます(各性別ごとに1つ)。

これはドキュメントの積み重ねヒストグラムです。 3つの性別がある場合、これは幅の良いグラフかもしれません。

enter image description here

私は時間のために、この時に私の頭を非難してきた、あなたは私が何を意味するか理解してほしいです。

答えて

0

次のコード

from StringIO import StringIO 

s = StringIO("""Gender, Height, Width 
Male, 23.4, 4.4 
Female, 45.4, 4.5""") 

import pandas as pd 

df = pd.read_csv(s, header=0).set_index('Gender') 
df.T.plot.bar(stacked=True); 

は、例えば、表情で再生すると、あなたは多くのことを行うことができ感じるために、この

enter image description here

を生成(hereを参照)

import matplotlib 
matplotlib.style.use('ggplot') 

またはseabornを試してみてください。あなたはこのような何かを行うことができ、列に別々のプロットについては


、:

from StringIO import StringIO 

s = StringIO("""Gender, Height, Width 
Male, 23.4, 4.4 
Female, 45.4, 4.5""") 

import pandas as pd 

df = pd.read_csv(s, header=0).set_index('Gender').T 

subplot(2, 1, 1) 
hist(df.Male.values); 
subplot(2, 1, 2) 
hist(df.Female.values); 

(残念ながら、私は今ではない、私はそのようなことを実行できるコンピュータで、そう後者のスニペットは、可能性があります

+0

を私が各列の多峰性を調べることができるように。 –

+0

@unkown update –

+0

を参照してくださいありがとうございますが、私はこれを受け取ります: 'UserWarning:2D hist inputはnsamples x nvariables; –

5

あなたの例では、データフレームに3つの別々の列があり、df.hist()は3つの列に対して3つのヒストグラムを生成しています。あなたのデータ構造は少し異なります。あなたはmatplotlibの直接使用したい場合、あなたはこれを試すことができます。

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
np.random.seed(10) 
df = pd.DataFrame({"Gender":np.random.choice(["Female", "Male"], 1000), 
       "Height": 30+np.random.randn(1000)*5, 
       "Width": 5+np.random.randn(1000)}) 
df.loc[df["Gender"]=="Male", "Height"] = df.loc[df["Gender"]=="Male", "Height"] + 8 

plt.hist(df[df["Gender"]=="Male"]["Height"].reset_index(drop=True), alpha=0.6, label="Male") 
plt.hist(df[df["Gender"]=="Female"]["Height"].reset_index(drop=True), alpha=0.6, label="Female") 
plt.legend() 
plt.show() 

これは、このようなヒストグラムを作成します:、私は実際には各列のための独立したヒストグラムを取得するのが大好きだ

enter image description here

関連する問題