讲师中心 微信公众号
AI工具推荐 视频效率加速

Python中高效将结构化JSON数据载入Pandas DataFrame

酷涛同学_9323

酷涛同学_9323

发布时间:2025-08-24 16:50:01

|

348人浏览过

|

来源于php中文网

原创

Python中高效将结构化JSON数据载入Pandas DataFrame

本教程详细介绍了如何使用Python和Pandas库,将一种常见的分离式JSON数据结构(数据行与列名分别存储)高效地转换为结构化的Pandas DataFrame。通过直接利用DataFrame构造函数的data和columns参数,能够实现数据的准确映射和快速处理,为后续数据分析奠定基础。

引言:JSON数据与表格化转换

在现代数据处理中,json(javascript object notation)作为一种轻量级的数据交换格式,被广泛应用于api响应、配置文件和数据存储等场景。然而,许多数据分析任务需要将非结构化或半结构化的json数据转换为更易于操作的表格形式,例如pandas dataframe。当json数据以一种特定的结构组织时,即数据行和列名分别存储在不同的字段中,pandas提供了极其简洁高效的方法来实现这种转换。

JSON数据结构解析

我们经常会遇到如下所示的JSON结构,其中包含两类关键信息:实际的数据记录和对应的列名。

{
    "data": [
        [
            "2023-01-01",
            50,
            50,
            82,
            0.0,
            4.32,
            0.1,
            0
        ],
        // ... 更多数据行
        [
            "2023-01-10",
            313,
            352,
            678,
            0.0,
            5.8522727272727275,
            0.2364217252396166,
            0
        ]
    ],
    "meta": {
        "columns": [
            "timestamp__to_date",
            "visitors",
            "sessions",
            "page_views",
            "goal_conversion_rate",
            "events_per_session",
            "returning_visitors_rate",
            "goal_conversions"
        ],
        "count": 181
    }
}

从上述结构可以看出:

  • data 键对应一个列表,其中每个子列表代表一行数据。这些子列表的元素顺序是固定的。
  • meta 键下的 columns 键对应另一个列表,其中包含了所有列的名称。这些名称的顺序与 data 列表中子列表的元素顺序一一对应。

这种结构非常适合直接映射到Pandas DataFrame,因为DataFrame的构造函数可以直接接受行数据和列名列表。

使用Pandas进行数据转换

Pandas库的DataFrame构造函数提供了一种直接且高效的方式来处理这种类型的JSON数据。核心思路是:

立即学习“Python免费学习笔记(深入)”;

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载
  1. 首先,解析JSON字符串,将其转换为Python字典。
  2. 然后,从解析后的字典中提取实际的数据列表(即data['data'])。
  3. 接着,提取列名列表(即data['meta']['columns'])。
  4. 最后,将这两个列表分别作为pd.DataFrame构造函数的data和columns参数传入,即可构建出完整的DataFrame。

示例代码

以下是实现这一转换的Python代码示例:

import json
import pandas as pd

# 示例JSON字符串
json_string = """
{
    "data": [
        [
            "2023-01-01",
            50,
            50,
            82,
            0.0,
            4.32,
            0.1,
            0
        ],
        [
            "2023-01-02",
            298,
            315,
            550,
            0.0,
            4.920634920634921,
            0.13758389261744966,
            0
        ],
        [
            "2023-01-03",
            709,
            724,
            1051,
            0.0,
            3.064917127071823,
            0.0930888575458392,
            0
        ],
        [
            "2023-01-04",
            264,
            292,
            660,
            0.0,
            6.493150684931507,
            0.2803030303030303,
            0
        ],
        [
            "2023-01-05",
            503,
            523,
            882,
            0.0,
            3.7667304015296366,
            0.14314115308151093,
            0
        ],
        [
            "2023-01-06",
            423,
            437,
            735,
            0.0,
            3.5652173913043477,
            0.12056737588652482,
            0
        ],
        [
            "2023-01-07",
            97,
            102,
            146,
            0.0,
            3.5294117647058822,
            0.13402061855670103,
            0
        ],
        [
            "2023-01-08",
            70,
            71,
            169,
            0.0,
            6.52112676056338,
            0.1,
            0
        ],
        [
            "2023-01-09",
            301,
            337,
            721,
            0.0,
            5.9614243323442135,
            0.26578073089701,
            0
        ],
        [
            "2023-01-10",
            313,
            352,
            678,
            0.0,
            5.8522727272727275,
            0.2364217252396166,
            0
        ]
    ],
    "meta": {
        "columns": [
            "timestamp__to_date",
            "visitors",
            "sessions",
            "page_views",
            "goal_conversion_rate",
            "events_per_session",
            "returning_visitors_rate",
            "goal_conversions"
        ],
        "count": 181
    }
}
"""

