以下のコードを実行したら、error が出た。単純なコードなので、打つ手がない。なぜエラーが出るのか原因を知りたい。また対策も立てたい。
import tensorflow as tf
import tensorflow_datasets as tfds
import numpy as np
import pandas as pd
df = pd.read_csv('movie_data.csv', encoding='utf-8')
エラー表示:
pandas.errors.EmptyError: No columns to parse from file
このファイルは、教科書的なのもで、datasetsに存在する筈なのに、結果は、アクセスできないことになってしまった。
python 3.7.7
'movie_data.csv'の行列数、ファイルサイズはいくつでしょうか(中身はありますか?)
エラーはどの行で出たのですか?
# The entire dataset contains 50,000 examples. The first 25,000 examples for evaluation.
20,000 examples will be used for training and 5,000 for validation.
# pd.read_csv('movie_data.csv') によってエラーが出たと思われます。
エラーメッセージは可能な限り全文掲載してください。(フォルダ名等は隠してもらって結構です)
※質問に追記してください
以下のようなエラーメッセージでした。
===== RESTART: C:\Users\user\AppData\Local\Programs\Python\Python37\ch16.py ====
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python37\ch16.py", line 28, in <module>
df = pd.read_csv('movie_data.csv', encoding='utf-8')
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 448, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 880, in __init__
self._make_engine(self.engine)
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 1114, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\parsers.py", line 1891, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas\_libs\parsers.pyx", line 532, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file
>>>
> ※質問に追記してください
質問は編集できますので、質問に追記してください。
エラーからはファイルの中身がないように思われます。'movie_data.csv'をどうやって作成したのか分かりませんが、テキストエディタで開いて中身を確認された方が良いかと思います。
pandas の データにはないとの指摘を他の回答者からも得ました。また、
https://github.com/rasbt/python-machine-learning-book-2nd-edition/code/ch16/movie_data.CSV.gz
に存在している、との指摘も受けました。
私のコードは、同じ本の 3rd edition の中から、そのままコピペで書いたものです。ファイルの在処は少しわかってきましたが、その先をどうすればよいのか、知識がないので進めません。
質問のコードは書籍からの抜粋なのですか? であれば入力ファイルについての説明はその書籍に書いてあるはずです。おそらく'movie_data.csv'が最初に出てくるページ当たりに説明がありませんか?(または事前準備としてもっと前のページに書いてあるかもしれませんが)
この本の ch.8 は、Sentiment Analysis を扱っていますが、その中で IBDb(Internet Movie Database)をスタンフォード大学からダウンロードすることになっています。私は出来なかったので、この章は飛ばしました。IBDb の在処は、
http://ai.stanford.edu/~amaas/data/sentiment/ as a gzip-compressed tarball archive:
との説明があります。
CSV fileにダウウンロードした後、それを CSV file としてstore する。この間、18行くらいのプログラムがあります。そして、
np.random.seed(0)
df = df.reindex(np.random.permutation(df.index))
df.to_csv('movie_data.csv', index=False, encoding='utf-8')
この後、
df = pd.read_csv('movie_data.csv', encoding='utf-8')
となる流れです。
上の説明で、飛ばしたプログラムコードは以下となります。
import pyprid
import pandas as pd
import os
basepath = 'aclImdb'
labels = {'pos':1, 'neg':0}
pbar = pyprid.ProgBar(50000)
df = pd.DataFrame()
for s in ('test', 'train'):
for l in ('pos', 'neg'):
path = os.path.join(basepath, s, l)
for file in sorted(os.listdir(path)):
with open(os.path.join(path, file),
'r', encoding='utf-8') as infinite:
txt = infile.read()
df = df.append([txt, labels[1]]],
ignore_index=True)
pbar.column = ['review', 'sentiment']
can110さんの回答にあるものはどうでしたか?そのファイルで本通りの結果が出るならそれで良いかと思います。
そうでない場合は > 私は出来なかったので、この章は飛ばしました。 とありますが、本通りにしたいならこの章に従って'movie_data.csv'を作成する必要があるでしょう。
この本の ch.16 はRNN を扱っています。Project.1 は、このmovie_data ですが、Project.2は、Gutenbergのtextの言語処理をしています。これに使うデータは、以下のコードでダウンロードすることが出来て、RNNのtrainingもうまくいきました。
curl -O http://www.gutenberg.org/files/1268/1268-0.txt
しかし、movie_data の方は、うまくいかず、勉強を積んでから再度、挑戦するしかありません。どうも心配かけました。有難う御座いました。御放念下さい。