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 获取进程pid号的方法
Mar 10 Python
Python中static相关知识小结
Jan 02 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
python3爬取数据至mysql的方法
Jun 26 Python
python cs架构实现简单文件传输
Mar 20 Python
详解python 注释、变量、类型
Aug 10 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python如何将两个txt文件内容合并
Oct 18 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
基于opencv实现简单画板功能
Aug 02 Python
浅谈matplotlib默认字体设置探索
Feb 03 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP 图片文件上传实现代码
2010/12/29 PHP
php表单提交实例讲解
2015/11/12 PHP
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
jquery简单倒计时实现方法
2015/12/18 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
解读ES6中class关键字
2017/11/20 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
Python实现比较两个列表(list)范围
2015/06/12 Python
python实现Floyd算法
2018/01/03 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
超市周年庆活动方案
2014/08/16 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
企业授权委托书范本
2014/09/22 职场文书
工作经验交流材料
2014/12/30 职场文书
人力资源部岗位职责
2015/02/11 职场文书
市级三好生竞选稿
2015/11/21 职场文书