缺少来自csv源文件的条目

时间:2017-09-20 18:41:26

标签: python csv

我有一个包含715,014个条目的数据集。这是一个工作机密文件,所以我无法上传csv文件。这是前10行:

IP,坪,主机名,端口

172.20.1.1,4毫秒,[N / A],[N / S]

172.20.1.2,3毫秒,[N / A],[N / S]

172.20.1.3,3毫秒,[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毫秒,[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个条目,0到1447

数据列(共4列):

IP 1448非空对象

Ping 1448非空对象

主机名1448非空对象

端口1447非空对象

dtypes:object(4)

内存使用量:45.3+ KB

Pandas如何错过我的大部分数据?当我写入新的.csv文件时,它只包含1448行而不是完整的700,000行。

感谢您的时间,对不起我的问题中的任何错误格式!

1 个答案:

答案 0 :(得分:0)

不要猜测Pandas发现不可接受的东西,而是先仔细审查输入。读取每行输入,解析它,替换可能对Pandas很麻烦的项目,并暂时存储它们。当您找到无法解析的行时,将其打印以供检查,然后更改解析器以适应您已识别的新案例。

一些例子:

  • 用双引号括起IP地址和主机名;即“172.20.1.1”和“d36b3yz1-phth.regis.net”。
  • 以毫秒为单位替换ping时间,例如'4 ms',仅使用数字,在本例中为4.如果稍后发现某些ping时间在分钟范围内,则调整解析器。
  • 用空字符串替换[n / a]的ping时间。
  • 用空字符串替换[n / s]的端口,除非有数据,在这种情况下用双引号将数据括起来。
  • 尝试在空白字符上分割每一行,这样,当您遇到样本中第十行这样的行时,您将能够检测到两条记录的存在,每条记录将按照上面的详细说明单独处理。

我想说,将临时记录放在一个(临时的)sqlite3数据库表中,该表很容易被放入Pandas。