はじめに
KaggleのCoursesにて、seaborn
を使ったデータの可視化について学びました。Data Visualization
復習と後から確認できるように各グラフの使い方を一覧にまとめます。
ライブラリのimport
import pandas as pd
# pandas+Matplotlibでdatetime型のデータを扱う場合、以下を実行しないと警告が出る。
# 扱うデータにdatetimeが無いのであればいらない。
pd.plotting.register_matplotlib_converters()
# notebook上で出力行にグラフを表示するためのおまじない。
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
折れ線グラフ(Line Chart)
折線グラフはlineplot()
にて定義します。引数data
に表示対象のデータを指定します。
列指定することで、その列だけをプロットして表示可能です。
# データを読み込みします。
# 使用するデータ:https://www.kaggle.com/varpit94/dogecoin-data
# 大きすぎるので最初の10行だけ。
coin_data = pd.read_csv("./DOGE-USD.csv", index_col="Date")[:10]
# グラフ描画時のサイズを指定します。
plt.figure(figsize=(10,6))
# 折線グラフを描画
# 今回の例では"Volume"列を対象に先頭10行だけを表示しています。
sns.lineplot(data=coin_data["Volume"])
# 2列以上表示したい場合の例
plt.figure(figsize=(10,6))
sns.lineplot(data=coin_data["Open"])
sns.lineplot(data=coin_data["High"])
棒グラフ(Bar Chart)
棒グラフはbarplot()
を使用します。
x
にx軸となる列のデータを、y
にy軸になる列のデータを指定します。
# グラフ描画時のサイズを指定します。
plt.figure(figsize=(10,6))
sns.barplot(x=coin_data.index, y=coin_data.Volume)
ヒートマップ(Heatmap)
ヒートマップの表示にはheatmap()
を使用します。
引数data
に対象のデータを指定します。
引数annot
にTrue
を指定したとき、マップ上に数値を表示します。
plt.figure(figsize=(10,6))
# ヒートマップ
sns.heatmap(data=coin_data, annot=True)
散布図(Scatter Plot)
散布図はscatterplot()
を使用します。
X軸にはx
、Y軸にはy
の各引数にデータを指定します。
# データを変えます。
# 使用するデータ:https://www.kaggle.com/adityakadiwal/water-potability
water_data = pd.read_csv('./water_potability.csv')
plt.figure(figsize=(10, 6))
sns.scatterplot(x=water_data['ph'], y=water_data['Hardness'])
回帰直線を表示したい場合、regplot()
を使用します。
plt.figure(figsize=(10, 6))
sns.regplot(x=water_data['ph'], y=water_data['Hardness'])
引数hue
に別変数を指定することで、色によるプロットができます。
sns.scatterplot(x=water_data['ph'], y=water_data['Hardness'], hue=water_data['Potability'])
回帰線を表示したい場合、lmplot()
という関数も使用できます。
引数について、先のscatterplot()
と異なりdata
に対象のデータを指定します。
また、x
、y
、hue
には列名を指定します。
sns.lmplot(x='ph', y='Hardness', hue='Potability', data=water_data)
また、swarmplot()
を使用することでカテゴリカル散布図
を図示できます。
sns.swarmplot(x=water_data['Potability'],
y=water_data['Hardness'])
ヒストグラム(Histogram)
ヒストグラムを表示する際はdistplot()
を使用します。
引数a
に対象のデータを指定します。
kde
はカーネル密度推定のプロットを表示させるかどうかの設定になります。
sns.distplot(a=water_data['ph'], kde=False)
# kde=Trueの場合
sns.distplot(a=water_data['ph'], kde=True)
密度プロット(Density plot)
カーネル密度推定プロット(KDE)を作成するにはkdeplot()
を使用します。
引数data
に対象のデータを指定します。
shade
はプロットした線の下部分を色塗りするかどうかの設定です。
sns.kdeplot(data=water_data['ph'], shade=True)
2次元のKDEプロット
2次元でのKDEプロットもできます。
引数x
にX軸となるデータ、y
にY軸となるデータを指定します。
# 2次元でも書ける
sns.kdeplot(x=water_data['ph'], y=water_data["Hardness"])
各グラフの用途
データを可視化する際、見たい物によって使用するグラフが決まります。
引用元:Choosing Plot Types and Custom Styles
-
傾向 - 変化の傾向を見たい時。
-
sns.lineplot
- 折れ線グラフは一定期間の傾向を表示することに適している。
-
-
関係 - データ内の変数間の関係を理解するために使用できる、さまざまな種類のチャートがあります。
-
sns.barplot
- 棒グラフは、異なるグループに対応する量を比較するのに便利です。 -
sns.heatmap
- ヒートマップは、数値の表に色分けされたパターンを見つけるのに使用できます。 -
sns.scatterplot
- 散布図は、2つの連続変数の関係を示します。色分けされていれば、3つ目のカテゴリー変数との関係も示すことができます。 -
sns.regplot
- 回帰線を散布図に含めることで、2つの変数間の線形関係を簡単に見ることができます。 -
sns.lmplot
- このコマンドは、散布図に色分けされた複数のグループが含まれている場合、重回帰線を描くのに便利です。 -
sns.swarmplot
- カテゴリー散布図は、連続変数とカテゴリー変数の関係を表示します。
-
-
分布 - 分布を視覚化して、変数に見られる可能性のある値と、その可能性を示します。
-
sns.distplot
- ヒストグラムは、1つの数値変数の分布を表示します。 -
sns.kdeplot
- KDEプロット(または2D KDEプロット)は、1つの数値変数(または2つの数値変数)の推定された滑らかな分布を表示します。
-