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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
Python函数式编程指南(三):迭代器详解
Jun 24 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
windows下python安装pip图文教程
May 25 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
Python-opencv实现红绿两色识别操作
Jun 04 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+MYSQL会员系统的开发实例教程
2014/08/23 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python构建图像分类识别器的方法
2019/01/12 Python
Python如何实现强制数据类型转换
2019/11/22 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
《植物妈妈有办法》教学反思
2014/02/25 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
如何利用pygame实现打飞机小游戏
2021/05/30 Python
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript