700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python读取大文件csv_python 快速把超大txt文件转存为csv的实例

python读取大文件csv_python 快速把超大txt文件转存为csv的实例

时间:2024-01-27 00:20:58

相关推荐

python读取大文件csv_python 快速把超大txt文件转存为csv的实例

python 快速把超大txt文件转存为csv的实例

今天项目有个需求,就是把txt文件转为csv,txt之间是空格隔开,转为csv时需要把空格转换为逗号,网上找的一个版本,只需要三行代码,特别犀利:

import numpy as np

import pandas as pd

data_txt = np.loadtxt('datas_train.txt')

data_txtDF = pd.DataFrame(data_txt)

data_txtDF.to_csv('datas_train.csv',index=False)

上述的datas_train.txt只有不到100MB,560W行数据,三分钟之内转换完毕。

然后我换了一个5600W行共1.2G的txt文本,用上述代码转换,电脑直接卡死了。

原因在于上述代码会把全部的txt加载进内存,然后再转换,这就会造成电脑内存耗尽。

然后就想到了切割数据的办法,具体实现如下:

import numpy as np

import pandas as pd

train_data = pd.read_table('big_data.txt',iterator=True,header=None)

while True:

try:

chunk = train_data.get_chunk(5600000)

chunk.columns = ['user_id','spu_id','buy_or_not','date']

chunk.to_csv('big_data111.csv', mode='a',header=False,index = None)

except Exception as e:

break

这里我把数据分成了小块,每块数据有560W行,分11次加载就能全部加载完了,速度也很快,总共花了5分钟左右。

注意,get_chunk()里面的参数表示文件的行数,而非字节数。

以上这篇python 快速把超大txt文件转存为csv的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: -10-26

菜鸟笔记 首先读取的txt文件如下: AAAAF110 0003E818 0003E1FC 0003E770 0003FFFC 90 AAAAF110 0003E824 0003E208 0003E76C 0003FFFC A5 AAAAF110 0003E814 0003E204 0003E760 0003FFFC 85 AAAAF110 0003E7F0 0003E208 0003E764 0003FFFC 68 AAAAF110 0003E7CC 0003E1FC 0003E758 000

读取txt的数据和把数据保存到txt中是经常要用到的,下面我就总结一下. 读txt文件 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt为例,我们一起来看一下三者的区别 read() 一次性读全部内容 read() #一次性读取文本中全部的内容,以字符串的形式返回结果 with open("test.txt", "r") as f: #打开文件 data = f.read() #读取文件 print(d

在做task中,需要将TXT文本中的某一项注释修改,但是python对txt文本只有写入和读取两种操作. 我采用的方法是: 1.读取txt文件,将每一行数据,加入新建立的list中. 2.在list中修改数据 3.再新建一个txt文件,按行存入数据.记得添加 '/n' 分行 实例: 这里修改里面的数字,修改为: from __future__ import division with open(r'TACoS_test_samples-Copy1.txt','r') as f1: lines =

如下所示: import pymysql import time import re def get_raw_label(rece): re1 = r'"([\s\S]*?)": "' #-------------正则表达式 reg1 = pile(re1) # ------------编译一下 str1 = reg1.findall(rece) return str1 def get_detail(rece): re2 = r'": "([\

有一个txt文本如下: 151 151 1234561 156421 214156 1523132 031320 现希望将两行合并为一行,并将中间所有的空格都去掉: (python编程第十章) 代码如下: path = r'C:\Users\xxx\Desktop\test.txt'#文本存放的路径 with open(path) as file: lines = file.readlines()#读取每一行 a = ''#空字符(中间不加空格) for line in lines: a +=

如下所示: #ltp_data 字符串 写进777.txt 1. def save(filename, contents): fh = open(filename, 'w', encoding='utf-8') fh.write(contents) fh.close() save('F:\\ltp-3.3.1-win-x86\\777.txt', ltp_data) 2. #这句话自带文件关闭功能,所以和那些先open再write再close的方式来说,更加pythontic! with ope

如下所示: # -*- coding: utf-8 -*- # @Time :18-8-2 下午3:23 import sys reload(sys) sys.setdefaultencoding('utf8') fp = open("file", "r") sample = fp.readlines() result_list = [] # 创建一个空列表 with open('file', 'w') as f: for line in sample: resul

如下所示: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') fp = open("resources.txt", "r") sample = fp.readlines() file=open("test.txt", "w") for line in sample: sample_ = line.split('固定字符')

本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.5186,13.662 7.0032,11.854 5.8598,6.8233 8.3829,11.886 7.4764,4.3483 8.5781,12 6.4862,6.5987 5.0546,3.8166 5.7107,3.2522 14.164,15.505 5.734,3.1551 8.408

主要流程:读取文件数据--将每一行数据分成不同的字符段--在判断 在某个字否段是否含与某个字符.(只是其中一种办法) 代码如下: with open(r"C:\Users\LENOVO\Desktop\0513155231.txt", encoding='utf-8') as f:#从TXT文件中读出数据 for line1 in f: list.append(line1) #通过for循环一行一行加载 datalist=[] #定义一个数组 for item in list:

注意,本文代码是使用在txt文档上,同时txt文档中的内容每一行代表的是图片的名字. #coding:utf-8 import shutil readDir = "原文件绝对路经" writeDir = "写入文件的绝对路径" #txtDir = "/home/fuxueping/Desktop/1" lines_seen = set() outfile=open(writeDir,"w") f = open(readDir,

小试牛刀: 1.需要python如何读取文件 2.需要python操作list 3.需要使用split()对字符串进行分割 代码运行截图 : 代码(copy) #encoding=utf-8 #1.range中填写的数据 跟txt中行数保持一致 默认按照空格分隔 f_space = open(r"C:\Users\Administrator\Desktop\Space.txt","r") line_space = f_space.readlines() for i

最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas as pd # 我们的需求是 取出所有的姓名 # test1的内容 ''' id name score 1 张三 100 2 李四 99 3 王五 98 ''' test1 = pd.read_table("test1.txt") # 这个是带有标题的文件 names = test1[&

Flex读取txt文件中的内容 1.具体错误如下 2.错误原因 读取文件不存在 复制代码 代码如下: var file:File = new File(File.applicationDirectory.nativePath+"/phone.txt"); 3.解决办法 将文件导入进去

我们先来看个例子 import java.io.*; /** * Created by liguoqing on /3/28. */ public class ReadTxtFile { public static void readTxt(String filePath) { try { File file = new File(filePath); if(file.isFile() && file.exists()) { InputStreamReader isr = new

如下所示: # -*- coding: utf-8 -*- file2 = open("source.txt", 'r') file1 = open("target.txt", "r") for value1 in file1.readlines(): word1 = str(value1).split() l1 = len(word1) print l1 for value2 in file2.readlines(): word2 = str(

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。