python中基于pandas模块:json与dataframe的互相转换⼀、 Json转为DataFrame
当我们在进⾏数据分析的时候,经常会遇到各种各样格式的⽂件,今天在这⾥整理⼀下对于json格式的⽂件怎么转化为dataframe的形式的⽂件。
1.1、对于简单的json形式
所谓的简单的json格式,就是将字典形式的⽂件,直接输出成dataframe形式的⽂件。
下⾯将创建⼀个test.json⽂件来进⾏⽰范:
obj="""[{"姓名": "张三",
"住处": "天朝",
"宠物": "koala",
"兄弟": "李四"
web service技术适用于java教程 下载},{"姓名": "李四",
"住处": "天朝",
"宠物": "cat",
"兄弟": "张三"}]"""
with open("test.json","w",encoding="utf-8") as f:
f.write(obj)
python解析json文件a.利⽤pandas⾃带的read_json直接解析字符串
import pandas as pd
df = pd.read_json("test.json",encoding="utf-8", orient='records')
print(df)
b.利⽤json库loads⽅法和pandas库中的json_normalize⽅法
import json
from pandas.io.json import json_normalize
data=open("test.json",encoding="utf-8").read()
data_list = json.loads(data)
df = json_normalize(data_list)
print(df)
2、对于稍微复杂⼀些的json进⾏处理
复杂的⼀些的json格式的⽂件,例⼦如下,我们想要得到的数据是张三兄弟的数据,同样先写⼊json⽂件:
obj = """
{"姓名": "张三",
"住处": ["天朝", "岛国", "万恶的资本主义⽇不落帝国"],
"宠物": null,
"兄弟": [{"姓名": "李四", "年龄": 25, "宠物": "汪星⼈"},
{"姓名": "王五", "年龄": 23, "宠物": "喵星⼈"}]
}"""
with open("test1.json","w",encoding="utf-8") as f:
f.write(obj)
a.利⽤json的loads和pandas的DataFrame
import json
import pandas as pd
with open("test1.json","r",encoding="utf-8") as f:
ad()
data_list = json.loads(info)
brother_info = data_list["兄弟"]
df=pd.DataFrame(brother_info)
# print(type(brother_info))
# print(brother_info)
# print(brother_info)
b.利⽤json的loads和pandas的json_normalize
from pandas.io.json import json_normalize
import json
with open("test1.json","r",encoding="utf-8") as f:
ad()
data_list = json.loads(info)
brother_info = data_list["兄弟"]
js 数组对象合并
df = json_normalize(brother_info)
print(df)
c.利⽤json的loads和pandas的read_json
import json
import pandas as pd
with open("test1.json","r",encoding="utf-8") as f:
ad()
data_list = json.loads(info)
brother_info = data_list["兄弟"]
json_data=json.dumps(brother_info)
ad_json(json_data,orient="records")
round函数5不进位
print(df)
总结:
在以上的例⼦中,可以发现在进⾏简单的格式转换的时候,可以使⽤pandas库的read_json进⾏处理,在进⾏复杂的格式转换的时候就要配合json库进⾏使⽤。⽆论是什么样的json数据,基本思路都是现将json⽂件读取进来,然后选择想要转换的数据,或是列表或是字典,然后再进⾏转换。
在这⾥重点介绍⼀下两个函数,read_json⽅法和json_normalize⽅法。
在使⽤时,要注意read_json⽅法中orient参数的选择,同时json_normalize可以将传⼊的列表、字典形式的json格式数据直接转换成dataframe。
⼆、DataFrame转为json
java环境变量设置 自动通常情况下,我们使⽤的都是pandas中的to_json()函数,可以通过设置orient参数来转换成为我们想要的json格式,orient函数有以下⼏个参数:"split", "records", "index", "columns", "values"。
Series可选参数为:"index"(默认), "split", "records",
DataFrame可选参数:"columns"(默认),split","records", "index","values"
⾸先,取⼀个DataFrame来进⾏测试(这⾥采⽤张三兄弟的数据),数据信息如下:
<_json(orient="columns",force_ascii=False)
按照column进⾏转换,效果图如下:
{"宠物":{"李四":"汪星⼈","王五":"喵星⼈"},"年龄":{"李四":25,"王五":23}}
2.split
<_json(orient="split",force_ascii=False)
按照split进⾏转换,效果图如下:
{"columns":["宠物","年龄"],"index":["李四","王五"],"data":[["汪星⼈",25],["喵星⼈",23]]}
<_json(orient="records",force_ascii=False)
按照records进⾏转换,效果图如下:
[{"宠物":"汪星⼈","年龄":25},{"宠物":"喵星⼈","年龄":23}]
4.index
<_json(orient="index",force_ascii=False)
按照index进⾏转换,效果图如下:
{"李四":{"宠物":"汪星⼈","年龄":25},"王五":{"宠物":"喵星⼈","年龄":23}}
5.values
<_json(orient="values",force_ascii=False)
按照values进⾏数据转换,效果图如下:
[["汪星⼈",25],["喵星⼈",23]]
通过对上⾯⽅法的描述,可以发现在进⾏数据转换的时候,⾸先要弄清楚的是转换的⽅式,其次再去调⽤相应的⽅法。道路千万条,逻辑第⼀条。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论