Python如何读写CSV文件


Posted in Python onAugust 13, 2020

CSV文件是一种纯文本文件,它使用特定的结构来排列表格数据。

CSV文件内容看起来应该是下面这样的:

column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...

每段数据是如何用逗号分隔的。通常,第一行标识每个数据块——换句话说,数据列的名称。之后的每一行都是实际数据,仅受文件大小限制。

CSV文件通常由处理大量数据的程序创建。它们是一种从电子表格和数据库导出数据以及导入或在其他程序中使用数据的方便方法。例如,您可以将数据挖掘程序的结果导出到CSV文件中,然后将其导入到电子表格中,以分析数据、为演示生成图表或准备发布报告。

CSV文件非常容易通过编程处理。任何支持文本文件输入和字符串操作的语言(如Python)都可以直接使用CSV文件。

读取CSV文件内容

在Python中,使用csv库来读取CSV文件内容。在读文件之前,先创建一个a.csv的文件,内容是下面这样:

名字,部门,月份
John Smith,Accounting,November
Erica Meyers,IT,March

文件创建完成后,开始编写读取文件内容的程序:

import csv

with open('a.csv') as csv_file:
  csv_reader = csv.reader(csv_file,delimiter=',')
  line_count = 0

  for row in csv_reader:
    if line_count == 0:
      print(f'Column names are {", ".join(row)}')
      line_count += 1
    else:
      print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
      line_count += 1
    print(f'Processed {line_count} lines.')

写入数据到CSV文件

上面编写了读取内容的程序,下面继续编写一个写文件的程序。我们写到b.csv文件中。

import csv

with open('b.csv', mode='w') as employee_file:
  employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

  employee_writer.writerow(['John Smith', 'Accounting', 'November'])
  employee_writer.writerow(['Erica Meyers', 'IT', 'March'])

如果你感觉使用csv库读写效率比较地下,或者编写的代码太多。下面我介绍一种更高效的方法。

用pandas读csv

假设我们有一个c.csv文件,具体内容如下:

Name,Hire Date,Salary,Sick Days remaining
Graham Chapman,03/15/14,50000.00,10
John Cleese,06/01/15,65000.00,8
Eric Idle,05/12/14,45000.00,10
Terry Jones,11/01/13,70000.00,3
Terry Gilliam,08/12/14,48000.00,7
Michael Palin,05/23/13,66000.00,8

用pandas读取csv:

import pandas
df = pandas.read_csv('hrdata.csv')
print(df)

# 输出的df

#       Name Hire Date  Salary Sick Days remaining
# 0 Graham Chapman 03/15/14 50000.0          10
# 1   John Cleese 06/01/15 65000.0          8
# 2    Eric Idle 05/12/14 45000.0          10
# 3   Terry Jones 11/01/13 70000.0          3
# 4  Terry Gilliam 08/12/14 48000.0          7
# 5  Michael Palin 05/23/13 66000.0          8

用pandas写csv

让我们用新的列名将数据写入一个新的CSV文件:

import pandas
df = pandas.read_csv('hrdata.csv', 
      index_col='Employee', 
      parse_dates=['Hired'],
      header=0, 
      names=['Employee', 'Hired', 'Salary', 'Sick Days'])
df.to_csv('d.csv')

# d.csv文件内容

# Employee,Hired,Salary,Sick Days
# Graham Chapman,2014-03-15,50000.0,10
# John Cleese,2015-06-01,65000.0,8
# Eric Idle,2014-05-12,45000.0,10
# Terry Jones,2013-11-01,70000.0,3
# Terry Gilliam,2014-08-12,48000.0,7
# Michael Palin,2013-05-23,66000.0,8

如果你了解读取CSV文件的基础知识,那么当您需要处理导入数据时,就不会手足无措。基本的CSV Python库可以轻松地处理大多数CSV读取、处理和编写任务。如果你有很多数据要读取和处理,panda库还提供了快速和简单的CSV处理功能。

以上就是Python如何读写CSV文件的详细内容,更多关于Python读写CSV文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python中enumerate函数代码解析
Oct 31 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
Django密码系统实现过程详解
Jul 19 Python
python 默认参数相关知识详解
Sep 18 Python
python实现梯度法 python最速下降法
Mar 24 Python
浅谈Python中的模块
Jun 10 Python
用Python实现Newton插值法
Apr 17 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 Python
区分python中的进程与线程
Aug 13 #Python
python判断一个变量是否已经设置的方法
Aug 13 #Python
vscode+PyQt5安装详解步骤
Aug 12 #Python
python使用列表的最佳方案
Aug 12 #Python
Python实现播放和录制声音的功能
Aug 12 #Python
Python实现文件压缩和解压的示例代码
Aug 12 #Python
Python爬取数据并实现可视化代码解析
Aug 12 #Python
You might like
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
Python实现不规则图形填充的思路
2020/02/02 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
超市仓管员岗位职责
2014/04/07 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
投诉书格式范本
2015/07/02 职场文书
初三化学教学反思
2016/02/22 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers