python中基于pandas模块:json与dataframe的互相转换

python中基于pandas模块:json与dataframe的互相转换一 Json 转为 DataFrame 当我们在进行数据分析的时候 经常会遇到各种各样格式的文件 今天在这里整理一下对于 json 格式的文件怎么转化为 dataframe 的形式的文件 1 1 对于简单的 json 形式所谓的简单的 json 格式 就是将字典形式的文件 直接输出成 dataframe 形式的文件 下面将创建一个 test json 文件来进行示范 o

一、   Json转为DataFrame

   当我们在进行数据分析的时候,经常会遇到各种各样格式的文件,今天在这里整理一下对于json格式的文件怎么转化为dataframe的形式的文件。

1.1、对于简单的json形式

       所谓的简单的json格式,就是将字典形式的文件,直接输出成dataframe形式的文件。

     下面将创建一个test.json文件来进行示范:

obj="""[{"姓名": "张三", "住处": "天朝", "宠物": "koala", "兄弟": "李四" },{"姓名": "李四", "住处": "天朝", "宠物": "cat", "兄弟": "张三"}]""" with open("test.json","w",encoding="utf-8") as f: f.write(obj)

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) # pandas进行对json_normalize进行了调整,调用方式如下 import json import pandas as pd data=open("test.json",encoding="utf-8").read() data_list = json.loads(data) df = pd.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: info=f.read() 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: info=f.read() data_list = json.loads(info) brother_info = data_list["兄弟"] 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: info=f.read() data_list = json.loads(info) brother_info = data_list["兄弟"] json_data=json.dumps(brother_info) df=pd.read_json(json_data,orient="records") print(df)

总结:

在以上的例子中,可以发现在进行简单的格式转换的时候,可以使用pandas库的read_json进行处理,在进行复杂的格式转换的时候就要配合json库进行使用。无论是什么样的json数据,基本思路都是现将json文件读取进来,然后选择想要转换的数据,或是列表或是字典,然后再进行转换。

在这里重点介绍一下两个函数,read_json方法和json_normalize方法。

在使用时,要注意read_json方法中orient参数的选择,同时json_normalize可以将传入的列表、字典形式的json格式数据直接转换成dataframe。

二、DataFrame转为json

通常情况下,我们使用的都是pandas中的to_json()函数,可以通过设置orient参数来转换成为我们想要的json格式,orient函数有以下几个参数:”split”, “records”, “index”, “columns”, “values”。

Series可选参数为:”index”(默认), “split”, “records”,

DataFrame可选参数:”columns”(默认),split”,”records”, “index”,”values”

首先,取一个DataFrame来进行测试(这里采用张三兄弟的数据),数据信息如下:

python中基于pandas模块:json与dataframe的互相转换

1.columns

df.to_json(orient="columns",force_ascii=False)

按照column进行转换,效果图如下:

{"宠物":{"李四":"汪星人","王五":"喵星人"},"年龄":{"李四":25,"王五":23}}

2.split

df.to_json(orient="split",force_ascii=False)

按照split进行转换,效果图如下:

{"columns":["宠物","年龄"],"index":["李四","王五"],"data":[["汪星人",25],["喵星人",23]]}

3.records

df.to_json(orient="records",force_ascii=False)

按照records进行转换,效果图如下:

[{"宠物":"汪星人","年龄":25},{"宠物":"喵星人","年龄":23}]

4.index

df.to_json(orient="index",force_ascii=False)

按照index进行转换,效果图如下:

{"李四":{"宠物":"汪星人","年龄":25},"王五":{"宠物":"喵星人","年龄":23}}

5.values

df.to_json(orient="values",force_ascii=False)

按照values进行数据转换,效果图如下:

[["汪星人",25],["喵星人",23]]

通过对上面方法的描述,可以发现在进行数据转换的时候,首先要弄清楚的是转换的方式,其次再去调用相应的方法。道路千万条,逻辑第一条。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207609.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:29
下一篇 2026年3月19日 下午1:29


相关推荐

  • Pycharm恢复默认设置

    Pycharm恢复默认设置点击查看原文

    2026年3月26日
    2
  • dedecms内容页调用图片集文档的图集图片

    dedecms内容页调用图片集文档的图集图片

    2021年9月19日
    37
  • Spring中ApplicationContext对Beanfactory扩展[通俗易懂]

    Spring中ApplicationContext对Beanfactory扩展[通俗易懂]ApplicationContext比BeanFactory扩展了高级特性,除了集成了ListableBeanFactory和HierarchicalBeanFactory以外,实现了如下附加功能:

    2022年6月24日
    33
  • 简单了解journalctl

    简单了解journalctljournalctl命令journalctl是什么以及作用?journalctl用来查询systemd-journald服务收集到的日志。systemd-journald服务是systemdinit系统提供的收集系统日志的服务。命令格式为:journalctl[OPTIONS…][MATCHES…]journalctl命令的路径为:/bin/jour…

    2022年5月23日
    61
  • Shell之${BASH_REMATCH}

    Shell之${BASH_REMATCH}Shell 之 BASH REMATCH N 双目运算符 它和 以及 具有同样的优先级 如果使用了它 则其右边的字符串就被认为是一个扩展的正则表达式来匹配 如果字符串和模式匹配 则返回值是 0 否则返回 1 如果这个正则表达式有语法错误 则整个条件表达式的返回值是 2 如果打开了 shell 的 nocasematch 选项则匹配时不考虑字母的大小写 模式的任何部分都可以被引用以强制把其当作字符串来匹配 由正则表达式中括号里面的子模式匹配的字符串被保存在数组变量 BASH REMATCH 中 BASH REMA

    2026年3月18日
    2
  • 软件安装目录_手机软件安装目录

    软件安装目录_手机软件安装目录在进行windows系统的重新安装后,需要安装大批的应用软件,在进行重新安装大量的应用软件中,难免会有遗落,我使用一种方法,就是将自己的安装软件做一个记录,方便下一次进行安装参考,此文会在不断更新,以

    2022年8月2日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号