私は、pythonの学習の一環で株価のスクレイピングを行なっております。
ライブラリpandasを用いて、データの取得まで行い、現在データをグラフ化するために文字列で取得した日付を日付型へ変換しようとしているのですが、エラーが出てしまいました。
プログラムに書いた日付のフォーマットが取得データと違うらしいのですが、参考サイトからコピペした時も同じエラーが出ており、正直何が間違っているのかわかりません。
ご教示していただけたら幸いです。
以下にpythonで書いたプログラムを示させていただきます。
python
1import pandas as pd 2url = 'https://finance.yahoo.com/quote/%5EN225/history?p=%5EN225' 3data = pd.read_html(url, header = 0) 4print(data[0].head()) 5print(data[0].tail()) 6data[0].dropna(inplace = True) 7print(data[0].tail()) 8from datetime import datetime as dt 9data[0]['Date2'] = [dt.strptime(i, '%b %d, %Y') for i in data[0]['Date']] 10print(data[0]['Date2'].head()) 11print(data[0].head())
以下にターミナルでの実行結果を示させていただきます。
Date Open High Low Close* Adj Close** Volume 0 Dec 30, 2020 27559.10 27572.57 27338.56 27444.17 27444.17 50600 1 Dec 29, 2020 26936.38 27602.52 26921.14 27568.15 27568.15 59400 2 Dec 28, 2020 26691.29 26854.03 26664.60 26854.03 26854.03 50700 3 Dec 25, 2020 26708.10 26716.61 26638.28 26656.61 26656.61 33400 4 Dec 24, 2020 26635.11 26764.53 26605.26 26668.35 26668.35 47900 Date ... Volume 96 Aug 11, 2020 ... 99300 97 Aug 07, 2020 ... 66700 98 Aug 06, 2020 ... 62600 99 Aug 05, 2020 ... 74000 100 *Close price adjusted for splits.**Adjusted cl... ... *Close price adjusted for splits.**Adjusted cl... [5 rows x 7 columns] Date ... Volume 96 Aug 11, 2020 ... 99300 97 Aug 07, 2020 ... 66700 98 Aug 06, 2020 ... 62600 99 Aug 05, 2020 ... 74000 100 *Close price adjusted for splits.**Adjusted cl... ... *Close price adjusted for splits.**Adjusted cl... [5 rows x 7 columns] Traceback (most recent call last): File "script.py", line 39, in <module> data[0]['Date2'] = [dt.strptime(i, '%b %d, %Y') for i in data[0]['Date']] File "script.py", line 39, in <listcomp> data[0]['Date2'] = [dt.strptime(i, '%b %d, %Y') for i in data[0]['Date']] File "/Users/taniimasahiro/.pyenv/versions/3.6.0/lib/python3.6/_strptime.py", line 565, in _strptime_datetime tt, fraction = _strptime(data_string, format) File "/Users/taniimasahiro/.pyenv/versions/3.6.0/lib/python3.6/_strptime.py", line 362, in _strptime (data_string, format)) **ValueError: time data '*Close price adjusted for splits.**Adjusted close price adjusted for both dividends and splits.' does not match format '%b %d, %Y'**
前提・実現したいこと
取得したデータから得た日付を文字列型から日付型へ変換したい。
ここに質問の内容を詳しく書いてください。
私は、pythonの学習の一環で株価のスクレイピングを行なっております。
データの取得まで行い、現在データをグラフ化するために文字列で取得した日付を日付型へ変換しようとしているのですが、エラーが出てしまいました。
最終手段として、参考hpのコードをコピペしたのですが、同じエラー表示が出て、フォーマットの書き方を色々変えているのですがエラーが出ております。
発生している問題・エラーメッセージ
ValueError: time data '*Close price adjusted for splits.**Adjusted close price adjusted for both dividends and splits.' does not match format '%b %d, %Y'
該当のソースコード
python
1from datetime import datetime as dt 2data[0]['Date2'] = [dt.strptime(i, '%b %d, %Y') for i in data[0]['Date']] 3print(data[0]['Date2'].head()) 4print(data[0].head())
試したこと
参考サイトのコードで実行。
取得データから直接該当部分をコピペして実行。
補足情報(FW/ツールのバージョンなど)
Python 3.6.0
lxml4.6.2
pandas0.25.3
datetime
ここにより詳細な情報を記載してください。
参考ホームページ
https://ai-inter1.com/python-pandas_scraping/
変換したいデータを取得したホームページ
https://finance.yahoo.com/quote/%5EN225/history?p=%5EN225
(注:これは、スクレイピングの練習のために、書いているコードなので、データ自体はなんでも構いません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/01 05:08
2021/01/01 05:22
2021/01/01 09:47