パンダでデータを読み取ることができません:入力:
import pandas as pd
data = 'a,b,c\n1,2,3\n4,5,6'
pd.read_csv(StringIO(data),skipinitialspace=True)
出力:
NameError:name 'StringIO' is not defined
エラーが発生した理由と、インポートするものを教えてください。
ここで解決策を見つけました:
StringIO
をインポートしなかったため、エラーが発生しました。 Python 2とは異なり、Python 3では、インポートする必要があります。
from io import StringIO
インポート後、エラーは発生しませんでした。上記の質問への出力は次のとおりです。
a b c
0 1 2 3
1 4 5 6
Python 2と3の両方で機能するpandas.compat
からインポートすることもできます。
from pandas.compat import StringIO
それはより良いモジュールのためにpython 3で削除されたからです。
From What’s New In Python 3. :
StringIO
およびcStringIO
モジュールはなくなりました。代わりに、io
モジュールをインポートし、テキストとデータにそれぞれio.StringIO
またはio.BytesIO
を使用します。
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
以下のパッケージを追加してみてください。これらのパッケージは、スクリプトの先頭にこの行を追加する必要があります。
import io
from io import StringIO
import string
import pandas as pd
from pandas.compat import StringIO
from collections import Counter
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
上記のパッケージを追加した後、以下のエラーが発生しません
ModuleNotFoundError: No module named 'StringIO'