散布図


量的変数と量的変数

二項目間の散布図

matplotlib

import matplotlib.pyplot as plt

# columnsの2項目から散布図作成
plt.scatter(df['column1'], df['column2'])
# 横軸と縦軸のラベルを追加
plt.xlabel('column1')
plt.ylabel('column2')
plt.show()

# column1とcolumn2の相関係数
print(df[['column1', 'column2']].corr())

seaborn

import seaborn as sns

sns.scatterplot(data=df, x="column1", y="column2")

# column1とcolumn2の相関係数
print(df[['column1', 'column2']].corr())

量的変数の散布図+質的変数

sns.scatterplot(data=df, x="column1", y="column2", hue="y")
# hue="y"は色で区別/style="y"で形で区別
# 重なりが多い場合 alpha = 0~1 で濃度調整

# column1とcolumn2の相関係数
print(df[['column1', 'column2']].corr())

量的変数の散布図+量的変数(バブルチャート)

import seaborn as sns

sns.scatterplot(data=df, x="column1", y="column2", hue="y", size="column3", sizes=(10,200))

# scatterplot関数の引数sizeに量的変数を指定する
# sizesではplotの大きさ範囲を指定
# alpha=0~1で濃度調整

# ageとbalanceの相関係数
print(df[['column1', 'column2']].corr())

凡例項目の外出し

ax = sns.scatterplot(data=df, x="column1", y="column2", hue="y", size="column3", sizes=(10,200))
ax.legend(loc="upper left", bbox_to_anchor=(1,1))

print(df[['column1', 'column2']].corr())

plotly

# pip install plotly

import plotly.express as px

fig=px.scatter(df,x="column1", y="column2", size ="column3", color="y",size_max=30)
fig.show()

ジョイントプロット

import seaborn as sns

sns.jointplot(data=df, x="column1", y="column2",marginal_kws={"bins":10})
# ヒストグラムの本数を指定する marginal_kws={"bins":本数}
# 色の指定:color
# kind="hex" でplotから六角形のビン表示になる。濃度がプロットの密度を表す。
# hueを引数には持てない模様


# column1とcolumn2の相関係数
print(df[['column1', 'column2']].corr())

# 相関係数とp値の表示
sns.jointplot(data=df, x="column1", y="column2",marginal_kws={"bins":10}).annotate(stats.pearsonr)

# 表示枠消し
sns.jointplot(data=df, x="column1", y="column2",marginal_kws={"bins":10}).annotate(stats.pearsonr, frameon=False)

散布図行列

2つの項目間の関係を一括で表示する

matplotlib

import matplotlib.pyplot as plt

# 散布図行列の描画
pd.plotting.scatter_matrix(df[['column1','column2','column3','column4']])
plt.tight_layout()
plt.show()

散布図行列→相関係数行列→heatmap

import seaborn as sns
sns.pairplot(data=df[['column1','column2','column3','column4',"y"]],hue="y", diag_kind = "hist")
plt.show()

# ここでも hue を引数にとって質的変数の分布を見ることができる
# 質的変数ごとに色分けを指定する場合:palette={'yes': 'red','no':'blue'}
# plotするmarkerを指定する場合markers='+' / markers=['+', 's', 'd']

# 対角成分のプロット ヒストグラム:diag_kind = "hist" / カーネル密度推定 diag_kind = "kde"

# plotの濃度調整:alpha=0~1

# 二項目間の散布図に回帰直線を書く:kind='reg'

# 出力グラフサイズの指定:height=2

# グラフ化する列を指定する:x_vars=['column1', 'column2'],y_vars=['column1', 'column2']

# 指定するdf内にhueに指定したいobject型データが必要
# sns.pairplot(df[['column1','column2','column3','column4']],hue="y") だとエラー

# type(df[['column1','column2','column3','column4',"y"]]) # pandas.core.frame.DataFrame

# 出力したpairplotを.pngで保存
# sns.pairplot(df[['column1','column2','column3','column4',"y"]],hue="y").savefig('file.png')

# 相関係数行列
corr = df[['column1','column2','column3','column4',"y"]].corr(method="pearson")
print(corr)

# 相関係数行列からheatmapを作る
sns.heatmap(corr, cmap='coolwarm', annot=True)
plt.show()
# annnotで相関係数の記載のオンオフ

量的変数と質的変数

import seaborn as sns

sns.catplot(data=df,x="category1", y="column1",hue="y",alpha=0.5)