python--pandas--read_json

文章目录

      • 1. path_or_buf 要读取的json对象
      • 2. orient 指定解析json的格式
      • 3. tye 指定返回的数据类型
      • 4. dtype 推断或指定列的数据类型
      • 5. convert_axes
      • 6. convert_dates
      • 7. keep_default_dates
      • 8. numpy
      • 9. precise_float 解析浮点型
      • 10. date_unit 解析时间戳的单位
      • 11. encoding 编码
      • 12. lines
      • 13. chunksize
      • 14. compression 压缩

1. path_or_buf 要读取的json对象

  • json字符串, json文件路径, json文件URL, json字符串IO对象
  • 会自动推断json格式, 当无法自动推断或有异议时请指定orient
  • 以下示例是可以自动推断出格式的json字符串
# [{column -> value}, ... , {column -> value}]
data1 = [{"a" : 1, "b" : 2}, {"a" : 10, "b" : 20}]
# {column -> {index -> value}}
data2 = {"A": {"a" : 1, "b" : 2}, "B": {"a" : 10, "b" : 20}}
# {column -> [value, ..., value], ..., column -> [value, ..., value]}
data3 = {"A": [1, 2], "B": [3, 4]}
pd.read_json(json.dumps(data1))

python--pandas--read_json_第1张图片python--pandas--read_json_第2张图片python--pandas--read_json_第3张图片

2. orient 指定解析json的格式

  • split: {index -> [index], columns -> [columns], data -> [values]}
  • records: [{column -> value}, … , {column -> value}]
  • index: {index -> {column -> value}}
  • columns: {column -> {index -> value}}
  • values: 数组
  • 当 typ == ‘series’ 时,仅支持 {‘split’,‘records’,‘index’}, 默认为 index
  • 当 typ == ‘frame’ 时, 支持 {‘split’,‘records’,‘index’, ‘columns’,‘values’, ‘table’} 默认为 columns
data1 = [{"a" : 1, "b" : 2}, {"a" : 10, "b" : 20}]
data2 = {"A": {"a" : 1, "b" : 2}, "B": {"a" : 10, "b" : 20}}
data3 = {"A": [1, 2], "B": [3, 4]}
data4 = {"index": ["a", "b"], "columns": ["A", "B"], "data": [[1, 2], [3, 4]]}
pd.read_json(json.dumps(data1), orient="index")
pd.read_json(json.dumps(data2), orient="index")
pd.read_json(json.dumps(data3), orient="index")
pd.read_json(json.dumps(data4), orient="split")

python--pandas--read_json_第4张图片python--pandas--read_json_第5张图片python--pandas--read_json_第6张图片python--pandas--read_json_第7张图片

3. tye 指定返回的数据类型

  • frame 默认值, 返回DataFrame
  • series 返货Series
data5 = {"index": ["a", "b"], "data": [[1, 2], [3, 4]]}
pd.read_json(json.dumps(data5), orient="split", typ="series")

data5

4. dtype 推断或指定列的数据类型

  • True 默认值,自动推断
  • False 不推断数据类型
  • dict 根据列名指定数据类型
data2 = {"A": {"a" : 1, "b" : 2}, "B": {"a" : 10, "b" : 20}}
pd.read_json(json.dumps(data2), dtype={"A": float})

python--pandas--read_json_第8张图片

5. convert_axes

  • bool 尝试将轴转换为正确的dtypes

6. convert_dates

  • True 默认值,会尝试解析列名类似如下规则的列为日期
    • 以 _at 结尾
    • 以 _time 结尾
    • 以 timestamp 开头
    • modified or date
  • False 不解析日期
  • [str] 指定要解析为日期的列名
data6 = {"create_time": {"a" : 1111111111, "b" : 1111111112}, "B": {"a" : 10, "b" : 20}}
pd.read_json(json.dumps(data6))

python--pandas--read_json_第9张图片

7. keep_default_dates

  • True 默认值 只有当convert_dates也为True时才会尝试自动解析日期列
  • False 即使convert_dates为True也不会自动推断解析日期, 但如果指定具体的解析列依然会正常解析

8. numpy

  • True 直接解析为数组, 仅支持纯数字的数据, 会将所有数据转为整型

9. precise_float 解析浮点型

  • True 使用更高精度的(strtod) 函数解析 double 数据类型
  • False 默认 使用内置函数解析

10. date_unit 解析时间戳的单位

  • 默认自动推断
  • 也可指定 s, ms, us, ns

11. encoding 编码

  • 默认使用 utf-8 编码

12. lines

13. chunksize

14. compression 压缩

  • infer 根据文件后缀名自动推断
  • {‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}

你可能感兴趣的:(python,pandas)