python读取与写入csv格式文件的示例代码


Posted in Python onDecember 16, 2017

在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中。将csv文件中的数据直接读取为 dict 类型和 DataFrame 是非常方便也很省事的一种做法,以下代码以鸢尾花数据为例。

csv文件读取为dict

代码

# -*- coding: utf-8 -*-
import csv
with open('E:/iris.csv') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=None) # fieldnames默认为None,如果所读csv文件没有表头,则需要指定
list_1 = [e for e in reader] # 每行数据作为一个dict存入链表中
csvfile.close()
print list_1[0]

输出

 {'Petal.Length': '1.4', 'Sepal.Length': '5.1', 'Petal.Width': '0.2', 'Sepal.Width': '3.5', 'Species': 'setosa'}

如果读入的每条数据需要单独处理且数据量较大,推荐逐条处理然后再放入。

list_1 = list()
for e in reader:
 list_1.append(your_func(e)) # your_func为每条数据的处理函数

多条类型为dict的数据写入csv文件

代码

# 数据
data = [
{'Petal.Length': '1.4', 'Sepal.Length': '5.1', 'Petal.Width': '0.2', 'Sepal.Width': '3.5', 'Species': 'setosa'},
{'Petal.Length': '1.4', 'Sepal.Length': '4.9', 'Petal.Width': '0.2', 'Sepal.Width': '3', 'Species': 'setosa'},
{'Petal.Length': '1.3', 'Sepal.Length': '4.7', 'Petal.Width': '0.2', 'Sepal.Width': '3.2', 'Species': 'setosa'},
{'Petal.Length': '1.5', 'Sepal.Length': '4.6', 'Petal.Width': '0.2', 'Sepal.Width': '3.1', 'Species': 'setosa'}
]
# 表头
header = ['Petal.Length', 'Sepal.Length', 'Petal.Width', 'Sepal.Width', 'Species']
print len(data)
with open('E:/dst.csv', 'wb') as dstfile: #写入方式选择wb,否则有空行
 writer = csv.DictWriter(dstfile, fieldnames=header)
 writer.writeheader() # 写入表头
 writer.writerows(data) # 批量写入
dstfile.close()

上述代码将数据整体写入csv文件,如果数据量较多且想实时查看写入了多少数据可以使用 writerows 函数。

读取csv文件为DataFrame

代码

# 读取csv文件为DataFrame
import pandas as pd
dframe = pd.DataFrame.from_csv('E:/iris.csv')

也可以稍微曲折点:

import csv
import pandas as pd
with open('E:/iris.csv') as csvfile:
 reader = csv.DictReader(csvfile, fieldnames=None) # fieldnames默认为None,如果所读csv文件没有表头,则需要指定
 list_1 = [e for e in reader] # 每行数据作为一个dict存入链表中
csvfile.close()
dfrme = pd.DataFrame.from_records(list_1)

从zip文件中读取指定csv文件为DataFrame

dst.zip文件中包含有dst.csv和其它文件,现在在不解压缩的情况下直接读取dst.csv文件为DataFrame.

import pandas as pd
import zipfile
z_file = zipfile.ZipFile('E:/dst.zip')
dframe = pd.read_csv(z_file.open('dst.csv'))
z_file.close()
print dframe

DataFrame写入csv文件

dfrme.to_csv('E:/dst.csv', index=False) # 不要每行的编号

读取txt文件为DataFrame

import pandas as pd
# `path`为文件路径或文件句柄,`header`文件第一行是否是表头,`delimiter`每个字段的分隔符,`dtype`数据读入后的存储类型。
frame = pd.read_table(path, header=None, index_col=False, delimiter='\t', dtype=str)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python写的一个简单DNS服务器实例
Jun 04 Python
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
详解Python中for循环是如何工作的
Jun 30 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
numpy返回array中元素的index方法
Jun 27 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
用python做游戏的细节详解
Jun 25 Python
python怎么删除缓存文件
Jul 19 Python
python中subplot大小的设置步骤
Jun 28 Python
浅谈用VSCode写python的正确姿势
Dec 16 #Python
numpy中索引和切片详解
Dec 15 #Python
Python实现简单网页图片抓取完整代码实例
Dec 15 #Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 #Python
神经网络python源码分享
Dec 15 #Python
神经网络理论基础及Python实现详解
Dec 15 #Python
浅谈机器学习需要的了解的十大算法
Dec 15 #Python
You might like
PHP 文件上传全攻略
2010/04/28 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
PHP小技巧之函数重载
2014/06/02 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
Python读取键盘输入的2种方法
2015/06/16 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
浅析Python中的for 循环
2016/06/09 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
详解小白之KMP算法及python实现
2019/04/04 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
单位人事专员介绍信
2014/01/11 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
调解协议书
2014/04/16 职场文书
2014年教研室工作总结
2014/12/06 职场文书
停电通知范文
2015/04/16 职场文书
配置nginx负载均衡
2022/05/06 Servers
python实现商品进销存管理系统
2022/05/30 Python