#27回 散布図

>100 Views

September 15, 23

スライド概要

このセクションでは、x軸、y軸の値のペアで1つの実数が決る2変数の散布図の描き方を習得していきます。

ヒストグラムは、単変数のデータの分布を見るために用いましたが、散布図は2つの変数の分布を見るために用います。その分布をみることによって、相関の有無を点の散らばりから確認することができます。また、大きく異なったデータ(外れ値)の存在を確認することもできます。

それらを実現するプログラムは下記の3つです。

70 sns.scatterplot(data=データ名, x="列名1", y="列名2")

71 sns.scatterplot(data=データ名, x="列名1", y="列名2“, hie=“列名3”)

72 plt.legend(loc=‘位置’)


散布図を描くための「scatterplot」は、「lineplot」、「histplot」、「catplot」、「countplot」と同様に、「hue」を使ってサブグループに分け、それらを色分けすることができます。

また、グラフの凡例の位置を指定するには、「plt.legend(loc=‘位置’)」を使います。これは、他のグラフ描画のプログラムでも使えます。

1st STEP同様、動画のテキスト、追加情報は下記のブログを参考にしてください!

■この動画のブログ

●データサイエンス チュートリアル
 https://tutorial4datascience.blogspot.com/

■凡例をグラフ外に表示したり、フォントの変更等を詳しく知りたい場合は、「Pythonアカデミー」の下記のページを参考にしてください。

【matplotlib】凡例(legend)を表示する方法【位置変更、フォント変更、サイズ変更】
https://python-academia.com/matplotlib-legend/

profile-image

すべてのビジネスパーソンが意思決定プロセスにデータを活用する思考を身につけ、ブルシットジョブをこの世からなくしていきましょう!

関連スライド

各ページのテキスト
1.

1 2nd STEP 集計とグラフ描画 Section 25 散布図 70 sns.scatterplot(data=データ名, x="列名1", y="列名2") 71 sns.scatterplot(data=データ名, x="列名1", y="列名2“ , hie=“列名3”) 72 plt.legend(loc=‘位置’)

2.

2 Section 25 散布図 1.scatterplot このセクションでは、x軸、y軸の値のペアで1つの実数が決る2変数の散布図の描き方を習 得していきます。 ヒストグラムは、単変数のデータの分布を見るために用いましたが、散布図は2つの変数の分 布を見るために用います。その分布をみることによって、相関の有無を点の散らばりから確認 することができます。また、大きく異なったデータ(外れ値)の存在を確認することもできます。 この2変数の散布図をグラフにするには、「scatterplot」を用います。( )内の引数は、主なもの は他のグラフ関数と変わりません。 70 sns.scatterplot(data=データ名, x="列名1", y="列名2") 相関なし 正の相関 負の相関

3.

3 Section 25 散布図 2.scatterplotでも使えるhue 「scatterplot」は、「lineplot」、「histplot」、「catplot」、「countplot」と同様に、 「hue」を使ってサブグループに分け、それらを色分けすることができます。 71 sns.scatterplot(data=データ名, x="列名1", y="列名2“, hie=“列名3”) この際、警告で「UserWarning:Creating legend with loc=“best” can be slow with large amounts of data.」と出ることがあります。この警告が出ると、グラフの描画に時 間がかかってしまいます。このような時は、凡例の位置を指定する必要があります。 71に続けて、下記の72で凡例の位置を指定すれば、グラフを描画するスピードが速くなります。 72 plt.legend(loc=‘位置’) 凡例の位置を指定する方法は、他の「seaborn」のグラフ関数にも使えます。 「‘位置’」の指定の方法は、次の「参考」を参照してください。

4.

4 Section 25 散布図 参 考 「plt.legend(loc=‘位置’)」の位置には、下記の文字列、番号を入れて凡例の位置を指 定することができます。 位置 文字列 番号 0 最適(極力重ならない位置)。デフォルト best 右上 upper right 1 左上 upper left 2 左下 lower left 3 右下 lower right 4 右中央。下位互換用 right 5 左中央 center left 6 右中央 center right 7 下中央 lower center 8 上中央 upper center 9 画面中央 center 10 凡例をグラフ外に表示したり、フォントの変更等を詳しく知りたい場合は、「Pythonアカデミー」 の下記のページを参考にしてください。 【matplotlib】凡例(legend)を表示する方法【位置変更、フォント変更、サイズ変更】 https://python-academia.com/matplotlib-legend/

5.

5 Section 25 散布図 70 sns.scatterplot(data=データ名, x="列名1", y="列名2") まずは、「scatterplot」で散布図を描いてみます。x軸に「Quantity」、y軸に「Total」を指定 します。 この場合、x軸、y軸の範囲を指 定していませんが、x軸、すなわち 購入数量がマイナスである値が 存在することがわかります。 返品されたものでしょか。

6.

6 Section 25 散布図 70 sns.scatterplot(data=データ名, x="列名1", y="列名2") Section7「⑭ データ名[“列名”].max(axis=0)」の応用で、「max」の代わりに「count」を 用いて「Quantity」の個数を求めてみると、371,734個あります。 前の散布図では、すべての数値を プロットしていないとわかりましたので、 Section 17「㊸ plt.ylim(最小 値,最大値)」を用いて、x軸、y軸 の範囲を狭めることにより、グラフを 拡大することができます。 結構、多くの返品がありますね。

7.

7 Section 25 散布図 71 sns.scatterplot(data=データ名, x="列名1", y="列名2“ , hie=“列名3”) 「scatterplot」では、「hue」も使えます。第1象限に絞って、グラフを描いてみます。 国別に色分けされましたが、なにやら、 警告が出てしまいました…。 しかもグラフ描画に時間がかかってい ます。

8.

8 Section 25 散布図 72 plt.legend(loc=‘位置’) 「hue」を使うと、警告で「UserWarning:Creating legend with loc=“best” can be slow with large amounts of data.」と出て、グラフ描画が遅くなることがあります。この場合、 凡例の位置を指定する必要があります。 「72 plt.legend(loc=‘位置’)」 を追加すると、グラフ描画が、34秒か ら19秒に短縮できました。