2017-11-16 12 views
0

に私はKaggleからデータセットをダウンロードし、次のコードを実行しようとしていない:私は崇高なテキスト内でそれを実行しようとしているpandas.read_csv()jupyterで働いたが、端末

import pandas as pd 
movie_data = pd.read_csv('moviemetadata.csv', encoding = 'utf-8', delimiter = ',', header=0, decimal = '.') 
print(movie_data.info) 

不思議なことに、またはターミナル(私はMac上でだ)、それは動作しませんし、次のエラーが投げます:

Traceback (most recent call last): 
File ".../test.py", line 14, in <module> 
print(movie_data.info) #UnicodeEncodeError: 'ascii' codec can't encode character '\xe5' in position 7356: ordinal not in range(128) 
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 7559: ordinal not in range(128) 

は私が含むことによって、たとえば、このエラーメッセージをGoogleで検索して修正を見つけようとしました」 encoding = 'utf-8' "と表示されましたが、これで修正されませんでした。私はjupyterで同じコードを実行しようとしましたが、完璧に動作します。私は正確に私が望む出力を得る。

誰かがこれを引き起こしているアイデアを持ち、ターミナルでも同じコードをどのように使うことができるのでしょうか?

追加情報:私は、ターミナルとjupyterで同じPythonバージョンを使用しています。特に.csvをutf-8エンコーディングで保存しました。 info()以来

movie_data.info() 

がメソッドです:

+1

あなたはJupyterで、端子上の同じPythonのバージョンを使用していますか? – eugenhu

+0

おそらく終端2.7(MACに付属)です。私は素早くGoogleを作って、 'encoding = 'utf8''をダッシュ​​なしで見つけました。それを試しましたか?おそらくutf-8で動作するはずです。 –

+0

'encoding = 'latin-1'かもしれません.. –

答えて

1

は、あなただけ行う必要があります。

info()としてprintという名前でラップする必要はありません。すでにデフォルトでsys.stdoutに出力しています。


print(movie_data.info)は端末にJupyterに働いていない理由は、原因エンコードの問題に起因する可能性が高いです。非文字列型を印刷しようとすると、printは基本的にオブジェクトをstr()またはrepr()の文字列に変換しようとします。 movie_data.infoMethodType、つまりバインドされたメソッドなので、repr(movie_data.info)<bound method DataFrame.info of ...>のようになります。...はデータフレームの文字列表現です。また、データフレームにはユニコード値が含まれているため、文字列表現も同じです。 stdoutにパイプする前に適切にエンコードされていないと、エンコードエラーが発生する可能性があります。 (see also

info()の一般的なサマリー出力には、セルまたはインデックス値は含まれず、列名だけが含まれているように見えます。あなたのデータフレームの列は、Unicode文字をも持っているかもしれないあなただけのmovie_data.info()を行うことができますが、そうでない場合は、列をエンコードするには、このようなものは、最初にも動作するはずのない限り、

movie_data.columns = map(lambda s: s.encode('utf-8', 'ignore'), movie_data.columns) 
movie_data.info() 
+1

私がコメントに書いたように、 'movie_data.info()'は実際に私が望むものです。これは非常に有益なあなたの説明を引き継ぐものではなく、 'movie_data.info'が私の端末に何か間違っていると思われるjupyterの出力を与えたからです。あなたの説明は私のためにすべてをクリアしました。 – azureai

+0

@ azureaiああそうです、私の悪いことは、それを見逃してしまったに違いない、とにかく私は答えを編集しました。これは少し異なりますが、基本的には 'movie_data.info()'を 'print'に入れないでおくだけです。 – eugenhu

関連する問題