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 相关文章推荐
CentOS 6.5下安装Python 3.5.2(与Python2并存)
Jun 05 Python
Python实现的排列组合计算操作示例
Oct 13 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
对python中的高效迭代器函数详解
Oct 18 Python
Python 从相对路径下import的方法
Dec 04 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
PyTorch中反卷积的用法详解
Dec 30 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
Python常用编译器原理及特点解析
Mar 23 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Python代码需要缩进吗
Jul 01 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
详解重置Django migration的常见方式
2019/02/15 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
小区门卫岗位职责
2013/12/31 职场文书
精彩的英文自荐信
2014/01/30 职场文书
应急处置方案
2014/06/16 职场文书
银行业务授权委托书
2014/10/10 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书