質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

2276閲覧

pythonのyfinanceモジュールを使って複数銘柄の株価情報が取得できない問題を解決したい。

Foober

総合スコア1

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/01/22 11:59

下記のサイト内にあるコードを実行したところ私の知識不足で解決ができない問題が出てきたため教えていただきたいです。

https://qiita.com/blog_UKI/items/f782fb86747e0bae89a9

yfinance moduleでTOPIX500の終値のヒストリカルデータを取得するため以下のコードをpython3.8環境で実行しましたが、結果が表示されず、エラーも表示されない状態です。
エラーも表示されないため何が問題なのかわからず困っております。
解決法を教えていただきたく宜しくお願いします。

実行したコード

closes = [] # 終値

for i in tickers.tickers:
closes.append(tickers.tickers[i].history(period="max").Close)

closes = pd.DataFrame(closes).T
closes.columns = stocks
closes = closes.ffill()

print(closes)

補足情報

サイトにあるコードを順番に実行していますが、上記のコードのところで動かずに止まってしまっています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/01/22 13:00

TOPIX500 銘柄で実行する場合、非常に時間がかかると思われます。「結果が表示されず、エラーも表示されない状態です」というのは銘柄データの取得処理が続いている状態なのだと思います(気長に待つしかないでしょう…)。
guest

回答1

0

ベストアンサー

こちらの環境は Python 3.9/yfinance 0.1.69 なのですが、以下の様に KeyError が発生します。

python

1>>> yf.__version__ 2'0.1.69' 3 4>>> closes = [] # 終値 5>>> for i in range(len(tickers.tickers)): 6 closes.append(tickers.tickers[i].history(period="max").Close) 7Traceback (most recent call last): 8 File "<stdin>", line 2, in <module> 9KeyError: 0

これは tickers.tickers がリストではなく辞書(dict)だからです。なので、辞書型に合わせた処理に書き換えます。

python

1>>> type(tickers.tickers) 2<class 'dict'> 3 4>>> for i in tickers.tickers.values(): 5 closes.append(i.history(period="max").Close) 6>>> closes = pd.DataFrame(closes).T # DataFrame化 7>>> closes.columns = stocks # カラム名の設定 8>>> closes = closes.ffill() # 欠損データの補完 9>>> 10>>> print(closes) 11 1332.T 1333.T 1414.T 1417.T ... 1802.T 1803.T 1808.T ^N225 12Date ... 131965-01-05 NaN NaN NaN NaN ... NaN NaN NaN 1257.719971 141965-01-06 NaN NaN NaN NaN ... NaN NaN NaN 1263.989990 151965-01-07 NaN NaN NaN NaN ... NaN NaN NaN 1274.270020 161965-01-08 NaN NaN NaN NaN ... NaN NaN NaN 1286.430054 171965-01-12 NaN NaN NaN NaN ... NaN NaN NaN 1288.540039 18... ... ... ... ... ... ... ... ... ... 192022-01-17 547.0 2428.0 4975.0 1914.0 ... 930.0 754.0 1454.0 28333.519531 202022-01-18 536.0 2404.0 4930.0 1887.0 ... 924.0 753.0 1438.0 28257.250000 212022-01-19 523.0 2363.0 4835.0 1817.0 ... 916.0 751.0 1409.0 27467.230469 222022-01-20 529.0 2365.0 4940.0 1821.0 ... 916.0 760.0 1421.0 27772.929688 232022-01-21 533.0 2383.0 5040.0 1822.0 ... 928.0 774.0 1419.0 27522.259766 24 25[14153 rows x 11 columns]

投稿2022/01/22 12:44

melian

総合スコア21118

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Foober

2022/01/22 14:56

ありがとうございます!ご指摘の通り、dict に合わせた処理に変えたらできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問