You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode中Jupyter加载超大JSON文件生成DataFrame的方法咨询

单个JSON分卷的分块合并方案

你当前代码返回的是可迭代的JsonReader对象,直接迭代拼接所有分块即可生成单个分卷对应的完整DataFrame,实现代码如下:

import pandas as pd

chunk_size = 200000
chunk_iter = pd.read_json("xaa.json", lines=True, chunksize=chunk_size)
chunk_list = []

for chunk in chunk_iter:
    # 可在此处添加数据清洗、删除无用字段的逻辑,降低内存占用
    chunk_list.append(chunk)

# 合并为单个分卷的完整DataFrame
df_single_volume = pd.concat(chunk_list, ignore_index=True)

如果单个2GB分卷合并后内存占用仍然过高,可跳过本步骤,直接采用边读分块边写入数据库的方案,全程无需加载全量数据到内存,完全避免内核崩溃问题。

全部分卷批量入库方案(内存友好)

推荐使用轻量的SQLite数据库,无需额外部署服务,Ubuntu系统原生支持,实现全量数据落地的代码如下:

import pandas as pd
import sqlite3
from tqdm import tqdm # 可选,用于显示处理进度,可通过pip install tqdm安装

# 基础配置
chunk_size = 200000
# 按实际拆分的文件名填充列表
json_file_list = ["xaa.json", "xab.json", "xac.json", "xad.json", "xae.json", "xaf.json"]
db_path = "sentiment_research.db" # 数据库文件会自动生成在当前目录
table_name = "raw_review_data"

# 连接数据库
conn = sqlite3.connect(db_path)

for file in tqdm(json_file_list, desc="处理全部分卷"):
    chunk_iter = pd.read_json(file, lines=True, chunksize=chunk_size)
    for chunk in tqdm(chunk_iter, desc=f"处理{file}分块", leave=False):
        # 写入数据库,采用追加模式
        chunk.to_sql(table_name, conn, if_exists="append", index=False)

# 关闭连接
conn.close()
从数据库读取数据生成DataFrame的方法
import pandas as pd
import sqlite3

conn = sqlite3.connect("sentiment_research.db")
# 内存足够时读取全量数据生成完整DataFrame
df_full = pd.read_sql("SELECT * FROM raw_review_data", conn)
# 内存不足时按需读取子集,示例:仅读取2023年的评论数据
# df_subset = pd.read_sql("SELECT * FROM raw_review_data WHERE create_time >= '2023-01-01'", conn)

conn.close()
  • 入库后可给常用查询字段(如评论时间、领域标签等)创建索引,执行conn.execute("CREATE INDEX idx_create_time ON raw_review_data(create_time)")即可大幅提升查询速度
  • 数据写入前提前过滤情感分析不需要的字段,可降低30%以上的内存和存储占用
  • 后续需要做大量聚合统计时,可替换SQLite为DuckDB,查询性能提升5-10倍,同样是本地文件型数据库无需额外部署

内容的提问来源于stack exchange,提问作者Jhonny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:03