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写的服务监控程序实例
Jan 31 Python
python获取当前日期和时间的方法
Apr 30 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
使用Python的turtle模块画图的方法
Nov 15 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
numpy实现RNN原理实现
Mar 02 Python
OpenCV-Python实现图像平滑处理操作
Jun 08 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中常用编辑器推荐
2007/01/02 PHP
php中目录,文件操作详谈
2007/03/19 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP实现添加购物车功能
2017/03/06 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
Python中print函数简单使用总结
2019/08/05 Python
python自动化发送邮件实例讲解
2021/01/04 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
如何用PHP实现邮件发送
2012/12/26 面试题
自荐信范文
2013/12/10 职场文书
银行求职信
2014/05/31 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
连锁超市项目计划书
2014/09/15 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android