【Python】エクセルからデータを抽出して行ごとにリストに格納

プログラミング
この記事は約5分で読めます。
スポンサーリンク

個別株投資の銘柄探索を自動で処理したい

前回の記事で書きましたが、

 

FIREに向けた活動として

 

ブログと個別株投資を行っています

 

今回のプログラミングの勉強のモチベーションは

 

「個別株投資の銘柄探索を楽したい」です。

 

ヨスケは個別株投資を、

 

以下のような流れで行っています。

 

ヨスケの個別株投資の流れ
①企業の業績を決算短信情報などを確認する
②業績の上り調子の銘柄をピックアップする
③株価が安くなっているタイミングで株式取得する

 

この一連の流れを行っているのですが、

 

①②がかなり時間がかかるのです。

 

適当に銘柄選定をすれば、だいたい損するし、

 

マジメにやればめっちゃ時間がかかる。。。

 

これは自動化するしかないと思い、

 

プログラムのコーディングを始めました。

 

エクセルデータの読み込みとリスト化

 

素材のエクセルデータ

今回は、各上場企業の決算短信情報をまとめて、エクセル化されたものを扱います。

 

決算プロさんというサイトでは

 

全上場企業の決算短信情報のまとめをされています。

 

まとめはエクセルファイルとしてダウンロードが可能です。

 

今回はこちらのエクセルファイルを使わせていただきます。

 

[出典:決算プロ]全上場企業の決算情報がまとめられている!

こいつをサクッと読み込んで、

 

銘柄探索を自動にしてやります。

 

ソースコードサンプル

いつものごとくソースは全部載せです。

import xlrd

# 読み込むExcelファイルを指定
Wb = xlrd.open_workbook('******.xls')

#シートを指定
Sheet_1 = Wb.sheet_by_name('Sheet1')
#配列宣言
Fundamental_List = []


# 行ごとにリスト化する
# シートの2行目~最終行をループ
for row_index in range(Sheet_1.nrows):
   # ヘッダ行を除外して、データ行のみ取得
   if row_index >= 1:      
    row = Sheet_1.row(row_index)
    # 1行の情報を連想配列で保持
    fundamental_info = {"No" : row[0].value,
                "銘柄" : row[1].value,
                "期首" : int(row[6].value),
                "期末" : int(row[7].value),
                "経常利益" : row[11].value,
                "EPS" : row[13].value}
    # 配列へ格納します
    Fundamental_List.append(fundamental_info)

Pythonをしばらく触っていなくて、色々忘れまくっていました。

 

xlrdライブラリ

xlrdライブラリを使用してエクセルファイルを読み込みます。

 

エクセルファイルがシートを分けていれば、

 

読み込むシートも指定してあげます。

# 読み込むExcelファイルを指定
Wb = xlrd.open_workbook('******.xls')

#シートを指定 
Sheet_1 = Wb.sheet_by_name('Sheet1')

配列を準備して格納する

読み込んだデータでリスト化したい情報を定義します。

 

今回は「No., 銘柄名 ,  期首, 期末時期, 経常利益, EPS(1株利益)」を

リスト化しました。

 

下のコードの「Sheet_1.row(row_index)」部分が

 

読み込んだエクセルのある一行の情報になります。

#配列宣言
Fundamental_List = []


# ②行ごとにリスト化する
#シートの2行目~最終行をループ
for row_index in range(Sheet_1.nrows):
   # ヘッダ行を除外して、データ行のみ取得
   if row_index >= 1:      
    row = Sheet_1.row(row_index)
    # 1行の情報を連想配列で保持
    fundamental_info = {"No" : row[0].value,
                "銘柄" : row[1].value,
                "期首" : int(row[6].value),
                "期末" : int(row[7].value),
                "経常利益" : row[11].value,
                "EPS" : row[13].value}
    # 配列へ格納します
    Fundamental_List.append(fundamental_info)

まとめと次回予告

最終的に「Fundamental_list」に欲しい情報だけ抽出した銘柄情報が格納されるところまで作ることができました。

 

今後の予定としては

 

①リスト化した情報を処理して
自分ルールの銘柄選定を自動化する。

 

②エクセルもダウンロードまで自動化する。

 

③株式の買いシグナルを出して、

LINEで自分に配信する

などなど検討中ですので、次回もお楽しみに!

 

 

※この記事は特定の金融商品を勧めるものではありません。あくまでヨスケが調べた範囲の情報提供ですので、最終的に金融商品の購入等の投資実行は自己判断、自己責任で行うようにお願いします。

 

もしよろしければ、ブログランキングについても

ポチっとしていただければ嬉しいです。

 


セミリタイアランキング

 

にほんブログ村 その他生活ブログ 早期リタイアへ
にほんブログ村

 

 

 

 

タイトルとURLをコピーしました