【Pandas】Pandasをインポートする際のエラー対応


はじめに

皆さん、こんにちは。@Raphael_de_murlです。今回の記事は理論的な情報共有よりはエラーメッセージの対応についてご紹介させて頂きたいと思います。

どんなエラーなのか?

記事のタイトル通りPandasに関するエラー対応になります。機械学習を勉強している方なら一度はやる株価データの解析です。その中でPandasをインポートする際発生するエラーです。

pandas_error
froma pandas.io.data import DataReader

このモジュールをインポートするとこういうエラーが出て来ます。

error_messege
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-8-ddc8504c263b> in <module>
----> 1 from pandas.io.data import DataReader

ModuleNotFoundError: No module named 'pandas.io.data'

エラーの原因

じゃあ、そもそも何が原因でこういうエラーが発生したのかを見てみましょう。
pandas-datareaderドキュメント

Starting in 0.19.0, pandas no longer supports pandas.io.data or pandas.io.wb, so you must replace your imports from pandas.io with those from pandas_datareader:

なるほど...以前まではpandas.ioの名前でサポートしたんですが、pandasの0.19.0以降のバージョンではサポートが終了したんですね。その代わりにpandas_datareaderというライブラリーをインストールすることで解決できるらしいです。やってみましょう。

対応

エラーの原因が把握できたところで残りはそれの対応ですね。公式ドキュメントを見ながら対応して行きます。まず、pandas_datareaderのライブラリをインストールします。

install
pip install pandas-datareader
#こちらはgithubからの最新バージョンのインストールです。
pip install git+https://github.com/pydata/pandas-datareader.git

インストールを完了したらインポートします。

import
from pandas_datareader import DataReader

するとエラーは解決されたはずです。

確認

エラーが出ないから問題が解決されたとは言い切れません。ちゃんとインポートされて使いたいライブラリーがちゃんと動くのかまで確認することがエンジニアの基本です。一つの例としていくつかの企業の情報を取得して行きたいと思います。ちなみにテスト環境はjupyter NoteBookです。

sample
import pandas as pd
import numpy as np 
from pandas import Series, DataFrame
sample
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
sample
from pandas_datareader import DataReader
from datetime import datetime
sample
tech_list = ['AAPL', 'GOOG', 'MSFT', 'AMZN']
sample
end = datetime.now()
start = datetime(end.year - 1, end.month, end.day)
sample
for stock in tech_list:
    globals()[stock] = DataReader(stock, 'yahoo', start, end)
sample
AAPL.describe()

ここまで入力して確認したら

こういう風にデータがちゃんと見えたら成功です。

まとめに

エンジニアがエラーの解決がめんどくさいとかやりたくないというのはダメです。ちゃんと見て原因を把握して解決するのがかっこいいです!そうじゃないでしょうか?筆者はそう思います(笑)

↓筆者が運用しているツイッターでございます。興味ある方はぜひぜひフォロワーお願い致します。
AI/機械学習のお兄ちゃんのツイッター