Windows11 WSL2 Ubuntu Python Ⅱ
pandas を使う
引き続き pandas を使ってみます。
pandas インスト-ル
で pandas をインスト-ルしました。
pandas で CSV ファイルを読込み結合したいと思います。
pandasでCSVファイルを読み込み結合する (concat)
が参考になります。
データ準備
結合したいデータを2つ準備します。
2つのデータファイルは
mane_chart_go.csv
mane_chart_go_1.csv
からダウンロードすることができます。
2つは豪ドル/円の毎日のデータで
2023/4/18~4/24 の値は重複しています。
今回は2つのデータを結合し、重複分を削除します。
ダウンロードしたデータ の保存先は
Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada/public_html/manep-w/mane_chart_go.csv
Linux/Ubuntu-22.04/home/yamada/public_html/manep-w/mane_chart_go_1.csv
とします。
データ結合ファイル作成
データ結合ファイルを作成していきます。
- ライブラリインポート
必要となるライブラリをインポートします。
pandas をインポートします。
import pandas as pd - CSV ファイル読込み
2つのファイルの0行目のヘッダー情報は日本語で書かかれています。
単に読込むと文字化けしますので、文字コードを cp932 と指定し文字化けしないようにします。
xl_df1 = pd.read_csv("public_html/manep-w/mane_chart_go.csv", encoding="cp932")
print(xl_df1) # (100, 11)
xl_df2 = pd.read_csv("public_html/manep-w/mane_chart_go_1.csv", encoding="cp932")
print(xl_df2)
データ数も確認しておきましょう。
print("データ数 xl_df2:", xl_df2.shape) # (14, 11)
- データ結合
データを結合します。
concat([ ]) メソッドを使います。
xl_df12 = pd.concat([xl_df1, xl_df2])
print(xl_df12) # (114, 11) - 重複データ削除
重複データを削除します。
drop_duplicates()メソッドを使います。
xl_df13 = xl_df12.drop_duplicates(keep='first', ignore_index=True)
引数 keep の使い方
'first' → 重複行の最初を残す
'last' → 重複行の最後を残す
False → 重複行をすべて削除
引数 ignore_index の役割
True にすると index を 0 から設定してくれます。
print(xl_df13) # (109, 11)
- 終値(売り)の確認
終値(売り)の最初と最後の値を確認します。
Close = xl_df13["終値(売り)"].values
Idx = xl_df13.index
print(Idx,Close)
print(Idx,Close)
Idx = 0~108
Close = 91.653~91.037
のように確認されます。 - CSV ファイルに書込・保存
xl_df13 を CSV ファイルにヘッダーもインデックスも含めて出力します。
ファイル名は mane_chart_go_13.csv
保存先はWimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada /public_html/manep-w/
です。
xl_df13.to_csv('public_html/manep-w/mane_chart_go_13.csv', quoting=1, index=False, encoding="cp932") - CSV ファイル書込詳細Ⅰ
quoting=1 として全てのフィールドをクォートします。
数値、文字列を" "で囲みます。 - CSV ファイル書込詳細Ⅱ
Index 引数(初期値 True)は、データフレイム xl_df13 のインデックスラベルを Unnamed:0 として mane_chart_go_13.csv へ書出します。
Unnamed:0 を出力しないように index=False とします。 - CSV ファイル書込詳細Ⅲ
encoding="cp932" がないと Excel で開いた時に文字化けします。
ただ、この CSV ファイルを PHP ファイルで使用する場合は encoding="cp932" は省略します。
データ結合ファイル作成まとめ
ここまで説明してきたスクリプトをデータ結合ファイルをまとめます。
# coding: utf-8 import pandas as pd xl_df1 = pd.read_csv("public_html/manep-w/mane_chart_go.csv", encoding="cp932") print(xl_df1) xl_df2 = pd.read_csv("public_html/manep-w/mane_chart_go_1.csv", encoding="cp932") print(xl_df2) # データ数の確認 print("データ数 xl_df2:", xl_df2.shape) # (14, 11) # データを結合する xl_df12 = pd.concat([xl_df1, xl_df2]) # データの一覧 print(xl_df12) # (114, 11) # 重複データ削除 xl_df13 = xl_df12.drop_duplicates(keep='first', ignore_index=True) print(xl_df13) # (109, 11) Close = xl_df13["終値(売り)"].values Idx = xl_df13.index print(Idx) print(Close) # CSVファイルに書込・保存 # ヘッダーもインデックスも含めて出力。 # 全てのフィールドをクォートとする。 xl_df13.to_csv('public_html/manep-w/mane_chart_go_13.csv', quoting=1, index=False, encoding="cp932") # yamada@yama:~$ conda activate # (base) yamada@yama:~$ python3 public_html/pand-mg.py
上記ファイルを windows 側で作成します。
上記内容をすべてをコピ-し、Python ファイルを作成します。
自分の PC Windows で TeraPad 等を使用して作成できたらファイル名を pand-mg.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada/public_html/pand-mg.py
とします。
ここまででデータ結合ファイルを作成できました。
引き続き、このファイルの動作確認をしていきます。