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 相关文章推荐
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
Python使用while循环花式打印乘法表
Jan 28 Python
使用python 写一个静态服务(实战)
Jun 28 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
python 随机森林算法及其优化详解
Jul 11 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
PyQt5的相对布局管理的实现
Aug 07 Python
python安装mysql的依赖包mysql-python操作
Jan 01 Python
分享Python获取本机IP地址的几种方法
Mar 17 Python
python神经网络Xception模型
May 06 Python
pycharm无法安装cv2模块问题
May 20 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输出Excel文件类
2010/02/08 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
softmax及python实现过程解析
2019/09/30 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
python关闭占用端口方式
2019/12/17 Python
pytorch forward两个参数实例
2020/01/17 Python
python函数定义和调用过程详解
2020/02/09 Python
Python如何获取文件路径/目录
2020/09/22 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
物流经理自我评价
2013/09/23 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
会计辞职信范文
2014/01/15 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
工作会议通知
2015/04/15 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android