Python初心者 無料で学習を極める(5)
「機械学習のためのpython入門講座」SkillupAI様のday5目の講座から学んだことを記載していきます☆
本記事は、「あ!どんなふうにあれ使うっけ?」っと言うときに参考にしてもらえると嬉しいです。一通りpythonに慣れてきたら、実際のプログラムを載せるなどして皆さんと一緒にレベルアップができればと思います!
それでは五日目行ってみましょう!
day5:データの可視化 Matplotlib
Matplotlibとは
可視化を行うことは、前処理の方針を決定するためであり、
Matplotlibは、pythonのためのグラフ描画ライブラリ
Matplotlibの始め方
Matplotlibはライブラリであるため、始めにそれを使用することを宣言する必要があるため、インポート文の作成が必要となる
#Matplotlibを使用する際の決まり文句!
import matplotlib.pyplot as plt
#Jupyter notebook であれば必要な宣言。jupyter notebook上でグラフを描画しますよ~。といった宣言文
%matplotlib inline
Matplotlibのステップ
Matplotlibのステップは複数あります。順を追って説明をしていきます。
ステップ1:どのサイズのグラフにするか?
#figsize = X,Y のXは inch 表記です。
#Xは横、Yは縦 に合わせた状態が必要となります。
#例では 4inch 4inch との意味となります。
plt.figure(figsize = (4,4))
ステップ2:どんな数字が入りますか?
#plot.plot([ Xの値 ], [ Yの値 ], label = " 凡例 " ) の表記です
#label の名前を付けるとこのプロットされたデータの名前を付けた事になる
plt.plot([0,2,4,6,8], [0,6,12,24,48], label="graph")
ステップ3:見た目をキレイにしましょう。
#plt.xlabel(" X軸の名前")
plt.xlabel("x axis")
#plt.ylabel(" Y軸の名前")
plt.ylabel("y axis")
#plt.title("グラフの名前")
plt.title("title")
#plt.legend() は、グラフ上に凡例を表示させることを意味する
plt.legend()
ステップ4:グラフを表示しましょう!
plt.sow()
#以上でグラフの表示が完成!
★演習1:描写しよう
3つの数式に合わせて、描写を行ってみましょう!出力結果も添付しております。
#私が書いたコードはこんな感じでした。
#悪い点は、 pandas 使っていないのに宣言。笑。
#ここまでくると、自分もプログラム書けた気がする感を感じますね☆
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0,10,101)
y = x**2
z = (x-1)**3
w = ((x-2)*(x-4))*2
plt.figure(figsize = (10,5))
plt.plot(x,y,label="x^2")
plt.plot(x,z,label="z=(x-1)^3")
plt.plot(x,w,label="(w=(x-2)(x-4))^2")
plt.legend()
plt.show()
見せ方の観点でワンポイントアップ!
技1)複数のグラフを別々に描く
#横一列に3つのグラフを描く ことを考えると
subplot(1,3,1) #グラフの左側
subplot(1,3,2) #グラフの真ん中
subplot(1,3,3) #グラフの右側
となります。1行3列の領域に一つずつグラフを描くことをイメージしましょう!
技2)プロットのグラフ同士の重なりを防ぐ
#グラフ同士の間隔が合わずに見苦しく見える事があります。その為、
plt.tight_layout()
これを用いることで、きれいな等間隔でプロットがされます!
技3)プロットする線の色を変える
#pltplot の中において、カラーを指定することで表示が変化可能
#下の例では赤色 を指定している
XX.plot(x,y,label="", color = "red")
プロットにオブジェクト指向でプロットする
オブジェクト指向(構造)でグラフをプロットすることで短いコードで表現ができる。しかし、pltのタイプで行う場合とコードの書き方が異なる点に注意が必要である
#上のコードを元に、オブジェクト指向での記載に変更する
#ここまでくると、自分もプログラム書けた気がする感を感じますね☆
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0,10,101)
y = x**2
z = (x-1)**3
w = ((x-2)*(x-4))*2
#グラフの宣言もfig という一つの大きなオブジェクトが引用することを宣言
fig = plt.figure(figsize = (10,5))
#グラフを分割表記する宣言を一つのオブジェクトにする
#axesという一つの枠とする。 オブジェクト指向に伴い"add_"が必要
ax = fig.add_subplot(1,1,1)
ax.plot(x,y,label="x^2")
ax.plot(x,z,label="z=(x-1)^3")
ax.plot(x,w,label="(w=(x-2)(x-4))^2")
#タイトルの記載もオブジェクト指向に伴い "set_"が必要
ax.set_title("graph")
plt.legend()
plt.show()
見せ方の観点でワンポイントアップ(オブジェクト指向)
技1)グラフ生成のタイミングで複数グラフを表示する宣言
#例として、1行3列のグラフを作成することをイメージする
#宣言部分は記載しない。
#今まで
fig = plt.figure(figsize=(14,3))
ax1 = fig.add_subplot(1,3,1)
ax2 = fig.add_subplot(1,3,2)
ax3 = fig.add_subplot(1,3,3)
#このようにそれぞれに対して、名前を設定するイメージになる
#行列で定義する方法
fig , ax = plt.subplots( 1, 3 , figsize = (14,4))
#これで、axを numpy配列(ax[1] , ax[2] , ax[3]) と言った形に変更できたことになる。
#今までと同じ結果!! 描写時には、for 文を作成し、numpy配列を選択する形で記載が可能!
#subplots(行、列) と表現することで、縦横の複数行列ができる
Matplotlibの可視化機能
Matplotには多くの可視化機能があります。
プロットの特徴については、下記のサイトにありますので見ましょう!
ステップ1:データのインポートについて
CSVファイルを実際に使用していくことを想定した話を記載します。
データのインポート方法
#CSVファイルを読み込む際には、read_csv( ) を使用します
data = pd.read_csv("data.csv")
#注意:この際のディレクトリは、コードのディレクトリからの階層を意味します。そのため、フォルダがある場合は、
data = pd.read_csv("./どのフォルダ/どのファイル")
と記載がいります。(相対パス)また、pandasのインポートも忘れないでね
ステップ2:欠損値の確認について
これは、下記の記事で記載した欠損値確認を行う事で、欠損値の確認を行うことができます。データフレームの加工>欠損値処理 を確認★
ステップ3:可視化しましょう
ステップ2で欠損値がなければ、可視化をしましょう☆
可視化の方法は、本サイトのMatplotのステップを踏んでくださいね
■グラフの種類
1)棒グラフについて
#各棒のx軸上の個数は何個を宣言
laft = XXX
#CSVファイルから抽出する曜日をカウントして、抽出を行う
day = data.day.value_counts().keys()
#各棒のY軸の値を抽出する
height = data.day.value_counts().values
#棒グラフの場合は、下記の関数を利用します。
plt.bar ( left , height ,tick_label = X )
#left :各棒のX軸上の数値
#height : 棒の高さ(Y軸)
#tick_label :leftによって割り振られた数字のラベルを文字列に書き換え
2)円グラフについて
#円グラフの場合は、下記の関数を利用します
plt.pie ( 利用するデータ名と数値、autopct =".1f%%", labels =X )
#autopct: フォーマット指定子。割合を%表示してくれる
# %.1f%% :少数第1位まで表示
# %.3f%% :少数第3位まで表示
3)ヒストグラムについて
1変数の分布を確認するときに活用しましょう。
#ヒストグラフの場合は、下記の関数を利用します
plt.hist( 利用するデータ、 bins=X , color )
# bins :ピンの数を指定(X個の棒グラフを表示)
※ピンの分だけ分割して表示を意味する
4)散布図について
2変数の分布を確認するときに活用しましょう。
#散布図の場合は、下記の関数を利用します。
plt.scatter ( x=データの何を、 y=データの何を )
plt.scatter (x=tip["total_bill"] , y= tip["tip"] )
※tipにCSVデータが保存されている状態を意味
または、
plt.scatter ("tital_bill" , "tip" data = tips )
以上でグラフの表示まで出来るようになりましたね!
どんどん一緒に勉強をしていきましょう!
今までの記事を掲載しておきます。(マガジン)