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基础教程之缩进介绍
Aug 29 Python
python实现用于测试网站访问速率的方法
May 26 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
python爬虫之urllib3的使用示例
Jul 09 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
python操作日志的封装方法(两种方法)
May 23 Python
python分数表示方式和写法
Jun 26 Python
Golang GBK转UTF-8的例子
Aug 26 Python
python实现文件分片上传的接口自动化
Nov 19 Python
python实现PolynomialFeatures多项式的方法
Jan 06 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 Python
Python利用folium实现地图可视化
May 23 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
js仿360开机效果
2019/12/26 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python提取内容关键词的方法
2015/03/16 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
详解python实现线程安全的单例模式
2018/03/05 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
利用Python检测URL状态
2019/07/31 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
学校志愿者活动总结
2014/06/27 职场文书
民主评议党员工作总结
2014/10/20 职场文书
客房服务员岗位职责
2015/02/09 职场文书
工作时间证明
2015/06/15 职场文书