ポケモンデータセット(CSVファイル)の読み込みと散布図(Python, pandas, matplotlib, seaborn を使用)

利用条件は,利用者自身で確認すること.

前準備

Git のインストール

Git のページ: https://git-scm.com/

Python の準備(Windows,Ubuntu 上)

サイト内の関連ページ

関連する外部ページPython の公式ページ: https://www.python.org/

Pokemon データセットの準備

謝辞:Pokemon データセットの作者に感謝します.

Windows の場合

Windows を使用する場合は,次のように操作する.

Ubuntu, Debian 系(Ubuntu や RaspyerryPi など)のとき

  1. 前準備

    wget, p7zip-full のインストール

    sudo apt -y update
    sudo apt -y install wget p7zip-full
    
  2. データディレクトリの作成と,カレントディレクトリの移動
    sudo mkdir /usr/local/dt
    sudo chown -R ${USER}:${USER} /usr/local/dt
    cd /usr/local/dt
    
  3. データのダウンロード展開(解凍)

    CSV ファイル pokemon.csv が,データディレクトリにできる

    wget https://gist.github.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/archive/92200bc0a673d5ce2110aaad4544ed6c4010f687.zip
     "c:\Program Files\7-Zip\7z.exe" x -o/usr/local/dt 92200bc0a673d5ce2110aaad4544ed6c4010f687.zip 
    rm -f 92200bc0a673d5ce2110aaad4544ed6c4010f687.zip 
    mv 194bcff35001e7eb53a2a8b441e8b2c6-92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv .
    rmdir 194bcff35001e7eb53a2a8b441e8b2c6-92200bc0a673d5ce2110aaad4544ed6c4010f687
    ls -la pokemon.csv
    

Python のデータフレームで扱ってみる

  1. CSV ファイルの読み込み
    import pandas as pd
    pokemon = pd.read_csv("C:/data/pokemon.csv")
    
  2. データの確認
    print(pokemon.head())
    
  3. 基本的な情報の表示
    • head: 先頭部分の表示
    • shape: サイズ
    • ndim: 次元数
    • columns: 属性名
    • info(): 各属性のデータ型
    print(pokemon.head())
    print(pokemon.info())
    print(pokemon.shape)
    print(pokemon.ndim)
    print(pokemon.columns)
    

4. pokemon データセットの主成分分析プロット

  1. 主成分分析プロットの前準備
    import numpy as np
    import sklearn.decomposition
    %matplotlib inline
    import matplotlib.pyplot as plt
    import warnings
    warnings.filterwarnings('ignore')   # Suppress Matplotlib warnings
    
    # 主成分分析
    def prin(A, n):
        pca = sklearn.decomposition.PCA(n_components=n)
        return pca.fit_transform(A)
    
    # 主成分分析で2つの成分を得る
    def prin2(A):
        return prin(A, 2)
    
    # M の最初の2列を,b で色を付けてプロット.b はラベル
    def scatter_label_plot(M, b, alpha):
        a12 = pd.DataFrame( M[:,0:2], columns=['a1', 'a2'] )
        f = pd.factorize(b)
        a12['target'] = f[0]
        g = sns.scatterplot(x='a1', y='a2', hue='target', data=a12, palette=sns.color_palette("hls", np.max(f[0]) + 1), legend="full", alpha=alpha)
        # lenend を書き換え
        labels=f[1]
        for i, label in enumerate(labels):
            g.legend_.get_texts()[i].set_text(label) 
        plt.show()
    
    # 主成分分析プロット
    def pcaplot(A, b, alpha):
        scatter_label_plot(prin2(A), b, alpha)
    
  2. 主成分分析プロット
    X = pokemon.iloc[:,4:7].to_numpy()
    y = pokemon.iloc[:,2]
    
    pcaplot(X, y, 0.4)