[Pythonとアメリカ株] 売上高とコンセンサス予想を自動取得して表で出力する方法

Python
スポンサーリンク

こんにちはーー

アメリカ株の情報を自動で取得したら楽そうだなー
と思ったのでPythonでプログラムを少しずつ作成しています。

PER
EPS
売上高
コンセンサス予想

の情報を取得しようと思います。

PERとEPSは既にプログラムを作成しているので、今回は売上高とコンセンサス予想です

PERとEPSの記事は↓

スポンサーリンク

概要

作成したプログラムの説明をする前に概要を記載します。

今回は一例として”CRWD”の情報を出力しています。
出力したのは
Earnings EstimateCurrent
Earnings EstimateNext
Revenue EstimateCurrent
Revenue EstimateNext
next earnings date

です。

動画も作成しています。
役立つ情報発信を心掛けていますのでチャンネル登録してくれたら嬉しいです。

出力結果

以下2つの結果を出力しています。

CSV

CSV形式で出力しています

Earnings EstimateCurrent Qtr. (Oct 2021)Earnings EstimateNext Qtr. (Jan 2022)Revenue EstimateCurrent Qtr. (Oct 2021)Revenue EstimateNext Qtr. (Jan 2022)next earnings date
CRWD0.10.16363.48M399.88M11/30/2021 19:59

png

表をpngとしても出力しています

プログラム

作成したプログラム全文です。
#部分にざっとした説明を記載しています

import yahoo_fin.stock_info as si
import pandas as pd
from collections import defaultdict
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from IPython.core.display import display
from textwrap import wrap 

#検索する銘柄の指定"
search='CRWD'

#メインの処理 以下のプログラムで情報を辞書形式で取得している
watchlist = defaultdict(list)
watchlist['search'] =[search]
data = defaultdict(lambda: defaultdict(dict))
for k, v in watchlist.items():
    for ticker in v:
        analysis = si.get_analysts_info(ticker)
        data[k][ticker]['next earnings date'] = si.get_next_earnings_date(ticker)
        for name in ['Earnings Estimate', 'Revenue Estimate']:
            data[k][ticker][name + analysis[name].columns[1]] = analysis[name].at[1, analysis[name].columns[1]]
            data[k][ticker][name + analysis[name].columns[2]] = analysis[name].at[1, analysis[name].columns[2]]
res = defaultdict(dict)
for key in watchlist.keys():
   res[key] = pd.DataFrame(data[key])
   res[key].sort_values(by = 'next earnings date', axis = 'columns', inplace=True)
   res[key] = res[key].T

# メインの処理は終わり
# データフレームへの変換
   df =pd.DataFrame.from_dict(res[key])
# CSVファイルの出力   
df.to_csv('./test.csv', mode='w', header=True, index=True)

# 表の作成
plt.rcParams["figure.figsize"] = [18, 10]
plt.rcParams["figure.autolayout"] = True
fig, axs = plt.subplots(1, 1)
data = np.random.random((10, 3))
axs.axis('tight')
axs.axis('off')
the_table = axs.table(cellText=df.values, colLabels=df.columns,loc='center',colColours =["palegreen"] * 10,bbox=[0,0,1,1])
the_table.auto_set_font_size(False)
the_table.set_fontsize(12)
the_table = [ '\n'.join(wrap(l, 3)) for l in df.columns] 
# pngの出力
plt.savefig('table.png')
# 表を表示
plt.show()

ではまた!

次は今まで作ったプログラムを利用して、パワポに情報をまとめるプログラムを作成したいと思います!

コメント

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