相关文章推荐
魁梧的汤圆  ·  iOS问题记录 - Xcode ...·  9 月前    · 
贪玩的手套  ·  Android 新老两代 Camera ...·  1 年前    · 
近视的春卷  ·  E0144"const char *" ...·  1 年前    · 

下面介绍pandas库对json数据的处理:

  • read_json:从json文件中读取数据
  • to_json:将pandas中的数据写入到json文件中
  • json_normalize:对json数据进行规范化处理
  • https://geek-docs.com/pandas/pandas-read-write/pandas-reading-and-writing-json.html

    read_json

    首先看看 官网 read_json 的参数:

    pandas.read_json(
      path_or_buf=None,  # json文件路径
      orient=None,  # 重点参数,取值为:"split"、"records"、"index"、"columns"、"values"
      typ='frame',   # 要恢复的对象类型(系列或框架),默认’框架’.
      dtype=None, # boolean或dict,默认为True
      convert_axes=None, 
      convert_dates=True, 
      keep_default_dates=True, 
      numpy=False, 
      precise_float=False, 
      date_unit=None, 
      encoding=None, 
      lines=False,  # 布尔值,默认为False,每行读取该文件作为json对象
      chunksize=None,
      compression='infer', 
      nrows=None, 
      storage_options=None)
    

    详细的参数解析可以参考文章:https://blog.csdn.net/qq_41562377/article/details/90203805

    假设我们现在有一份json数据,如下图所示:

    我们将上面的数据读取进来,由于数据是比较规范的,所以直接填写文件路径即可读取:

    重点讲解下参数orient

    1、oriden='split'

    split’ : dict like {index -> [index]columns -> [columns], data -> [values]}
    

    json文件的key的名字只能为index,cloumns,data这三个,另外多一个key都不行,少一个也不行。举例说明:

    2、orient='records'

    ‘records’ : list like [{column -> value}, … , {column -> value}]
    

    3、orient='index'

    dict like {index -> {column -> value}}
    

    4、orient='columns'

    dict like {column -> {index -> value}}
    

    转置之后就是上面orient='index'的结果

    5、orient='values'

    values’ : just the values array
    

    to_json

    to_json方法就是将DataFrame文件保存成json文件:

    df.to_json("个人信息.json")   # 直接保存成json文件
    

    如果按照上面的代码保存,中文是没有显示的:

    当然我们可以通过json.load将json文件再次读取进行,显示中文,我们也可以直接在保存的时候显示中文:

    df.to_json("个人信息1.json",force_ascii=False)   # 显示中文
    

    json_normalize

    https://www.jianshu.com/p/a84772b994a0

    上面介绍的json数据的保存和读取中json数据都是列表形式的;但是json文件中的数据通常不一定全部是列表形式,那么我们需要将字典结构的文件转成列表形式,这个过程就叫做规范化。

    pandas中的json_normalize()函数能够将字典或列表转成表格,使用之前先进行导入:

    from pandas.io.json import json_normalize
    

    通过官网和一个实际的例子来同时进行学习,首先看看官网的例子:

    1、层级字典通过属性的形式显示数据:

    2、如果加入max_level参数则会显示不同的效果:

    若max_level=0,则嵌套的字典会当做整体,显示在数据框中

    若max_level=1,则嵌套的字典会被拆解,里面的键会被单独出来:

    3、读取层级嵌套中的部分内容:

    4、读取全部内容

    json数据是工作中经常会遇到的一种数据格式,也是很重要的一种数据。

    本文首先对json数据及格式进行了简介,重新认识json数据;其次,结合各种实际案例,将jsonPython的各种数据类型,尤其是字典类型进行了转化;最后,重要讲解了json数据的读取、写入和规范化的操作

    需要读者重点掌握5个包或者库或者方法:

    import json   # 数据类型转化
    import demjson  # 编码解码
    pd.read_json  #  读取
    pd.to_json  # 写入
    from pandas.io.json import json_normalize  # 规范化
    

    希望通过文章的讲解能够帮助读者搞定json数据😃

    分类:
    人工智能
    标签: