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处理cookie详解
Feb 07 Python
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
python executemany的使用及注意事项
Mar 13 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
python滑块验证码的破解实现
Nov 10 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
基于python plotly交互式图表大全
Dec 07 Python
python无序链表删除重复项的方法
Jan 17 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 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动态创建Flash动画
2006/10/09 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
Python中几个比较常见的名词解释
2015/07/04 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python占位符输入方式实例
2019/05/27 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
django创建超级用户过程解析
2019/09/18 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
编写python代码实现简单抽奖器
2020/10/20 Python
英文导游欢迎词
2014/01/11 职场文书
幼儿园见习总结
2015/06/23 职场文书
社区服务活动感想
2015/08/11 职场文书
检讨书格式
2019/04/25 职场文书