python 读取超大csv_python读取超大csv - CSDN
  • 文章目录python csv文件数据写入和读取(适用于超大数据量) python csv文件数据写入和读取(适用于超大数据量) 一般情况下由于我们使用的数据量比较小,因此可以将数据一次性整体读入或者写入,而且可以一次性对...

    python csv文件数据写入和读取(适用于超大数据量)

    一般情况下由于我们使用的数据量比较小,因此可以将数据一次性整体读入或者写入,而且可以一次性对数据进行加工和处理。

    但是当数据量比较大,比如有5G的数据量,这个时候想要一次性对所有数据进行操作就比较困难了。所以需要逐条将数据进行处理。

    import csv
    
    # 在最开始创建csv文件,并写入列名。相当于做一些准备工作
    with open(savepath, 'w') as csvfile:         #以写入模式打开csv文件,如果没有csv文件会自动创建。
        writer = csv.writer(csvfile)
        # writer.writerow(["index","a_name","b_name"])  # 写入列名,如果没有列名可以不执行这一行
        # writer.writerows([[0, 1, 3], [1, 2, 3], [2, 3, 4]]) # 写入多行用writerows
      
     #如果你的数据量很大,需要在循环中逐行写入数据
     for i in range(100000):
    	 with open(savepath, 'a+', newline='') as csvfile:      # a+表示以追加模式写入,如果用w会覆盖掉原来的数据。如果没有newline='',则逐行写入的数据相邻行之间会出现一行空白。读者可以自己试一试。
    	 csv_write = csv.writer(csvfile)
    	 csv_write.writerow(row_data)    # 写入1行用writerow; row_data是你要写入的数据,最好是list类型。
     
     
    f = open(savepath)
    csv_read = csv.reader(f)
    for line in csv_read:                # csv.reader(f)返回一个迭代器。迭代器的好处就是可以不用一次性将大量的数据都读进来,而是如果你需要一条,就给迭代器一个命令让它输出一条。关于迭代器的优点读者可以另行学习。
    	print line
    

    需要注意从csv文件读出来的数据是字符串,不是浮点数。使用float(str)完成转换。

    # 也可以使用pandas读取csv文件
    import pandas as pd
    
    data = pd.read_csv(filepath, head=None, encoding='utf-8')   #data是一个dataframe对象
    # 关于read_csv函数,这里并不做详细讲解。
    
    data = data.values().astype('float32')  #将dataframe转换为数值矩阵
    
    展开全文
  • 通过普通的read_csv()方式读取几个G的csv文件,耗时长,读不出,卡到电脑崩溃掉,结果。。。死机,强制重启 。 千万别写成: import pandas as pd merge_dt = pd.read_csv( cwd + '\\' + SaveFile_Path + '\\' + ...

    通过普通的read_csv()方式读取几个G的csv文件,耗时长,读不出,卡到电脑崩溃掉,结果。。。死机,强制重启 。
    千万别写成:

    import pandas as pd
    merge_dt = pd.read_csv( cwd + '\\' + SaveFile_Path + '\\' + SaveFile_Name, encoding="utf_8", engine='python'  ) 
    

    此时,可以利用read_csv()中分块读取文件的功能,有两种方法解决该问题。

    方法一

    指定参数iterator = True返回一个可迭代对象TextFileReader :

    # 读取融合的CSV文件
    merge_dt = pd.read_csv( cwd + '\\' + SaveFile_Path + '\\' + SaveFile_Name, encoding="utf_8", engine='python' ,iterator = True ) 
    merge_dt  
    # output: <pandas.io.parsers.TextFileReader at 0x1cc1f0a7470>
    # 调用数据
    merge_data = merge_dt.get_chunk(10000)
    

    方法二

    参数chunksize,通过指定一个chunksize分块大小来读取文件,也可返回一个可迭代的对象TextFileReader。

    # 读取融合的CSV文件
    merge_dt = pd.read_csv( cwd + '\\' + SaveFile_Path + '\\' + SaveFile_Name, encoding="utf_8", engine='python' , chunksize = 10) 
    merge_dt  
    # output: <pandas.io.parsers.TextFileReader at 0x1cc34ccd2e8>
    # 通过以下方式调用数据
    merge_data = merge_dt.get_chunk(1000)
    
    展开全文
  • python按行遍历一个大文件: with open('filename') as file:  for line in file:  do_things(line) ...结合下文的block,读几行是没压力了,但存成csv的时候各种奇葩问题,什么...如何用python处理非常大的csv和x
    python按行遍历一个大文件:

    with open('filename') as file:
        for line in file:
            do_things(line)

    结合下文的block,读几行是没压力了,但存成csv的时候各种奇葩问题,什么str和byte的编码问题啦,什么csv一打开是各种奇葩的整数啦……


    如何用python处理非常大的csv和xml
    http://lethain.com/handling-very-large-csv-and-xml-files-in-python/

    最后,结合另一个地方看的block控制行数,正常的csv终于可以出来了~~

    with open('tianchi_mobile_recommend_train_user.csv', 'r') as fin:
            with open('user-10000.csv','w') as fout:
                block = []
                for line in fin:
                    block.append(line)
                    if len(block) <= 10:
                            fout.write(','.join(line.split(' ')))
                    else:
                          break
                print (block)
    展开全文
  • python读取大量csv

    2019-04-27 16:16:36
    python读取大量csv问题描述文件夹和文件不能以数字作为开头读取csvpython字符串与数值转换python中的hdf5 问题描述 需要对近5w个csv进行归并处理,使用pandas 文件夹和文件不能以数字作为开头 开头的话,python会...

    问题描述

    需要对近5w个csv进行归并处理,使用pandas

    文件夹和文件不能以数字作为开头

    开头的话,python会加上各种/x,看了些教程,最后觉得不如改名,往前面添加同样的字母来解决问题。

    #给文件夹和子文件夹加上ds
    #作用:避免以数字开头,python无法读取
    
    import os
    import sys
    
    path = "F:\xxx"
    files = os.listdir(path)
    newName = ""
    for name in files:
        path1 = path +'\\'+ name;    # 第一层目录fsk_csv
        files1 = os.listdir(path1)
    
        for name1 in files1:
            path2 = path1 + '\\' + name1; # 第二层目录2FSK_0dB
            files2 = os.listdir(path2)
            for name2 in files2:         #读取第二层目录内文件并改名
                a = os.path.split(name2)
                os.rename(path2+'\\'+name2, path2+'\\ds'+ str(a[1]))
    

    工作了1分钟全搞定。

    读取csv

    在这里插入图片描述
    第一次用pandas的read_csv读取出现问题:读取时总把第一行作列属性,使我的数据少了一行。
    pd.read_csv( csv_name_list[0],header=None),加上header=None可解决问题

    import pandas as pd
    import os
    
    # 要拼接的文件夹及其完整路径,注不要包含中文
    ## 待读取批量csv的文件夹
    read_path =  "F:\xxx"
    # 修改当前工作目录
    os.chdir(read_path)
    # 将该文件夹下的所有文件名存入列表
    csv_name_list = os.listdir()
    # 读取第一个CSV文件并包含表头,用于后续的csv文件拼接
    df = pd.read_csv( csv_name_list[0],header=None) #不把第一行作列属性
    dfv = df.values
    

    搞定
    在这里插入图片描述

    python字符串与数值转换

    https://www.cnblogs.com/chenfulin5/p/7813791.html
    这里主要用了int().

    python中的hdf5

    纠结了很久,发觉如果实时读取csv进python存储成变量速度还是太慢,意义不大。
    加上这批数据是用来存储训练模型的数据,所以要求不用那么高,不如直接存成一个hdf5,提供给后面的兄弟训练模型。

    由于我只需要dataset,hdf5中的group和其他概念我也暂时用不上,贴一个pyhton最简单的构建hdf5的方式

    import h5py
    f = h5py.File("mytestfile.hdf5", "w")
    dsetx = f.create_dataset("X", data=ndarrayX)
    dsety = f.create_dataset("Y", data=ndarrayY)
    dsetz = f.create_dataset("Z", data=ndarrayZ)
    f.close()
    

    读取更简单,直接读:

        test_file = h5py.File(test_filename, 'r')
        X = test_file['X']
        Y = test_file['Y'][:]
        Z = test_file['Z'][:]
    
    展开全文
  • 使用python读取csv文件

    2018-06-23 13:36:23
    python读取文件的操作是很常见的,所以在这里记录一下相关的操作步骤: 有参考这篇博客:https://www.cnblogs.com/unnameable/p/7366437.html 文件的读取 1.首先你得有一个csv文件,可以把excel文件另存为csv...
  • csv 文件格式的本质是一种以文本存储的表格数据...由于 csv 文件的格式本身比较简单(通常第一行是表头,用于说明每列数据的含义,接下来每行代表一行数据),因此使用 csv 模块读取 csv 文件也非常简单: 创建 c...
  • python读取csv并画折线图 本文将说明如何用Python读取csv文件并且使用其数据画出折线图 1、导入库并规定格式 import csv import matplotlib.pyplot as plt import matplotlib plt.rcParams['font.sans-serif'] =...
  • python3:csv的读写

    2018-08-12 14:23:50
    前言 快要毕业那会儿,在下编写了一个招聘网站招聘岗位的爬虫提供给前女神参考,最开始我是存到mysql中,然后在到处一份csv文件给前...既然涉及到爬虫的写入文件,那这里我就先介绍pythoncsv的写! 1、csv的写 ...
  • python读取文件csv,按数值列排序 最近用python弄三张表格的合并,期间对文件列进行排序,发现一个不错的代码: from operator import itemgetter input_file = open("PDBhaemoglobinReport.csv") output_file = ...
  • python-读取csv文件某列

    2019-01-23 10:03:25
    python-读取csv文件某列
  • Python 读取csv的某列

    2018-09-07 09:48:47
    csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存储为csv文件,文件内容是:No.,Name,Age,Score 1,Apple,12,98 2,Ben,13,97 3,Celia,14,96 4,Dave,15,95 假设上述...
  • Python3读取csv文件

    2020-05-05 20:14:36
    python3中读取csv文件可以使用csv库,一般是自带的,不需要pip安装。 官方文档:Python - 6.1读写csv文件 附上代码: import csv with open('stocks.csv') as f: f_csv = csv.reader(f) headers = next(f_csv) ...
  • 这里我们使用pandas包来读取csv文件,pandans处理csv文件十分方便我认为是目前最方便的读取方式 首先安装pandans pip install pandans 安装好了之后我们读取一个csv文件 import pandas as pd #导入pandas包 ...
  • python 逐行读取csv文件,修改内容后,逐行存入新的csv文件
  • Python 3.7 读取csv文件

    2019-10-01 23:00:33
    Python 3.7 读取csv文件 这篇博客是为了防止自己太久不写代码忘记这个操作…相当简单 直接贴代码吧 # 先创建个list存储 data = [] with open('./train.csv', 'r') as f: data = f.readlines() # 到这一步就完成了 ...
  • csv是我接触的比较早的一种文件,比较好的是这种文件既能够以电子表格的形式查看又能够以文本的形式查看。最早接触是在别人的Perl脚本中,或许是为了充分利用Perl的文本处理能力。不过,日常的生活工作中我用到的...
  • 解决Python3读取csv文件中文报错问题 问题 今天在使用csv库的时候,出现报错,找到原因是csv文件含有中文,在读取中文的时候,格式出现问题。 test.py import csv with open ('test.csv','r') as file: csv_file = ...
  • 读取csv 使用csv函数包,安装 pip install csv 使用方法: import csv def fileload(filename = '待读取.csv'): csvfile = open(filename, encoding = 'utf-8') data = csv.reader(csvfile) dataset
  • import pandas as pd import os # 获取当前路径 cwd = os.getcwd() ...## 待读取批量csv的文件夹名称 Folder_Path = 'data_Q1_2018' ## 待保存的合并后的csv的文件夹名称 SaveFile_Path = 'data_Q1_2018_mer...
  • Python读取csv文件中有中文的情况
1 2 3 4 5 ... 20
收藏数 34,905
精华内容 13,962
关键字:

python 读取超大csv