读Json文件生成pandas数据框详情

2022-08-25 18:54:41
目录
前言records格式index格式columns 类型values格式split 参数示例压缩与编码

前言

本文讲解如何加载json文件或字符串为pandas数据框。pandas把json数据分成几种典型类型,希望对你实际数据应用开发有所启示。

有时可能需要转换json文件位pandas数据框。使用pandas内置的read_json()函数很容易实现,

其语法如下:

read_json(‘path’,>

    path: json文件的路径orient: json文件的格式描述,缺省是index,还有其他选型:split, records, columns, values

    下面通过几个示例进行说明。

    records格式

    假设json文件my_file.json的格式如下:

    [
       {
          "points": 25,
          "assists": 5
       },
       {
          "points": 12,
          "assists": 7
       },
       {
          "points": 15,
          "assists": 7
       },
       {
          "points": 19,
          "assists": 12
       }
    ] 

    我们使用pandas的函数read_json,只要只从orient参数位records:

    # 加载json文件,生成pandas数据框
    df = pd.read_json('data/json_file.json', orient='records')
    
    # 查看数据框
    print(df)

    输出结果:

       points  assists
    0      25        5
    1      12        7
    2      15        7
    3      19       12

    index格式

    假设json文件格式为:

    {
       "0": {
          "points": 25,
          "assists": 5
       },
       "1": {
          "points": 12,
          "assists": 7
       },
       "2": {
          "points": 15,
          "assists": 7
       },
       "3": {
          "points": 19,
          "assists": 12
       }
    } 

    与上面实现代码一样,仅需要修改orient=‘index’:

    import pandas as pd
    
    df = pd.read_json("data/my_file.json", orient='index')
    print(df)

    输出结果:

       points  assists
    0      25        5
    1      12        7
    2      15        7
    3      19       12

    columns>

    假设json文件格式为:

    {
       "points": {
          "0": 25,
          "1": 12,
          "2": 15,
          "3": 19
       },
       "assists": {
          "0": 5,
          "1": 7,
          "2": 7,
          "3": 12
       }
    } 

    加载代码修改orient参数为’columns’:

    import pandas as pd
    
    df = pd.read_json("data/my_file.json", orient='columns')
    
    print(df)

    结果与上面一致。

    values格式

    假设json文件代码如下:

    [
       [
          25,
          5
       ],
       [
          12,
          7
       ],
       [
          15,
          7
       ],
       [
          19,
          12
       ]
    ] 

    加载代码如下:

    import pandas as pd
    
    df = pd.read_json("data/my_file.json", orient='values')
    
    print(df)

    输出结果:

        0   1
    0  25   5
    1  12   7
    2  15   7
    3  19  12

    split>

    下面看split参数示例:

    import pandas as pd
    
    # 示例数据
    data =  '{"columns":["col 1","col 2"], "index":["row 1","row 2"], "data":[["a","b"],["c","d"]]}'
    df = pd.read_json(data, orient='split')
    
    print(df)

    输出交叉表形式结果:

          col 1 col 2
    row 1     a     b
    row 2     c     d

    如果不指定index,则行自动生成序号:

    import pandas as pd
    
    data =  '{"columns":["col 1","col 2"],  "data":[["a","b"],["c","d"]]}'
    df = pd.read_json(data, orient='split')
    
    print(df)

    输出结果:

      col 1 col 2
    0     a     b
    1     c     d

    压缩与编码

    使用compression参数可以解压并载入json文件,参数选型有:‘zip’,>

    使用 encoding 指定自定义编码,缺省为 UTF-8 编码。

    假设my_file.zip压缩文件格式为:

    [
       [
          25,
          5
       ],
       [
          12,
          7
       ],
       [
          15,
          7
       ],
       [
          19,
          12
       ]
    ]

    载入代码:

    import pandas as pd
    df = pd.read_json("data/my_file.zip", orient='values', compression='zip')
    print(df)

    到此这篇关于读Json文件生成pandas数据框详情的文章就介绍到这了,更多相关Json生成pandas数据框内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!