JSON的全称是JavaScript Object Notation。JSON是由编程语言中的文本组成的脚本文件,用于存储和传输数据。当你与服务器一起工作时,那么JSON数据是有益的。Python通过一个叫做json的内置包支持JSON。
CSV (Comma Separated Values)是用于存储表格数据的简单文件格式,如数据库或电子表格。
Python JSON到CSV
要在Python中把JSON转换为CSV,可以使用pandas to_csv()函数。 to_csv()是一个Pandas库函数,可以将对象写入逗号分隔的值(csv)文件。将json转换为csv的第一步是使用Pandas read_json()函数读取json数据,然后使用 to_csv()函数将其转换为csv。
要在Python中使用json,我们必须在Python脚本中导入json包。JSON文本是通过引号字符串完成的,它包含了{ }内的键值映射的值。它类似于Python中的字典。
CSV文件以纯文本形式存储表格数据(数字和文本)。文件的每一行都是数据记录。每条记录由一个或多个字段组成,用逗号分隔。作为字段分隔符的逗号是这种文件格式名称的来源。
现在,我们需要将Python JSON字符串转换成CSV格式。所以,我们需要处理外部的json文件。这种情况经常用在网络开发中,来自服务器的数据总是以JSON格式发送,然后我们需要将这些数据转换为CSV格式,以便用户能够快速分析数据。
在我们的案例中,没有服务器。所以我们必须创建一个带有一些数据的静态json文件。然后我们读取该文件获得数据,并通过以下步骤将其转换成CSV格式。
将Python JSON转换为CSV的步骤
- 收集JSON数据
- 使用read_json()函数读取数据,并将其转换成Pandas对象
- 使用to_csv()函数将Pandas对象转换为CSV
第一步:获取JSON数据
假设我们有一个名为export.json的文件。
该文件的内容如下,你可以复制以下内容并创建你的json文件。让我们把它命名为export.json 文件:
{
"0": {
"Netflix": "Stranger Things",
"Quibi": "Most Dangerous Game"
},
"1": {
"Netflix": "Money Heist",
"Quibi": "The Stranger"
},
"2": {
"Netflix": "House of Cards",
"Quibi": "50 States of Fright"
},
"3": {
"Netflix": "Rick and Morty",
"Quibi": "Flipped"
},
"4": {
"Netflix": "Better Call Saul",
"Quibi": "Survival"
}
}
现在,这就是文件的内容,我们将把它转换成CSV。
在上面的文件中,你可以看到,键是有索引的。这意味着,当我们把它转换成pandas对象时,索引将是0、1、2、3、4,而头列将是Netflix和Quibi。
第二步:读取json并将其转化为Pandas对象
Pandas read_json()是一个内置的函数,可以将JSON字符串转换为pandas对象。使用pandas解析JSON数据集要方便得多。Pandas允许你将列表转换为DataFrame,并单独指定列名。
一个JSON解析器将JSON文本转换为另一种表示方法,必须接受所有符合JSON语法的文本。
我假设export.json 文件与你的编码文件在同一目录下。所以你的路径只是一个文件名。现在,让我们用下面的代码将JSON字符串转换为Pandas对象:
# app.py
import pandas as pd
pdObj = pd.read_json('export.json', orient='index')
print(pdObj)
输出
python3 app.py
Netflix Quibi
0 Stranger Things Most Dangerous Game
1 Money Heist The Stranger
2 House of Cards 50 States of Fright
3 Rick and Morty Flipped
4 Better Call Saul Survival
在上面的代码中,我们已经传递了orient='index'。
Orient是预期的JSON字符串格式的一个指示。兼容的JSON字符串可以由to_json()产生,并有相应的orient值。可能的orient的集合是。
-
'split': dict like {index -> [index], columns ->
, data -> [values]}
-
'records': list like [{column -> value}, ..., {column -> value}].
-
'索引': dict like {index -> {column -> value}}
-
'columns': dict like {column -> {index -> value}}.
-
'值':只是值数组
从输出结果来看,我们可以说,我们已经将json字符串转化为Pandas对象。
第三步:将Pandas对象转换为CSV
让我们把Pandas对象转换为CSV数据并在控制台中打印出来:
# app.py
import pandas as pd
pdObj = pd.read_json('export.json', orient='index')
csvData = pdObj.to_csv(index=False)
print(csvData)
输出
python3 app.py
Netflix,Quibi
Stranger Things,Most Dangerous Game
Money Heist,The Stranger
House of Cards,50 States of Fright
Rick and Morty,Flipped
Better Call Saul,Survival
我们已经禁用了索引,因为我们不需要CSV数据的索引。
在这里,我们已经打印了CSV数据。我们也可以在这里导出CSV数据。 我们需要提供创建CSV文件的导出路径来做到这一点。我们是在与export.json文件相同的目录下进行导出的:
# app.py
import pandas as pd
pdObj = pd.read_json('export.json', orient='index')
pdObj.to_csv('streaming.csv', index=False)
在这种情况下,我们不需要返回任何数据,因为我们正在导出文件。所以这就是为什么这里的返回值是无。
导出的文件名称是streaming.csv文件,与export.json文件在同一目录下。该文件的内容如下:
# streaming.csv
Netflix,Quibi
Stranger Things,Most Dangerous Game
Money Heist,The Stranger
House of Cards,50 States of Fright
Rick and Morty,Flipped
Better Call Saul,Survival
让我们回顾一下这里的一切。
在第一步,我们已经准备好了JSON文件。
在第二步,我们使用read_json()函数将其转换为Pandas对象。
在最后一步,我们需要使用Pandas to_csv()函数将Pandas对象转换为CSV数据或将其导出到一个文件。
总结
处理大型JSON数据集的工作可能会恶化,主要是当它们太大,无法装入内存时。 在这样的情况下,Pandas库可以成为探索和分析数据的有效途径。此外,我们可以使用Pandas库将几乎所有的标准数据类型转换为任何其他数据类型。
本教程到此结束。