关于Python中pandas读取文件的问题
现有一个贼鸡儿大的文件,想要用 pandas 读取,文件是个是 str|str|str|str|str,用 pandas.read_table(path,header=None,sep='|')进行读取,但是文件里有一些脏数据,比如 str 中含有这|字符,所以用读取的时候老是异常,很蛋疼所以写了函数,进行处理,但是感觉好像有点蠢,各位大手子有没有什么别的方法。
这个是处理异常的函数,文件有 4 个多 G,用我这种方式要读到猴年马月了
def read_file(path):
flag = True
ignore_lines = []
while flag:
try:
data = pd.read_table(path, header=None, sep='|', skiprows=ignore_lines)
except Exception as e:
error_line = re.search(r'line (\d+)', e.__str__()).group(1)
ignore_lines.append(int(error_line))
else:
flag = Flase
return data
关于Python中pandas读取文件的问题
我无法理解你的问题
awk -F"|" ‘NF==5{print}’ file.txt
可以用 subprocess 直接在 python 里读取结果
主要数据量很大,百万条级别的。
是要对数据进行运算的
只能先对数据格式进行处理吧, 也就是把脏数据处理掉. 百万条但是却有 4G, 单挑数据应该不小.
感觉应该先处理;
另外数据太大不考虑文件切割开来, 多开几个程序来读?
4G 数据能有多大。随便搞搞就好了。要相信电脑的速度
4g。。内存都不虚你虚什么
这么点数据用脚本处理再 pandas
靠,文件 4g,读到内存都不止啊,我用 ipython,试着读取,直接进程都崩了
处理个中间文件,在 pandas ?
先用 awk 处理再读进 pandas 啊
字符问题要考虑下怎么预处理。pandas 读大一点儿的数据,chunk 了解一下。
文件切分也可以直接一步做了 awk -F"|" 'NF==5 && NR%5==1{print}' file.txt 这是 5 份中取一份
pandas 如果不做处理,你这种纯字符串文件读出来的内存大小肯定是大于 4G,崩溃看一下是不是 oom,oom 那就是你能用的内存不够了呀
你要做的不是 pandas 读的时候异常就再来一次,因为你的方法会不停尝试 load,建议你最好预处理数据即可,不要尝试反复 load,内存没释放最后也是 oom 了

