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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
python中子类调用父类函数的方法示例
Aug 18 Python
Python构建网页爬虫原理分析
Dec 19 Python
python实现ID3决策树算法
Dec 20 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
django 装饰器 检测登录状态操作
Jul 02 Python
python pymysql库的常用操作
Oct 16 Python
python 写一个文件分发小程序
Dec 05 Python
python 通过exifread读取照片信息
Dec 24 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
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python实现井字棋游戏
2020/03/30 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
python 利用zmail库发送邮件
2020/09/11 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
美德好少年主要事迹
2014/01/29 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
学习方法演讲稿
2014/05/10 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python