# 1. 解析JSON字符串
data = json.loads(json_string)

# 2. 从解析后的数据中提取行数据和列名
df_data = data['data']
df_columns = data['meta']['columns']

# 3. 使用Pandas DataFrame构造函数创建DataFrame
df = pd.DataFrame(df_data, columns=df_columns)

# 打印结果
print(df)

输出结果:

  timestamp__to_date  visitors  sessions  page_views  goal_conversion_rate  \
0         2023-01-01        50        50          82                   0.0   
1         2023-01-02       298       315         550                   0.0   
2         2023-01-03       709       724        1051                   0.0   
3         2023-01-04       264       292         660                   0.0   
4         2023-01-05       503       523         882                   0.0   
5         2023-01-06       423       437         735                   0.0   
6         2023-01-07        97       102         146                   0.0   
7         2023-01-08        70        71         169                   0.0   
8         2023-01-09       301       337         721                   0.0   
9         2023-01-10       313       352         678                   0.0   

   events_per_session  returning_visitors_rate  goal_conversions  
0            4.320000                 0.100000                 0  
1            4.920635                 0.137584                 0  
2            3.064917                 0.093089                 0  
3            6.493151                 0.280303                 0  
4            3.766730                 0.143141                 0  
5            3.565217                 0.120567                 0  
6            3.529412                 0.134021                 0  
7            6.521127                 0.100000                 0  
8            5.961424                 0.265781                 0  
9            5.852273                 0.236422                 0  

代码解析与优势

  • import json: 导入Python内置的json库,用于解析JSON字符串。
  • import pandas as pd: 导入Pandas库,通常约定简写为pd。
  • data = json.loads(json_string): 这一步将JSON字符串反序列化为Python字典。这是处理JSON数据的第一步。
  • df = pd.DataFrame(data['data'], columns=data['meta']['columns']): 这是核心步骤。
    • data['data'] 提取了JSON中包含所有数据行的列表。Pandas DataFrame构造函数能够直接接受这种列表的列表作为其data参数,将其解释为行和列。
    • data['meta']['columns'] 提取了JSON中包含所有列名的列表。将其作为columns参数传入,Pandas会根据这个列表来命名DataFrame的列,并确保数据与列名正确对齐。

这种方法的主要优势在于其简洁性和高效性。它避免了手动迭代数据、创建字典列表或进行复杂的列映射,而是直接利用了Pandas DataFrame构造函数的强大功能,一行代码即可完成复杂的数据转换。这不仅减少了代码量,也提高了代码的可读性和执行效率。

注意事项与总结

  1. JSON结构一致性: 确保传入的JSON数据结构与示例保持一致,即data和meta.columns键名及其内部结构是正确的。如果JSON结构有变,需要相应调整提取df_data和df_columns的路径。
  2. 数据类型推断: Pandas在创建DataFrame时会自动尝试推断列的数据类型。对于日期、数字等类型,通常能正确识别。如果需要更精细的控制,可以在创建DataFrame后使用df.astype()或pd.to_datetime()等方法进行类型转换。
  3. 错误处理: 在实际应用中,建议对json.loads()操作进行try-except异常处理,以应对无效的JSON字符串。同时,检查data和meta.columns键是否存在,防止因键不存在而引发KeyError。

通过本教程,您应该已经掌握了如何使用Python和Pandas将特定结构的JSON数据高效、准确地转换为DataFrame。这种技术在处理来自各种API或日志文件的数据时非常实用,为后续的数据清洗、分析和可视化奠定了坚实的基础。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2255

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3622

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1216

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4179

2025.09.10

Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

340

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

272

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

791

2026.04.13

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3311

2023.10.31

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn