DataFrameの変換
Seabornでプロットする際のDataFrameの形について
パラメーターx
,y
には、それぞれ一つの列しか指定できない。
したがって、データを含むDataFrameの形に注意する必要がある。
- x軸に指定したいカテゴリは
列名
にせず、1列に含める。 - y軸に指定したい値は、複数列にせず1列にする。
以下は、Excelでデータをまとめる際によくありそうな形式の例。
プロットする際、このようなデータは以下のように形式に変換する必要がある。
変形のポイント
- カテゴリ1が2列目のみに全て含まれている。(変形前は2~4列目にまたがっていた)
- 値が3列目のみに全て含まれている。
- カテゴリ2(グループ分けしてプロットしたい時のみ使う)も同様に、4列目のみに全て含まれている。
変換方法
CSVからの読み込み
df = pd.read_csv('./data.csv', header=0, index_col=0)
入力データの形別でのDataFrame変換方法
2要素(値、カテゴリ1)のDataFrameの変換
df_sns = df.stack().reset_index()
df_sns.columns=['id', 'x_value', 'y_value']
3要素(値、カテゴリ1、カテゴリ2)のDataFrameの変換
ただし、読み込んだCSVファイル内のデータにおいて、
グループの列が一番右列にあり列名がgroup
になっている前提。
col_num = len(df.columns)-1
df_stack = df.iloc[:, 0:col_num].stack().reset_index()
df_stack.columns = ['id', 'x_value', 'y_value']
df_sns = df_stack.merge(df.loc[:,'group'], left_on='id', right_index=True ,how='left')