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 随机生成中文验证码的实例代码
Mar 20 Python
利用Python破解验证码实例详解
Dec 08 Python
python的多重继承的理解
Aug 06 Python
和孩子一起学习python之变量命名规则
May 27 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
基于python读取.mat文件并取出信息
Dec 16 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
Django实现简单的分页功能
Feb 22 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 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开发文件系统实例讲解
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
php压缩文件夹最新版
2018/07/18 PHP
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JavaScript 面向对象与原型
2015/04/10 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python科学画图代码分享
2017/11/29 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
实习单位接收函模板
2014/01/10 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js