一文综述python读写csv xml json文件各种骚操作

栏目: Python · 发布时间: 6年前

一文综述 <a href='https://www.codercto.com/topics/20097.html'>python</a> 读写csv xml json文件各种骚操作

来源 | Medium

译者 | Arno

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

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

多年来,数据存储的可能格式显著增加,但是,在日常使用中,还是以 CSVJSONXML 占主导地位。 在本文中,我将与你分享在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)

你也许还想

推荐|近期热点机器学习git项目

● 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)

●  TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程(文末有惊喜)

●  入门 | Tensorflow实战讲解神经网络搭建详细过程

欢迎扫码关注:

一文综述python读写csv xml json文件各种骚操作


以上所述就是小编给大家介绍的《一文综述python读写csv xml json文件各种骚操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

DOM Scripting

DOM Scripting

Jeremy Keith / friendsofED / 2010-12 / GBP 27.50

There are three main technologies married together to create usable, standards-compliant web designs: XHTML for data structure, Cascading Style Sheets for styling your data, and JavaScript for adding ......一起来看看 《DOM Scripting》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具