python数据分析系列教程——python(pandas)读写csv文件
来源:互联网 发布:软件企业介绍 编辑:程序博客网 时间:2024/06/05 18:30
全栈工程师开发手册 (作者:栾鹏)
python教程全解
CSV文件的规范
1、使用回车换行(两个字符)作为行分隔符,最后一行数据可以没有这两个字符。2、标题行是否需要,要双方显示约定3、每行记录的字段数要相同,使用逗号分隔。逗号是默认使用的值,双方可以约定别的。 4、任何字段的值都可以使用双引号括起来. 为简单期间,可以要求都使用双引号。5、字段值中如果有换行符,双引号,逗号的,必须要使用双引号括起来。这是必须的。6、如果值中有双引号,使用一对双引号来表示原来的一个双引号
csv文件可以使用记事本或excel软件打开,excel软件会自动按照csv文件规则加载csv文件。
上面第5条:例如某一行如下
12,aa,”12,aa”
它表示了3列,第1列为“12”字符串,第2列为“aa”字符串,第3列为“12,aa”字符串。
另外需要说明的是写入writer.writerow()函数接收的是列表参数,无论是什么数据都会先迭代转化为列表再一次打印输出。所以当传入字符串时。例如’aaaaa’,函数内部会先叠在成[‘a’,’a’,’a’,’a’,’a’]再打印输出,所以在csv中结果就会是’a’,’a’,’a’,’a’,’a’
csv模块读写csv文件
使用python3.6环境测试,python读写csv文件
import csvprint("=============python操作csv文件=================")#将要存储的数据DATA = ( (11, '12', '32——1'), (21, '22', '22——1, 22——2',), (31, '32', '32——1, 32——2,'),)#将数据写到csvf = open('test.csv', mode='w',encoding='gbk',newline='') #mode写入模式,采用b的方式处理可以省去很多问题。encoding编码。newline=''定义文档换行符writer = csv.writer(f) #获取输出数据流for record in DATA: #遍历写入每一行#csv模块会将所有要写入的对象转化为字符串再写入。若转化后的字符串中不包含分割符(默认逗号),则写入文件中字符串不包含""。若转化后的字符串中包含分割符(默认逗号),则写入文件中字符串包含"" writer.writerow(record) #按行写入文件,会自动将元素对象转化为字符串。写完一行就会添加一个newline换行符。若采用b模式写入,只能写入字节流。f.close()#读取csvf = open('test.csv',mode='r',encoding='gbk') #mode读取模式,采用b的方式处理可以省去很多问题,encoding编码方式reader = csv.reader(f) #获取输入数据。把每一行数据转化成了一个list,list中每个元素是一个字符串for row in reader: #按行读取文件。一行读取为字符串,在使用分割符(默认逗号)分割成字符串列表,对于包含逗号,并使用""标志的字符串不进行分割 print(row) print(type(row))f.close()
pandas读写csv文件
除了使用csv模块,还可以使用pandas模块。
read_csv函数包含很多参数,用于控制读取csv文件。
filepath_or_buffer 表示文件系统位置、URL、文件型对象的字符串sep=sep, 用于对行中各字段进行拆分的字符序列或正则表达式delimiter=None,# 列和行的索引和名称header='infer',用作列名的行号,默认为0,如果没有header行就应该设置为Nonenames=None, 用于结果的列名列表,结合header=Noneindex_col=None, 用作行索引的列编号或列名。可以是单个名称/数字或由多个名称/数字组成的列表(层次化索引)usecols=None,squeeze=False, 如果数据经解析后仅含一列,则返回Seriesprefix=None,mangle_dupe_cols=True,# 解析配置dtype=None,engine=None,converters=None, 由列号/列名跟函数之间的映射关系组成的字典。例如{'foo':f}会对foo列的所有值应用函数ftrue_values=None,false_values=None,skipinitialspace=False,skiprows=None, 需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)nrows=None, 需要读取的行数# 缺失数据的处理na_values=None, 一组用于替换NA的值keep_default_na=True, 如果连接多列解析日期,则保持参与连接的列,默认为Falsena_filter=True, verbose=False, 打印各种解析器输出信息skip_blank_lines=True,# 时间处理parse_dates=False, 是否尝试将数据解析为日期,默认为Falseinfer_datetime_format=False,keep_date_col=False, 如果连接多列解析日期,则保持参与连接的列。默认为Falsedate_parser=None, 用于解析日期的函数dayfirst=False, 当解析有歧义的日期时,将其看做国际格式(例如,7/6/2012 -> June 7,2014)。默认为False# 迭代iterator=False, 返回一个TextParser以便逐块读取文件chunksize=None, 文件块的大小(用于迭代)# 引用压缩文件格式compression='infer',thousands=None, 千分位分隔符decimal=b'.',lineterminator=None,quotechar='"',quoting=csv.QUOTE_MINIMAL,escapechar=None,comment=None, 用于将注释信息从行尾拆分出去的字符(一个或多个)encoding=None, 用于unicode的文本编码格式dialect=None,tupleize_cols=False,# 错误处理error_bad_lines=True,warn_bad_lines=True,skipfooter=0, 需要忽略的行数(从文件末尾算起)skip_footer=0, # deprecated# 内置属性doublequote=True,delim_whitespace=False,as_recarray=False,compact_ints=False,use_unsigned=False,low_memory=_c_parser_defaults['low_memory'],buffer_lines=None,memory_map=False,float_precision=None
还是在python3.6环境下
print("==============pandas操作csv文件==================")import pandas as pd#pandas将数据写入csv文件DATA = { 'english': ['one','two','three'], 'number': [1,2,3]}save = pd.DataFrame(DATA,index=['row1','row2','row3'],columns=['english','number'])print(save)save.to_csv('test1.csv',sep=',')#pandas读取csv# sep分隔符,encoding编码header=None自动列名,names自定义列名,index_col作为行索引的列(主键),skiprows跳过行索引,na_values缺失值的替代字符串df = pd.read_csv('test1.csv',sep=',',encoding='gbk',names=['column1','column2','column3'],index_col=['column1'],skiprows=[0],na_values=['NULL'])print(df)
阅读全文
1 0
- python数据分析系列教程——python(pandas)读写csv文件
- python数据分析系列教程——Pandas全解
- 【python数据分析】CSV文件数据读写
- python数据分析系列教程——xls文件的读写
- 使用python pandas读取csv文件数据
- Python数据分析库Pandas教程——简介
- Python——csv txt文件读写
- Python 标准库 csv —— csv 文件的读写
- Python读写CSV数据
- Python学习(十九)——CSV文件读写
- Python读写csv文件
- python 读写 csv文件
- Python读写csv文件
- Python读写csv文件
- Python读写csv文件
- Python读写csv文件
- Python读写csv文件
- Python读写csv文件
- 大数据学习路线
- spring could 之服务的注册与发现(Eureka)
- 发布npm时遇到的两个小问题,解决方法
- 彻底明白 position及z-index的用法 static ,absolute ,relative
- C#中跨线程访问控件问题解决方案
- python数据分析系列教程——python(pandas)读写csv文件
- 「mysql优化专题」这大概是一篇最好的mysql优化入门文章(1)
- C#中Invoke的用法(转)
- 考试总结9
- Hive优化
- windows64位和32位区别(更新:2014-04-02 22:24)
- LCA:(欧拉序)How far away?
- Oracle数据库---SQL语句练习
- 中文乱码问题