
在现代数据处理中,json(javascript object notation)作为一种轻量级的数据交换格式,被广泛应用于api响应、配置文件和数据存储等场景。然而,许多数据分析任务需要将非结构化或半结构化的json数据转换为更易于操作的表格形式,例如pandas dataframe。当json数据以一种特定的结构组织时,即数据行和列名分别存储在不同的字段中,pandas提供了极其简洁高效的方法来实现这种转换。
我们经常会遇到如下所示的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
}
}从上述结构可以看出:
这种结构非常适合直接映射到Pandas DataFrame,因为DataFrame的构造函数可以直接接受行数据和列名列表。
Pandas库的DataFrame构造函数提供了一种直接且高效的方式来处理这种类型的JSON数据。核心思路是:
立即学习“Python免费学习笔记(深入)”;
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
以下是实现这一转换的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
这种方法的主要优势在于其简洁性和高效性。它避免了手动迭代数据、创建字典列表或进行复杂的列映射,而是直接利用了Pandas DataFrame构造函数的强大功能,一行代码即可完成复杂的数据转换。这不仅减少了代码量,也提高了代码的可读性和执行效率。
通过本教程,您应该已经掌握了如何使用Python和Pandas将特定结构的JSON数据高效、准确地转换为DataFrame。这种技术在处理来自各种API或日志文件的数据时非常实用,为后续的数据清洗、分析和可视化奠定了坚实的基础。
以上就是Python中高效将结构化JSON数据载入Pandas DataFrame的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号