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
  • 相关阅读:
    FreeCommander 学习手册
    String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
    StringBuffer 详解 (String系列之3)
    StringBuilder 详解 (String系列之2)
    java io系列26之 RandomAccessFile
    java io系列25之 PrintWriter (字符打印输出流)
    java io系列24之 BufferedWriter(字符缓冲输出流)
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
  • 原文地址:https://www.cnblogs.com/a00ium/p/14875138.html
Copyright © 2011-2022 走看看