Pythonでpandas_datareaderのParserErrorを回避して株価データを取得する方法

プログラミング

Pythonでpandas_datareaderを使って株価データを取得する際に、Stooqをデータソースに指定するとParserErrorが発生することがあります。このエラーは、データフォーマットの変更やライブラリの非互換が原因で起こることが多く、WindowsやGoogle Colaboratoryなど環境に関わらず発生する場合があります。この記事では、エラーの原因と回避方法を解説します。

ParserErrorの原因

エラー内容「Error tokenizing data. C error: Expected 1 fields in line 6, saw 2」は、Stooqから取得したCSV形式のデータがpandas_datareaderで正しく解析できない場合に起こります。

主な原因として、Stooq側で出力フォーマットが変更されたことや、pandas_datareaderが最新のデータ形式に対応していないことが挙げられます。

解決策1: yfinanceライブラリを使う

Stooqの代わりにYahoo Financeを利用すると安定して株価データを取得できます。yfinanceライブラリをインストールし、以下のように使用します。

import yfinance as yf
df = yf.download('9434.T', start='2023-01-01', end='2023-12-31')

これにより、ParserErrorを回避しながら日本株の株価データを取得できます。

解決策2: CSVを直接読み込む方法

Stooqからウェブブラウザ経由でCSVをダウンロードし、pandasのread_csvで読み込む方法もあります。

import pandas as pd
df = pd.read_csv('path_to_downloaded_file.csv', index_col=0)

この方法ならpandas_datareaderを介さずにデータを取得できるため、解析エラーを回避できます。

解決策3: pandas_datareaderのバージョン調整

古いバージョンのpandas_datareaderを使用するとStooqの形式に対応している場合があります。
必要に応じて、バージョンを固定してインストールすることも検討してください。

pip install pandas_datareader==0.10.0

まとめ

pandas_datareaderでStooqを利用してParserErrorが発生する場合、代替としてyfinanceを使う方法、CSVを直接読み込む方法、もしくはライブラリのバージョン調整が有効です。日本株データを安定して取得するにはyfinanceの利用が最も簡単でおすすめです。

コメント

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