Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列.
特点读取出的数据一般为字符类型,如果是数字需要人为转换为数字
以行为单位读取数据
列之间以半角逗号或制表符为分隔,一般为半角逗号
一般为每行开头不空格,第一行是属性列,数据列之间以间隔符为间隔无空格,行之间无空行。
行之间无空行十分重要,如果有空行或者数据集中行末有空格,读取数据时一般会出错,引发[list index out of range]错误。PS:已经被这个错误坑过很多次! 使用python I/O写入和读取CSV文件 使用PythonI/O写入csv文件以下是将"birthweight.dat"低出生体重的dat文件从作者源处下载下来,并且将其处理后保存到csv文件中的代码。
import csv import os import numpy as np import random import requests # name of data file # 数据集名称 birth_weight_file = 'birth_weight.csv' # download data and create data file if file does not exist in current directory # 如果当前文件夹下没有birth_weight.csv数据集则下载dat文件并生成csv文件 if not os.path.exists(birth_weight_file): birthdata_url = 'https://github.com/nfmcclure/tensorflow_cookbook/raw/master/01_Introduction/07_Working_with_Data_Sources/birthweight_data/birthweight.dat' birth_file = requests.get(birthdata_url) birth_data = birth_file.text.split('\r\n') # split分割函数,以一行作为分割函数,windows中换行符号为'\r\n',每一行后面都有一个'\r\n'符号。 birth_header = birth_data[0].split('\t') # 每一列的标题,标在第一行,即是birth_data的第一个数据。并使用制表符作为划分。 birth_data = [[float(x) for x in y.split('\t') if len(x) >= 1] for y in birth_data[1:] if len(y) >= 1] print(np.array(birth_data).shape) # (189, 9) # 此为list数据形式不是numpy数组不能使用np,shape函数,但是我们可以使用np.array函数将list对象转化为numpy数组后使用shape属性进行查看。 with open(birth_weight_file, "w", newline='') as f: # with open(birth_weight_file, "w") as f: writer = csv.writer(f) writer.writerows([birth_header]) writer.writerows(birth_data) f.close()