上一篇笔记记录了关于pandas 数据载入的介绍
read_csv
从文件、URL或文件型对象读取分隔好的数据,逗号是默认分隔符
read_table
从文件、URL或文件型对象读取分隔好的数据,制表符 ‘\t’ 是默认分隔符
而关于数据导出文件:
使用 DataFrame 的 to_csv 方法,可以将数据导出为逗号分隔的文件
写入到 sys.stdout 控制台中打印文本,可以用其他分隔符
import sys
data.to_csv(sys.stdout,sep='|')
缺失值在输出时以空字符串输出,na_rep=‘NULL’
行和列的标签一般会被写入,但可以禁止写入
index=False
header=False
===========================
Unix 用 !cat mine/ex.csv
Windows 用 !type mine/ex.csv
接收一个带有一行或多行的错误的文件
对任何带有单字符分隔符的文件,可以使用python的内建 csv 模块,使用时,需要将任一打开的文件或文件型对象传给 csv.reader
import csv
f=open('mine/ex.csv')
reader=reader(f)
用遍历文件那样遍历reader会产生元组
for line in reader:
print(line)
之后可以自行处理数据为你想要的结果
with open('mine/ex.csv') as f:
lines=list(csv.reader(f))
header,values=lines[0],lines[1:]
data_dict={h:v for h,v in zip(header,zip(*values))}
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
csv 文件有多种风格,如需根据不同的分隔符、字符串引用约定或行终止符定义一种新的格式时,可以使用 csv.Dialect 定义一个简单的子类
class my_dialect(csv.Dialect):
lineterminator='\n'
delimiter=';'
quotechar='"'
quoting=csv.QUOTE_MINIMAL
reader=csv.reader(f,dialect=my_dialect)
也可以不定义子类,直接将 csv 方言参数传入 csv.reader 的关键字参数
reader=csv.reader(f,delimiter='|')
delimiter
用于分隔字段的字符。默认为‘ , ’
lineterminator
行终止符,默认为 ‘ \r\n ’。
quotechar
用于带有特殊字符字段的引用符号。默认为‘ " ’
quoting
引用惯例。选项包括
csv.QUOTE_ALL(引用所有的字段)
csv.QUOTE_MINIMMAL(只使用特殊字符,如分隔符) 默认是这个
csv.QUOTE_MONNUMERIC 和 csv.QUOTE_NONE(不引用)
skipinitialspace
忽略每个分隔符后的空白符。默认为False
doublequote
如何处理字段内的引号。如果为True,则是双引号。
escapechar
当引用设置为 csv.QUOTE_NONE 时用于转义分隔符的字符串,默认是禁用的
对于更复杂的文件,无法使用csv模块,可以使用字符串的 split 方法,正则表达式,re.split 进行行拆分和其他清理工作
需要手动写入被分隔的文件时,可以使用csv.writer,这个函数接收一个已经打开的可写入文件对象以及和csv.reader相同的方言
with open('my.csv','w') as f:
writer=csv.writer(f,dialect=my_dialect)
writer.writerow(('1','2','3'))
内容部分引用于《利用Python进行数据分析》第2版(Wes McKinney著,徐敬一译),仅供大家一起学习交流
如有错误,请多指教