python| 将list或json数据输出为excel文件(1)

又是让chatGPT写代码了~

需求的输入输出是:

# 输入:
dataclasses = {'took': 1327, 'responses': [
{'took': 1327, 'aggregations': {
        '2': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 111},
                          {'key': 'BBB', 'doc_count': 222},
                          {'key': 'CCC', 'doc_count': 333},
                          {'key': 'DDD', 'doc_count': 444}]}}, 'status': 200},
{'took': 1327, 'aggregations': {
        '4': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 555},
                          {'key': 'BBB', 'doc_count': 666},
                          {'key': 'CCC', 'doc_count': 777},
                          {'key': 'DDD', 'doc_count': 888}]}}, 'status': 200},
]}
输出为:
'AAA', 111, 555
'BBB', 222, 666
'CCC', 333, 777
'DDD', 444, 888

或
AAA'       'BBB'      CCC'       DDD'
111        222        333        444
555        666        777        888

多次提问之后,得到满足需求的答案,其中提问为

提供python代码,将字典dataclasses中的每个buckets当做不同样本,其中key为特征名,doc_count为特征值,最终输出一份excel文件的特征表,其中
dataclasses = {'took': 1327, 'responses': [
{'took': 1327, 'aggregations': {
        '2': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 111},
                          {'key': 'BBB', 'doc_count': 222},
                          {'key': 'CCC', 'doc_count': 333},
                          {'key': 'DDD', 'doc_count': 444}]}}, 'status': 200},
{'took': 1327, 'aggregations': {
        '4': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 555},
                          {'key': 'BBB', 'doc_count': 666},
                          {'key': 'CCC', 'doc_count': 777},
                          {'key': 'DDD', 'doc_count': 888}]}}, 'status': 200},
]}

特征表的示例为:
AAA'        'BBB'        CCC'        DDD'
111        222        333        444
555        666        777        888

答案为

import pandas as pd

dataclasses = {'took': 1327, 'responses': [
    {'took': 1327, 'aggregations': {
        '2': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 111},
                          {'key': 'BBB', 'doc_count': 222},
                          {'key': 'CCC', 'doc_count': 333},
                          {'key': 'DDD', 'doc_count': 444}]}}, 'status': 200},
    {'took': 1327, 'aggregations': {
        '4': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 0,
              'buckets': [{'key': 'AAA', 'doc_count': 555},
                          {'key': 'BBB', 'doc_count': 666},
                          {'key': 'CCC', 'doc_count': 777},
                          {'key': 'DDD', 'doc_count': 888}]}}, 'status': 200},
]}

# 创建一个空的DataFrame
df = pd.DataFrame()

# 遍历每个response
for response in dataclasses['responses']:
    # 获取buckets
    buckets = response['aggregations'][str(list(response['aggregations'].keys())[0])]['buckets']
    # 将buckets转换为字典
    bucket_dict = {bucket['key']: bucket['doc_count'] for bucket in buckets}
    # 将字典转换为DataFrame的一行
    row = pd.DataFrame(bucket_dict, index=[0])
    # 将行添加到DataFrame中
    df = pd.concat([df, row])

# 将DataFrame写入Excel文件
df.to_excel('特征表.xlsx', index=False)

### 使用 PythonJSON 数据导出为 Excel 文件Python 中,可以使用 `pandas` 库将 JSON 数据导出为 Excel 文件。`pandas` 提供了强大的数据处理能力,能够轻松地将 JSON 数据结构换为 DataFrame,并进一步导出为 `.xlsx` 格式。 #### 数据准备与解析 首先需要导入 `json` 模块来读取 JSON 数据,并将其解析为 Python 对象。如果是从文件中读取 JSON 数据,可以使用 `json.load()` 方法。例如: ```python import json with open("data.json", "r", encoding="utf-8") as f: data = json.load(f) ``` 该方法适用于读取结构清晰的 JSON 文件,并将其换为 Python 的字典列表形式的数据结构[^3]。 #### 数据换与导出 接下来,可以使用 `pandas` 将解析后的数据换为 DataFrame,并导出为 Excel 文件。例如: ```python import pandas as pd # 假设 data 是一个包含多个字典对象的列表 df = pd.DataFrame(data) # 导出到 Excel 文件 df.to_excel("output.xlsx", index=False) ``` 如果 JSON 数据结构较为复杂,可能需要对数据进行适当的整理和映射,以确保其能够正确地被换为表格形式。例如,可以遍历数据并提取特定字段: ```python list_data = [] for item in data: info = [item.get("name"), item.get("age")] list_data.append(info) column = ["姓名", "年龄"] df = pd.DataFrame(columns=column, data=list_data) df.to_excel("output.xlsx", index=False) ``` 这种方式适用于处理嵌套结构字段不一致的 JSON 数据集[^3]。 #### 处理大型 JSON 数据集 对于大型 JSON 数据集,建议采用流式读取的方式避免内存溢出问题。可以使用 `ijson` 等库逐条读取数据,并逐步构建 DataFrame。此外,还可以考虑分批次写入 Excel 文件换为 CSV 格式再进行合并。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值