2017-12-10 18 views
1

編集:これを見つけて下に回答しました。これは将来kaggleからcsvファイルを直接ダウンロードする他の初心者にとって役に立ちます。 wgetがCSVファイルをダウンロードするように表示されても、私は気づいていない、彼らは実際にジップです。KaggleのCSVをパンダのデータフレームに変換する際の解析の問題

私はパンダには新しく、一般的にこれらのデータセットで作業しています。私がインストールされていないとJupyter中で動作するように私自身のVMにいくつかのkaggleデータセットをダウンロードするkaggle-CLIの最新バージョンにアップグレード:

[[email protected] ~]# kg dataset -u "me" -p "mypassword" -o "sohier" -d "london-police-records" 
downloading https://www.kaggle.com/sohier/london-police-records/downloads/london-outcomes.csv 

london-outcomes.csv 100% |##################################################################################| Time: 0:00:03 37.7 MiB/s 

downloading https://www.kaggle.com/sohier/london-police-records/downloads/london-stop-and-search.csv 

london-stop-and-search.csv 100% |###########################################################################| Time: 0:00:00 5.3 MiB/s 

downloading https://www.kaggle.com/sohier/london-police-records/downloads/london-street.csv 

london-street.csv 100% |####################################################################################| Time: 0:00:02 42.8 MiB/s 

ダウンロード自体には問題が。私は、データを操作するためにパンダを使用しようとすると:

--------------------------------------------------------------------------- 
ParserError        Traceback (most recent call last) 
<ipython-input-16-b1c1b3a6a38f> in <module>() 
----> 1 london_street = pd.read_csv('london-street.csv') 

/opt/anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision) 
    653      skip_blank_lines=skip_blank_lines) 
    654 
--> 655   return _read(filepath_or_buffer, kwds) 
    656 
    657  parser_f.__name__ = name 

/opt/anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds) 
    409 
    410  try: 
--> 411   data = parser.read(nrows) 
    412  finally: 
    413   parser.close() 

/opt/anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in read(self, nrows) 
    1003     raise ValueError('skipfooter not supported for iteration') 
    1004 
-> 1005   ret = self._engine.read(nrows) 
    1006 
    1007   if self.options.get('as_recarray'): 

/opt/anaconda3/lib/python3.6/site-packages/pandas/io/parsers.py in read(self, nrows) 
    1746  def read(self, nrows=None): 
    1747   try: 
-> 1748    data = self._reader.read(nrows) 
    1749   except StopIteration: 
    1750    if self._first_chunk: 

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read (pandas/_libs/parsers.c:10862)() 

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory (pandas/_libs/parsers.c:11138)() 

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_rows (pandas/_libs/parsers.c:11884)() 

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows (pandas/_libs/parsers.c:11755)() 

pandas/_libs/parsers.pyx in pandas._libs.parsers.raise_parser_error (pandas/_libs/parsers.c:28765)() 

ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 2 
:PD

london_street = pd.read_csv( 'ロンドンstreet.csv')

として

輸入パンダは私がこれを取得します

私は見つけることができる最も類似した問題を調べました。私はsepパラメータと他のいくつかの設定(さまざまな方法で解析を破ります)でさまざまなオプションを試しましたが、このプロジェクト自体とデータの概要:

https://www.kaggle.com/sohier/london-police-records/data

これはかなり簡単なようです。 KaggleはクリーンなCSVファイルとして使用する前に、何か別のことをする必要がある外部データのダウンロードを行いますか?

+0

私の推測では、csvファイルは大きすぎてメモリに収まりません。ファイルの大きさはどれくらいですか? 'read_csv'は、それが読める行の数を制限するオプションを与えますか?それは、少なくともメモリとの構文解析の問題を分離するでしょう。 – hpaulj

+0

@hpaulj nrows = 20を追加しようとしましたが、結果は同じです。最後の行に基づいて書式設定に問題がある必要があります。 ParserError:データをトークン化する際にエラーが発生しました。 Cエラー:3行目に1のフィールドがあり、2になっています。 – Benny

+0

エラーは行ごとの列数と関係があります。最初の行はヘッダーまたはコメントであり、スキップする必要があります。 – hpaulj

答えて

0

私はこれを理解しました。問題は、wgetのダウンロード結果がファイルを.csvとして参照したにもかかわらず、ダウンロードされたのは実際にはzipだったということです。

mv london-street.csv london-street.zip 

unzip london-street.zip 

実際のCSVあります:

# ls 
london-street.csv 
london-street.zip 

london_street = pd.read_csv('london-street.csv') 
london_street 

でそれを引っ張り、問題なくデータを見ることができました。

関連する問題