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处理字符串之isspace()方法的使用
May 19 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
安装python及pycharm的教程图解
Oct 10 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
Python celery原理及运行流程解析
Jun 13 Python
Pandas的Apply函数具体使用
Jul 21 Python
Pycharm快捷键配置详细整理
Oct 13 Python
Python中对象的比较操作==和is区别详析
Feb 12 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
那些年一起学习的PHP(三)
2012/03/22 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
Python 除法小技巧
2008/09/06 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
请解释在new与override的区别
2012/10/29 面试题
大专生简历的自我评价
2013/11/26 职场文书
酒吧创业计划书
2014/01/18 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js