2017-09-20 7 views
-1

私は715,014エントリのデータセットを持っています。これは作業機密ファイルなので、csvファイルをアップロードすることはできません。ここで最初の10行は次のとおりcsvソースファイルのエントリがありません

IP、Pingの、ホスト名、ポート

172.20.1.1,4 MS、[N/A]、[N/S]

172.20.1.2,3 MS、 [N/A]、[N/S]

172.20.1.3,3 MS、[N/A]、[N/S]

172.20.1.4、[N/A]、[N/s]、[n/s]

172.20.1.5 [n/a]、[n/s]、[n/s]

172.20.1.6、[N/A]、[N/S]、[N/S]

172.20.1.7、[N/A]、[N/S]、[N/S]

172.20.1.8、[N/A]、[N/S]、[N/S]

172.20.1.9,0 MS、[N/A]、[N/S] 172.20.1.10、 1ミリ秒、d36b3yz1-phth.regis.net、[N/S]

は、ここに私が試したものです:

import pandas as pd 
import csv 
df = pd.read_csv('Userpc.csv',quoting=csv.QUOTE_NONE, error_bad_lines=False) 
df.info() 

結果:

のRangeIndex:1448のエントリ、1447から0

データ列(合計4列):

IP 1448の非ヌルオブジェクト

ピング1448非NULLオブジェクト

ホスト名1448 null以外のオブジェクト

ポート1447 null以外のオブジェクト

dtypes:オブジェクトは(4)

メモリ使用量:45.3+ KB

パンダは私のデータのほとんどを逃したことができますどのように?新しい.csvファイルに書き込むときには、完全な700,000行の代わりに1448行だけが含まれます。

ご質問ありがとうございます。申し訳ありませんが、フォーマットに問題があります。

+0

問題を示すデータの小さなサブセットを見つけます。 – Goyo

+0

ポートのレコードに[n/s]以外のものがある場合、それは何ですか? –

+0

@BillBellポートはすべて[n/s]です。 –

答えて

0

パンダが容認できないと思っているのではなく、入力を慎重に吟味する。入力の各行を読み、解析し、Pandasにとって厄介な項目を置き換え、一時的に保管します。解析できない行が見つかったら、それを印刷して検査し、識別された新しいケースに対応するようにパーサを変更します。

いくつかの例:二重引用符で

  • 囲みIPアドレスとホスト名。すなわち、「172.20.1.1」および「d36b3yz1-phth.regis.net」。
  • 「4 ms」のようなミリ秒で指定されたping時間を、この場合は4に置き換えます。後でいくつかのping時間が分範囲内にあることが分かったら、パーサーを調整します。
  • [n/a]のping時間を空の文字列に置き換えます。
  • データが二重引用符で囲まれている場合を除き、[n/s]のポートを空文字列に置き換えます。
  • 空白文字の各行を分割して、サンプルの10番目のような行に出会うと、上で詳述したようにそれぞれ別々に処理される2つのレコードの存在を検出できるようにしてください。

私は、一時的なレコードをPandasに簡単にドロップされる(一時的な)sqlite3データベーステーブルに置くと言います。

関連する問題