全栈工程师开发手册 (作者:栾鹏)
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,'),
)#将数据写到csv
f = 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()#读取csv
f = 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行就应该设置为None
names=None,  用于结果的列名列表,结合header=None
index_col=None, 用作行索引的列编号或列名。可以是单个名称/数字或由多个名称/数字组成的列表(层次化索引)
usecols=None,
squeeze=False, 如果数据经解析后仅含一列,则返回Series
prefix=None,
mangle_dupe_cols=True,# 解析配置
dtype=None,
engine=None,
converters=None, 由列号/列名跟函数之间的映射关系组成的字典。例如{'foo':f}会对foo列的所有值应用函数f
true_values=None,
false_values=None,
skipinitialspace=False,
skiprows=None,  需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)
nrows=None,  需要读取的行数# 缺失数据的处理
na_values=None, 一组用于替换NA的值
keep_default_na=True, 如果连接多列解析日期,则保持参与连接的列,默认为False
na_filter=True,
verbose=False,  打印各种解析器输出信息
skip_blank_lines=True,# 时间处理
parse_dates=False,  是否尝试将数据解析为日期,默认为False
infer_datetime_format=False,
keep_date_col=False,  如果连接多列解析日期,则保持参与连接的列。默认为False
date_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)

python数据存储系列教程——python(pandas)读写csv文件相关推荐

  1. python数据存储系列教程——python对象与json字符串的相互转化,json文件的存储与读取

    全栈工程师开发手册 (作者:栾鹏) python教程全解 在json字符串和python对象的相互转化中,会进行下列变换. 会将python中字典的写法,转化为js中对象的写法.(没有区别). 会将p ...

  2. python数据存储系列教程——python中redis数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品 ...

  3. python数据存储系列教程——python中mongodb数据库操作:连接、增删查改、多级路径

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 调试环境python3.6,调试python操作mongodb数据库,首先要在本地或服务器安装mongodb数据库.安装参考:http:// ...

  4. python数据存储系列教程——python操作sqlite数据库:连接、增删查改、指令执行

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python操作sqlite数据库 sqlite数据库以.db格式的文件形式存在,所以不需要安装驱动和应用系统,在标准库中也集成了sqlite ...

  5. python数据存储系列教程——python中mysql数据库操作:连接、增删查改、指令执行

    全栈工程师开发手册 (作者:陈玓玏) python教程全解 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库.安装参考:http://blog ...

  6. python数据存储系列教程——xls文件的读写、追加(xlwt、xlwt、xlutils)

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python将数据存储到excel文件.本文不通过与操作excel办公软件而是偏向于excel文件的处理.如果你需要通过python控制exc ...

  7. Python数据分析学习系列 十三 Python建模库介绍

    Python数据分析学习系列 十三 Python建模库介绍 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 ...

  8. python pandas 读写 csv 文件

    python pandas 读写 csv 文件 具体看官方文档 https://www.pypandas.cn/docs/user_guide/io.html#csv-文本文件 import pand ...

  9. python数据挖掘案例系列教程——python实现搜索引擎

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 今天我们使用python实现一个网站搜索引擎.主要包含两个部分.网站数据库的生成.搜索引擎.其中搜索引擎部分我们使用单词频度算法.单词 ...

最新文章

  1. MRTG—网络监控工具
  2. Python requests模块相关接口
  3. 全面解析Java的垃圾回收机制
  4. heritrix 相关
  5. 在eclipse中,怎么改变字体大小?
  6. Quick Emacs
  7. sql除外语句_SQL除外
  8. Oracle练习题及答案
  9. 2023年节假日JSON
  10. 使用libjpeg处理图像(libjpeg的使用压缩与解压缩jpg格式)
  11. 2019年上半年云桌面排名前五企业
  12. comsol技巧学习 day1
  13. js 正则解决密码必须包含数字+特殊字符+英文字母大小写
  14. Java Web(三) 会话机制,Cookie和Session详解
  15. Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains valu...
  16. 学生信息管理系统(C语言版本+源码)
  17. c语言 struct 占用内存理解
  18. 关于 APP 电量测试步骤总结
  19. 高仿Coach蔻驰2016春季系列包包
  20. HUSTOJ使用指南

热门文章

  1. 后端ajaxPost请求传给前端的显示乱码问题
  2. python开发自动化创建一个任务下发到手机_python自动化开发问题集
  3. 通过设置proxyTable实现调用接口跨域
  4. 【贪心】蓝桥2019:最大降雨量
  5. 前端图片点击按钮加载更多内容_前端开发规范
  6. 全国计算机考试网页制作,全国计算机信息高新技术考试网页制作(FrontPage平台)网页制作员级考试考试大纲...
  7. android skype 无法用蓝牙耳机,Skype发布更新 增加蓝牙耳机稳定性
  8. IDEA离线使用本地maven仓库
  9. mybatis if标签字符串判断
  10. 一个完整的软件项目开发流程,软件过程,软件生命周期