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爬虫之神器正则表达式
Nov 06 Python
python并发编程之线程实例解析
Dec 27 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
对Python中数组的几种使用方法总结
Jun 28 Python
Python 读写文件的操作代码
Sep 20 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
对Django外键关系的描述
Jul 26 Python
Python Selenium参数配置方法解析
Jan 19 Python
Python for循环搭配else常见问题解决
Feb 11 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
pygame实现飞机大战
Mar 11 Python
keras 如何保存最佳的训练模型
May 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
Smarty安装配置方法
2008/04/10 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python中的tcp示例详解
2018/12/09 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
django将数组传递给前台模板的方法
2019/08/06 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
django实现模型字段动态choice的操作
2020/04/01 Python
pygame实现弹球游戏
2020/04/14 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
母校寄语大全
2014/04/10 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
跳蚤市场口号
2014/06/13 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
详解python字符串驻留技术
2021/05/21 Python