一文秒懂python读写csv xml json文件各种骚操作


Posted in Python onJuly 04, 2019

Python优越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言。 这在很大程度上是因为使用Python处理大型数据集是很简单的一件事情。

如今,每家科技公司都在制定数据战略。 他们都意识到,拥有正确的数据(干净、尽可能多)会给他们带来关键的竞争优势。 数据,如果使用有效,可以提供深层次的、隐藏在表象之下的信息。

多年来,数据存储的可能格式显著增加,但是,在日常使用中,还是以 CSV 、 JSON 和 XML 占主导地位。 在本文中,我将与你分享在Python中使用这三种流行数据格式及其之间相互转换的最简单方法!

CSV 数据

CSV文件是存储数据的最常见方式,你会发现,Kaggle竞赛中的大多数数据都是以这种方式存储的。 我们可以使用Python内置的csv库读写CSV文件,通常,我们将数据读入一个列表中,列表中每个元素又是一个列表,代表一行数据。

观察下面的代码,当我们运行 csv.reader() 时,就可以访问到我们指定的CSV数据文件。 而 csvreader.next() 函数的作用是从CSV中读取一行,每次调用它,它都会移动到下一行。 我们还可以通过 for row in csvreader 使用for循环遍历csv的每一行。 另外,最好确保每一行的列数相同,否则,在处理列表时可能会遇到一些错误。

import csv filename = "my_data.csv" fields = [] rows = [] # 读取csv文件 with open(filename, 'r') as csvfile: # 创建一个csv reader对象 csvreader = csv.reader(csvfile) # 从文件中第一行中读取属性名称信息 # fields = next(csvreader) python3.2 以上的版本使用 fields = csvreader.next() # 接着一行一行读取数据 for row in csvreader: rows.append(row) # 打印前5行信息 for row in rows[:5]: print(row)

在Python将数据写入CSV也很容易,在一个单独的列表中设置属性名称,并将要写入的数据存储在一个列表中。 这一次,我们将创建一个 writer() 对象,并使用它将数据写入文件,这与我们读取数据的方式非常相似。

import csv # 属性名称 fields = ['Name', 'Goals', 'Assists', 'Shots'] # csv文件中每一行的数据,一行为一个列表 rows = [ ['Emily', '12', '18', '112'], ['Katie', '8', '24', '96'], ['John', '16', '9', '101'], ['Mike', '3', '14', '82']] filename = "soccer.csv" # 将数据写入到csv文件中 with open(filename, 'w+') as csvfile: # 创建一个csv writer对象 csvwriter = csv.writer(csvfile) # 写入属性名称 csvwriter.writerow(fields) # 写入数据 csvwriter.writerows(rows)

当然,使用强大的pandas库将会使处理数据变得容易很多,从CSV读取和写入文件都只需要一行代码!

import pandas as pd filename = "my_data.csv" # 读取csv文件数据 data = pd.read_csv(filename) # 打印前5行 print(data.head(5)) # 将数据写入到csv文件中 data.to_csv("new_data.csv", sep=",", index=False)

我们甚至可以使用pandas通过一行代码快速将CSV转换为字典列表。 转换为字典列表之后,我们可以使用 dicttoxml 库将其转换为XML格式,我们还可以将它保存为JSON文件!

import pandas as pd from dicttoxml import dicttoxml import json # 创建一个DataFrame data = {'Name': ['Emily', 'Katie', 'John', 'Mike'], 'Goals': [12, 8, 16, 3], 'Assists': [18, 24, 9, 14], 'Shots': [112, 96, 101, 82] } df = pd.DataFrame(data, columns=data.keys()) # 将DataFrame转化为一个字典并且将它存储到json文件中 data_dict = df.to_dict(orient="records") with open('output.json', "w+") as f: json.dump(data_dict, f, indent=4) # 将DataFrame转化为一个字典并且将它存储到xml文件中 xml_data = dicttoxml(data_dict).decode() with open("output.xml", "w+") as f: f.write(xml_data)

JSON数据

JSON提供了一种干净且易于阅读的格式,因为它维护了一个字典风格的结构。 就像CSV一样,Python有一个内置的json模块,使读写变得超级容易! 从上面的例子可以看到当我们读取CSV时,可以将数据以字典的形式存储,然后再将字典写入文件。

import json import pandas as pd # 使用json模块从json文件中读取数据 # 以字典形式存储 with open('data.json') as f: data_listofdict = json.load(f) # 也可以直接使用pandas直接读取json文件 data_df = pd.read_json('data.json', orient='records') # 将字典数据保存为json文件 # 并使用 'indent' and 'sort_keys' 格式化json文件 with open('new_data.json', 'w+') as json_file: json.dump(data_listofdict, json_file, indent=4, sort_keys=True) # 也可以使用pandas将字典结构的数据保存为json文件 export = data_df.to_json('new_data.json', orient='records')

正如我们之前看到的,我们可以通过pandas或者使用Python的内置csv模块轻松地将我们的数据存储为CSV文件,而在转化为成XML时,我们使用的是 dicttoxml 库。

import json import pandas as pd import csv # 从json文件中读取数据 # 数据存储在一个字典列表中 with open('data.json') as f: data_listofdict = json.load(f) # 以列表中的字典写入倒csv文件中 keys = data_listofdict[0].keys() with open('saved_data.csv', 'w') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(data_listofdict)

XML数据

XML有点不同于CSV和JSON。 通常,CSV和JSON由于其简单性而被广泛使用。 它们读、写和解释起来既简单又快捷,不需要额外的工作,而且解析JSON或CSV是非常轻量级的。

另一方面,XML往往数据量要大一些。 你如果正在发送更多的数据,这意味着你需要更多的带宽、更多的存储空间和更多的运行时间。 但是与JSON和CSV相比,XML确实具有一些额外的特性: 你可以使用名称空间来构建和共享标准结构、更好的继承表示,以及用XML schema、DTD等表示数据的行业标准化方法。

要读取XML数据,我们将使用Python内置的XML模块的子模块ElementTree。 这里,我们可以使用 xmltodict 库将ElementTree对象转换为字典。 一旦有了字典,我们就可以像上面一样将字典换转换为CSV、JSON或pandas的 DataFrame !

import xml.etree.ElementTree as ET import xmltodict import json tree = ET.parse('output.xml') xml_data = tree.getroot() xmlstr = ET.tostring(xml_data, encoding='utf8', method='xml') data_dict = dict(xmltodict.parse(xmlstr)) print(data_dict) with open('new_data_2.json', 'w+') as json_file: json.dump(data_dict, json_file, indent=4, sort_keys=True)

总结

以上所述是小编给大家介绍的一文综述python读写csv xml json文件各种骚操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
详细介绍Python中的偏函数
Apr 27 Python
Python中的choice()方法使用详解
May 15 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
基于Python的关键字监控及告警
Jul 06 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
详解django三种文件下载方式
Apr 06 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
快速查找Python安装路径方法
Feb 06 Python
使用python的pyplot绘制函数实例
Feb 13 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 #Python
Python之修改图片像素值的方法
Jul 03 #Python
在python中,使用scatter绘制散点图的实例
Jul 03 #Python
python opencv 二值化 计算白色像素点的实例
Jul 03 #Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 #Python
python画图--输出指定像素点的颜色值方法
Jul 03 #Python
基于python的Paxos算法实现
Jul 03 #Python
You might like
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
简析Python的闭包和装饰器
2016/02/26 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
关于python3中setup.py小概念解析
2019/08/22 Python
python集合删除多种方法详解
2020/02/10 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
护理毕业生自我鉴定
2014/02/11 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
环境建议书
2015/02/04 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python