mkgreiさんが書かれている dataframe.groupby()
を使う方法が一番シンプルかと思いますが。。
一応、dataframe.pivot()
使っても書くことができます。
Python
1import pandas as pd
2import numpy as np
3import matplotlib.pyplot as plt
4# import seaborn as sns
5
6N=1000
7df = pd.DataFrame({'A': np.random.normal(10,3,N),
8 'B': np.random.choice([0,1],N)})
9
10ax=plt.subplot()
11df.pivot(columns='B', values='A').plot(kind='hist', bins=20, alpha=0.5, ax=ax)
12plt.show()
あとは単純に2つの条件を並べて
Python
1ax=plt.subplot()
2df[df.B==0].A.hist(bins=20, color='red', alpha=0.5, label='0', ax=ax)
3df[df.B==1].A.hist(bins=20, color='blue', alpha=0.5, label='1', ax=ax)
4ax.legend()
5plt.show()
でも十分かと個人的には思います。
matplotlibやseabornで同じことをやるための方法も教えてほしい
pandas.plot
を使わずにで書く方法は
Pyton
1ax=plt.subplot()
2ax.hist(df[df.B==0].A, bins=20, color='red', alpha=0.5, label='0')
3ax.hist(df[df.B==1].A, bins=20, color='blue', alpha=0.5, label='1')
4ax.legend()
5plt.show()
ですかね。
2つのグラフを重ねるのではなく並べて書く場合は
Python
1ax=plt.subplot()
2plt.hist([df[df.B==0].A, df[df.B==1].A], bins=20, label=[0,1], color=['red', 'blue'])
3ax.legend()
4plt.show()
となります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。