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 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
Python 文件操作的详解及实例
Sep 18 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
django 删除数据库表后重新同步的方法
May 27 Python
python实现自动登录
Sep 17 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
PyCharm如何导入python项目的方法
Feb 06 Python
基于python实现简单C/S模式代码实例
Sep 14 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP删除HTMl标签的实现代码
2013/06/30 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
python实现学员管理系统
2019/02/26 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
Farnell德国:电子元器件供应商
2018/07/10 全球购物
秋季开学典礼主持词
2014/03/19 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
九年级数学教学反思
2016/02/17 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers