私は、pythonの学習の一環で株価のスクレイピングを行なっております。
ライブラリpandasを用いて、データの取得まで行い、現在データをグラフ化するために日付型に変換した日付情報をデータのインデックスしようとしているのですが、エラーが出てしまいました。
set_index( )を用いて、設定を変更しようとしておりますが、何度やってもインデックス設定が変更できません。エラーの内容的に、インデックス設定が変更出来ていれば、グラフ化出来そうなのですが、参考サイトからコピペした時も同じエラーが出ており、正直何が間違っているのかわかりません。
ご教示していただけたら幸いです。
以下に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(how = 'all',inplace = True) 7data[0].tail() 8data[0] = data[0].drop([100]) 9from datetime import datetime as dt 10data[0]['Date2'] = [dt.strptime(i, '%b %d, %Y') for i in data[0]['Date']] 11print(data[0]['Date2'].head()) 12print(data[0].head()) 13data[0] = data[0].set_index('Date2', inplace=True) 14data[0].head() 15import matplotlib.pyplot as plt 16data[0]["Adj Close**"].plot(title='AAPL Stock Price',grid=True)
以下に実行結果を示させていただきます。
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 Open High Low Close* Adj Close** Volume 96 Aug 11, 2020 22505.51 22760.87 22497.07 22750.24 22750.24 99300 97 Aug 07, 2020 22433.78 22436.16 22204.61 22329.94 22329.94 66700 98 Aug 06, 2020 22471.71 22587.75 22362.89 22418.15 22418.15 62600 99 Aug 05, 2020 22479.72 22554.20 22356.25 22514.85 22514.85 74000 100 *Close price adjusted for splits.**Adjusted cl... *Close price adjusted for splits.**Adjusted cl... *Close price adjusted for splits.**Adjusted cl... *Close price adjusted for splits.**Adjusted cl... *Close price adjusted for splits.**Adjusted cl... *Close price adjusted for splits.**Adjusted cl... *Close price adjusted for splits.**Adjusted cl... 0 2020-12-30 1 2020-12-29 2 2020-12-28 3 2020-12-25 4 2020-12-24 Name: Date2, dtype: datetime64[ns] Date Open High Low Close* Adj Close** Volume Date2 0 Dec 30, 2020 27559.10 27572.57 27338.56 27444.17 27444.17 50600 2020-12-30 1 Dec 29, 2020 26936.38 27602.52 26921.14 27568.15 27568.15 59400 2020-12-29 2 Dec 28, 2020 26691.29 26854.03 26664.60 26854.03 26854.03 50700 2020-12-28 3 Dec 25, 2020 26708.10 26716.61 26638.28 26656.61 26656.61 33400 2020-12-25 4 Dec 24, 2020 26635.11 26764.53 26605.26 26668.35 26668.35 47900 2020-12-24 Traceback (most recent call last): File "script.py", line 57, in <module> data[0].head() AttributeError: 'NoneType' object has no attribute 'head'
前提・実現したいこと
私は、pythonの学習の一環で株価のスクレイピングを行なっております。
取得データをグラフ化するため、インデックス設定を変更したい。
以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
File "script.py", line 57, in <module> data[0].head() AttributeError: 'NoneType' object has no attribute 'head'
該当のソースコード
data[0] = data[0].set_index('Date2', inplace=True) data[0].head() import matplotlib.pyplot as plt data[0]["Adj Close**"].plot(title='AAPL Stock Price',grid=True)
試したこと
参考サイトのコードで実行。 取得データから直接該当部分をコピペして実行。。
補足情報(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
プレビュー