Python

Python seaborn チュートリアル APIの概要 データ構造(2)

原文のドキュメントはこちらから。

ロングフォームデータを視覚化するためのオプション

ロングフォームデータには正確な定義がある。seabornはデータ構造をまたぎ、編成できる点で柔軟性がある。以下の例では、典型的にはpandas.DataFrameオブジェクトを使用し、その中の列の名前をプロット内の変数に代入し、その中の参照変数を使用。(Pythonの辞書やそのインターフェースを実装したクラスにベクトルを格納も可能)

import seaborn as sns
import matplotlib.pyplot as plt

flights = sns.load_dataset("flights")
flights_dict = flights.to_dict()
sns.relplot(data=flights_dict, x="year", y="passengers", hue="month", kind="line")
plt.show()

group-byのsplit-apply-combine操作のようなpandasの操作は、データが入力データフレームの列から出力のインデックスに移動したデータフレームを生成する。名前が保持されている限り、通常通りにデータを参照することができる。

import seaborn as sns
import matplotlib.pyplot as plt

flights = sns.load_dataset("flights")
flights_avg = flights.groupby("year").mean()
sns.relplot(data=flights_avg, x="year", y="passengers", kind="line")
plt.show()

x, y, その他のプロット変数への引数としてデータのベクトルを直接渡すことも可能。これらのベクトルがpandasオブジェクトである場合、name属性はプロットのラベル付けに使用される。

import seaborn as sns
import matplotlib.pyplot as plt

flights = sns.load_dataset("flights")
flights_avg = flights.groupby("year").mean()
year = flights_avg.index
passengers = flights_avg["passengers"]
sns.relplot(x=year, y=passengers, kind="line")
plt.show()

Numpyの配列やPythonのシーケンスインターフェイスを実装した他のオブジェクトも動作するが、それらに名前がない場合は、さらに手を加えないとプロットの情報量が少なくなる。

import seaborn as sns
import matplotlib.pyplot as plt

flights = sns.load_dataset("flights")
flights_avg = flights.groupby("year").mean()
year = flights_avg.index
passengers = flights_avg["passengers"]
sns.relplot(x=year.to_numpy(), y=passengers.to_list(), kind="line")
plt.show()