一文秒懂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利用装饰器进行运算的实例分析
Aug 04 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
python opencv实现运动检测
Jul 10 Python
Python数据类型之Tuple元组实例详解
May 08 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
Python中格式化字符串的四种实现
May 26 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
Python自动化操作实现图例绘制
Jul 09 Python
Python生成并下载文件后端代码实例
Aug 31 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 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
cmd下运行php脚本
2008/11/25 PHP
PHP Google的translate API代码
2008/12/10 PHP
PHP实现的json类实例
2015/07/28 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Python实现画图软件功能方法详解
2020/07/28 Python
Python执行时间的几种计算方法
2020/07/31 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
自我鉴定书范文
2013/10/02 职场文书
读书之星事迹材料
2014/05/12 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
计划生育目标责任书
2015/05/09 职场文书
小学感恩主题班会
2015/08/12 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
欧元符号 €
2022/02/17 杂记