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实现批量下载文件
May 17 Python
Python通过select实现异步IO的方法
Jun 04 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
Python信息抽取之乱码解决办法
Jun 29 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
Python的缺点和劣势分析
Nov 19 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
Python引入多个模块及包的概念过程解析
Sep 21 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模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
深入php之规范编程命名小结
2013/05/15 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
jquery UI 1.72 之datepicker
2009/12/29 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
基于Python绘制个人足迹地图
2020/06/01 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
python 装饰器重要在哪
2021/02/14 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
先进个人事迹材料
2014/01/25 职场文书
公益广告宣传方案
2014/02/28 职场文书
小学班主任培训方案
2014/06/04 职场文书
车间安全生产标语
2014/06/06 职场文书
会议通知格式范文
2015/04/15 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript