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读写excel的方法
Nov 18 Python
Python常用算法学习基础教程
Apr 13 Python
Python实现自动上京东抢手机
Feb 06 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
怎么快速自学python
Jun 22 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 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中isset与array_key_exists的区别实例分析
2015/06/02 PHP
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
vue router 配置路由的方法
2018/07/26 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
在python中bool函数的取值方法
2018/11/01 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
python障碍式期权定价公式
2019/07/19 Python
python利用faker库批量生成测试数据
2020/10/15 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
举例说明类变量和实例变量的区别
2016/06/30 面试题
精彩广告词大全
2014/03/19 职场文书
房屋出售协议书
2014/04/10 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
精神文明建设标语
2014/06/16 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL