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中的list列表数据结构用法
Mar 12 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
用于业余项目的8个优秀Python库
Sep 21 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
python给list排序的简单方法
Dec 10 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 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性能优化准备篇图解PEAR安装
2011/12/05 PHP
基于initPHP的框架介绍
2013/04/18 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python利用正则表达式提取字符串
2016/12/08 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
医药个人求职信范文
2014/01/29 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android