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の利用が最も簡単でおすすめです。

コメント