一文秒懂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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
介绍Python中的文档测试模块
Apr 28 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
Python初学者常见错误详解
Jul 02 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
Python一行代码实现自动发邮件功能
May 30 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
PHP中实现进程间通讯
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
yii分页组件用法实例分析
2015/12/28 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
大专生自荐信
2013/10/04 职场文书
历史专业毕业生的自我鉴定
2013/11/15 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
实习计划书范文
2015/01/16 职场文书
数学复习课教学反思
2016/02/18 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
Golang入门之计时器
2022/05/04 Golang