Windows11 WSL2 Ubuntu Python Ⅱ

データのスライシング

ここからは、データのスライシングについて説明していきます。
NumPy の ndarray は多次元配列を扱うデータ構造で、スライシングという機能を備えています。

  1. NumPy ndarray 多次元配列作成

    簡単な NumPy の ndarray 多次元配列を作成します。
    a = np.arange(20).reshape(4,5)
    # 4×5 の ndarray 2次元配列
    [[ 0, 1, 2, 3, 4],
     [ 5, 6, 7, 8, 9],
     [10,11,12,13,14],
     [15,16,17,18,19]]

  2. 1~2行目の 2~3列を抜出す

    b = a[1:3, 2:4]
    注1) 0行目、0列目があるのを忘れずに!
    注2) stop 終点は含まない。
    とすれば b は
    [[ 7, 8],
     [12,13]]

  3. 始点、終点は省略可

    0~1行目の 1~最後列を抜出す
    c = a[:2, 1:]
    とすれば c は
    [[1, 2, 3, 4]
     [6, 7, 8, 9]]

  4. ラストの1つ前は -1 指定

    0~1行目の 1~最後列の1つ前までを抜出す
    d = a[:2, 1:-1]
    注3) -1 指定は行列の最後を指示 とすれば d は
    [[1, 2, 3]
     [6, 7, 8]]

    最後の行と最後の列を削除
    e = a[:-1, :-1]
    とすれば e は
    [[ 0, 1, 2, 3]
     [ 5, 6, 7, 8]
     [10,11,12,13]]

    最後の行と最後の2列を削除
    f = a[:-1, :-2]
    とすれば f は
    [[ 0, 1, 2]
     [ 5, 6, 7]
     [10,11,12]]

  5. -1 指定は曲者

    -1 指定は曲者です。
    ちなみに
    g = a[-1,-1]
    は行列の最後尾 19 になります。

CSV データのスライシング

CSV データをスライシングします。
データを準備します。
データファイルは
pandas を使う
で説明した mane_chart_go_1.csv ファイルを使用します。
このファイルは Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada /public_html/manep-w/
にありますので、これを Excel で開いてみてください。
mane_chart_go.csv を作成していない方は
mane_chart_go.csv
からでもダウンロードすることができますので上記フォルダに保存してください。

CSV データスライシングファイル作成

CSV データスライシングファイルを作成します。

  1. ライブラリインポート

    必要となるライブラリをインポートします。
    pandas, NumPy をインポートします。
    import pandas as pd
    import numpy as np

  2. CSV ファイル読込み

    CSV ファイルの0行目のヘッダー情報は日本語で書かかれています。
    単に読込むと文字化けしますので、文字コードを cp932 と指定し文字化けしないようにします。
    xl_df1 = pd.read_csv("public_html/manep-w/mane_chart_go.csv", encoding="cp932")
    print(xl_df1) # (100, 11)

  3. 終値(売り)の抽出

    CSV データの中から終値(売り)の値 Close を抽出します。
    Close = xl_df11["終値(売り)"].values
    print(Close)
    とすると 100 個のデータを見ることができます。
    [ 91.653 91.833 92.543 92.807 92.87・・・
    ・・・・・・・・
    ・・90.210 90.429 90.480 89.736 89.875]
    Close のデータ数を再確認します。
    Idx = xl_df1.index
    print("Idx=", Idx)
    [結果]
    Idx= RangeIndex(start=0, stop=100, step=1)
    0~99 まで100個の index が存在しますので Close のデータ数も100個と再確認されます。

  4. Close データを25個ずつにスライス

    Close データを25個ずつにスライスします。
    先頭値は 91.653 91.833 92.543 ・・・ の順とします。
    0番目は
    n = 0
    n_25 = 25
    とすると
    sl_cl = Close[n:n+n_25] # Close[0:25]
    print(sl_cl)
    [結果]
    [ 91.653 91.833 92.543 92.807 92.870・・・
    ・・・・・・・・
    ・・88.14 90.723 90.085 90.876 91.151]
    1番目は
    sl_cl1 = Close[n+1:n+1+n_25] # Close[1:26]
    print(sl_cl1)
    [結果]
    [ 91.833 92.543 92.807 92.870 92.935・・・
    ・・・・・・・・
    ・・90.723 90.085 90.876 91.151 91.146]
    となります。

  5. スライスデータを結合

    0番目と1番目のスライスデータを結合します。
    np.append(sl_cl, sl_cl1)
    結合されたデータは
    1×50 の配列になりますので
    2×25 の配列に変換します。
    sl_cl2 = np.append(sl_cl, sl_cl1).reshape(n+2,n_25)
    print(sl_cl2)
    [結果]

    [[91.653 91.833 92.543 ... 90.085 90.876 91.151]
     [91.833 92.543 92.807 ... 90.876 91.151 91.146]]
    

ここまでで、データのスライシングができるようになりました。
引き続き、すべての CSV データをスライシングして行きます。


  • すべての CSV データをスライシング に進む
  • データのスライシング(1次元) に戻る
  • データ結合ファイル動作確認 に戻る
  • pandas を使う に戻る
  • scikit-learn 動作ファイル確認 に戻る
  • scikit-learn インストール に戻る
  • 相関係数まとめ に戻る
  • NumPy を使う に戻る
  • ロ-ソク足表示ファイル作成 に戻る
  • pandas インスト-ル に戻る
  • Windows11 WSL2 Ubuntu Python パッケージ に戻る
  • 70VPS に戻る