zoukankan      html  css  js  c++  java
  • Python 中将 Pandas DataFrame 转换为 JSON?

     

    Pandas DataFrames 是数据的表格表示,其中列代表单个数据条目中的各种数据点,每一行都是唯一的数据条目。而 JSON 是用 JavaScript 对象表示法编写的文本。

    将 Pandas DataFrame 转换为 JSON

    要将 Pandas DataFrames 转换为 JSON 格式,我们使用DataFrame.to_json()Python 中Pandas库中的函数to_json 函数中有多个自定义项可用于实现所需的 JSON 格式。看一下函数接受的参数,再探讨定制

    参数:

     
    范围价值
    path_or_buf 字符串或文件名,可选 文件路径或对象。如果未指定,则结果作为字符串返回。
    东方 'split', 'records', 'index', 'columns', 'values', 'table', default='index' 指示预期的 JSON 字符串格式。
    日期格式 无,“纪元”,“iso”,默认 =“纪元” 日期转换类型。'epoch' = 纪元毫秒,'iso' = ISO8601。默认值取决于方向。对于 orient='table',默认值为 'iso'。对于所有其他方向,默认值为 'epoch'。
    双精度 整数值,默认值=10 编码浮点值时使用的小数位数。
    force_ascii 布尔值,默认值 = True 强制编码字符串为 ASCII。
    日期_单位 's', 'ms', 'us', 'ns', default='ms' 要编码到的时间单位控制时间戳和 ISO8601 精度。这些值分别代表秒、毫秒、微秒和纳秒。
    默认处理程序 可调用函数 如果对象无法以其他方式转换为适用于 JSON 的格式,则要调用的处理程序。应该接收一个参数,它是要转换的对象并返回一个可序列化的对象。
    线 布尔值,默认值 = False 如果 'orient' 是 'records' 写出行分隔的 json 格式。如果 'orient' 不正确,则会抛出 ValueError,因为其他人不是这样的。
    压缩 'infer', 'gzip', 'bz2', 'zip', 'xz', None, default='infer' 表示在输出文件中使用的压缩的字符串,仅在第一个参数是文件名时使用。默认情况下,压缩是从文件名推断的。
    指数 布尔值,默认值 = True 是否在 JSON 字符串中包含索引值。仅当 orient 为 'split' 或 'table' 时才支持不包括索引 (index=False)。
    缩进 整数值 用于缩进每条记录的空格长度。无需提及可选参数。

    我们现在看几个例子来理解函数DataFrame.to_json的用法。

    示例 1:基本用法

     
    import numpy as np
    import pandas as pd
      
      
    data = np.array([['1', '2'], ['3', '4']])
      
    dataFrame = pd.DataFrame(data, columns = ['col1', 'col2'])
    json = dataFrame.to_json()
    print(json)

    输出 :

    {"col1":{"0":"1", "1":"3"}, "col2":{"0":"2", "1":"4"}}
    

    示例 2:探索 DataFrame.to_json 函数的 'orient' 属性

    import numpy as np
    import pandas as pd
      
      
    data = np.array([['1', '2'], ['3', '4']])
       
    dataFrame = pd.DataFrame(data, columns = ['col1', 'col2'])
    json = dataFrame.to_json()
    print(json)
      
    json_split = dataFrame.to_json(orient ='split')
    print("json_split = ", json_split, "
    ")
       
    json_records = dataFrame.to_json(orient ='records')
    print("json_records = ", json_records, "
    ")
       
    json_index = dataFrame.to_json(orient ='index')
    print("json_index = ", json_index, "
    ")
       
    json_columns = dataFrame.to_json(orient ='columns')
    print("json_columns = ", json_columns, "
    ")
       
    json_values = dataFrame.to_json(orient ='values')
    print("json_values = ", json_values, "
    ")
       
    json_table = dataFrame.to_json(orient ='table')
    print("json_table = ", json_table, "
    ")
     
     

    输出 :

    json_split = {“columns”:[“col1”, “col2”], “index”:[0, 1], “data”:[[“1”, “2”], [“3”, “4”]]}
    
    json_records = [{“col1″:”1”, “col2″:”2”}, {“col1″:”3”, “col2″:”4”}]
    
    json_index = {“0”:{“col1″:”1”, “col2″:”2”}, “1”:{“col1″:”3”, “col2″:”4”}}
    
    json_columns = {“col1”:{“0″:”1”, “1”:”3″}, “col2”:{“0″:”2”, “1”:”4″}}
    
    json_values = [[“1”, “2”], [“3”, “4”]]
    
    json_table = {“schema”:{“fields”:[{“name”:”index”, “type”:”integer”}, {“name”:”col1″, “type”:”string”}, {“name”:”col2″, “type”:”string”}], “primaryKey”:[“index”], “pandas_version”:”0.20.0″}, “data”:[{“index”:0, “col1″:”1”, “col2″:”2”}, {“index”:1, “col1″:”3”, “col2″:”4”}]}

     

     

    JSON 字符串的格式:
    
                     - 'split' : dict like {'index' -> [index], 'columns' -> [columns],
                       '数据' -> [值]}
                     - 'records' : list like [{column -> value}, ... , {column -> value}]
                     - 'index' : dict like {index -> {column -> value}}
                     - 'columns' : dict like {column -> {index -> value}}
                     - 'values' : 只是值数组
                     - 'table' : dict like {'schema': {schema}, 'data': {data}}

    原始文档介绍

    """
            将对象转换为 JSON 字符串。
    
            注意 NaN 和 None 将被转换为 null 和 datetime 对象
            将转换为 UNIX 时间戳。
    
            参数
            ----------
            path_or_buf : str 或文件句柄,可选
                文件路径或对象。如果未指定,则返回结果为
                一个字符串。
            东方:str
                指示预期的 JSON 字符串格式。
    
                * 系列:
    
                    - 默认为“索引”
                    - 允许的值为:{'split','records','index','table'}。
    
                * 数据框:
    
                    - 默认为“列”
                    - 允许的值为:{'split''records''index''columns'''''}。
    
                * JSON 字符串的格式:
    
                    - 'split' : dict like {'index' -> [index], 'columns' -> [columns],
                      '数据' -> [值]}
                    - 'records' : list like [{column -> value}, ... , {column -> value}]
                    - 'index' : dict like {index -> {column -> value}}
                    - 'columns' : dict like {column -> {index -> value}}
                    - 'values' : 只是值数组
                    - 'table' : dict like {'schema': {schema}, 'data': {data}}
    
                    描述数据,其中数据组件就像“orient='records'”。
    
                .. 版本已更改:: 0.20.0
    
            日期格式:{无,'纪元''iso'}
                日期转换类型。 'epoch' = 纪元毫秒,
                'iso' = ISO8601。默认值取决于`orient`。为了
                ``orient='table'``,默认为'iso'。对于所有其他方向,
                默认值为“纪元”。
            double_precision :int,默认为 10
                编码时使用的小数位数
                浮点值。
            force_ascii : bool,默认为 True
                强制编码字符串为 ASCII。
            date_unit :str,默认'ms'(毫秒)
                编码到的时间单位,控制时间戳和 ISO8601
                精确。 's''ms''us''ns' 之一表示秒、毫秒、
                分别为微秒和纳秒。
            default_handler :可调用,默认无
                如果对象不能以其他方式转换为
                JSON 的合适格式。应该接收一个参数是
                要转换并返回可序列化对象的对象。
            行:布尔值,默认为假
                如果 'orient''records' 写出行分隔的 json 格式。将要
                如果“东方”不正确,则抛出 ValueError,因为其他人未列出
                喜欢。
    
            压缩:{'推断''gzip''bz2''zip''xz'、无}
    
                表示在输出文件中使用的压缩的字符串,
                仅在第一个参数是文件名时使用。默认情况下,
                从文件名推断压缩。
    
                .. 版本添加:: 0.21.0
                .. 版本已更改:: 0.24.0
                   添加了“推断”选项并设置为默认值
            索引:布尔值,默认为真
                是否在 JSON 字符串中包含索引值。不是
                仅在以下情况下才支持包含索引 (``index=False``)
                orient 是 'split''table'。
    
                .. 版本已添加:: 0.23.0
    
            缩进:整数,可选
               用于缩进每条记录的空格长度。
    
               .. 版本已添加:: 1.0.0
    
            退货
            -------
            无或 str
                如果 path_or_buf 为 None,则返回生成的 json 格式作为
                细绳。否则返回无。
    
            也可以看看
            --------
            读取_json
    
            笔记
            -----
            ``indent=0`` 的行为与 stdlib 不同,它不
            缩进输出但确实插入换行符。目前,“缩进=0”
            和默认的“缩进=无”在熊猫中是等价的,尽管这
            在未来的版本中可能会改变。
    
            例子
            --------
    
            >>> df = pd.DataFrame([['a', 'b'], ['c', 'd']],
            ... index=['第 1 行''第 2 行'],
            ... columns=['col 1', 'col 2'])
            >>> df.to_json(orient='split')
            '{"columns":["col 1","col 2"],
              “索引”:[“第 1 行”,“第 2 行”],
              "数据":[["a","b"],["c","d"]]}'
    
            使用“记录”格式的 JSON 编码/解码数据帧。
            请注意,此编码不会保留索引标签。
    
            >>> df.to_json(orient='记录')
            '[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]'
    
            使用“索引”格式的 JSON 编码/解码数据帧:
    
            >>> df.to_json(orient='index')
            '{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d" }}'
    
            使用“列”格式的 JSON 编码/解码数据帧:
    
            >>> df.to_json(orient='columns')
            '{"col 1":{"row 1":"a","row 2":"c"},"col 2":{"row 1":"b","row 2":"d" }}'
    
            编码/d
  • 相关阅读:
    JS jQuery显示隐藏div的几种方法
    PHP 二维数组去重(保留指定键值的同时去除重复的项)
    Java面试题解析(一)
    Java :面向对象
    使用 Spring Framework 时常犯的十大错误
    Spring Boot 面试的十个问题
    《深入理解 Java 内存模型》读书笔记
    Spring Boot 2.0 迁移指南
    MaidSafe区块链项目白皮书解读
    20190712共学问题归纳
  • 原文地址:https://www.cnblogs.com/a00ium/p/14875138.html
Copyright © 2011-2022 走看看