首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速解析gzipped压缩的jsonline文件

加速解析gzipped压缩的jsonline文件
EN

Stack Overflow用户
提问于 2020-03-23 22:32:30
回答 1查看 510关注 0票数 0

我有大约5,000个.gzip文件(每个文件大约1MB)。每个文件都包含jsonlines格式的数据。它看起来是这样的:

代码语言:javascript
复制
{"category_id":39,"app_id":12731}
{"category_id":45,"app_id":12713}
{"category_id":6014,"app_id":13567}

我想解析这些文件,并将它们转换为pandas数据帧。有没有办法加快这个过程?这是我的代码,但有点慢(每个文件0.5s)

代码语言:javascript
复制
import pandas as pd
import jsonlines
import gzip
import os
import io


path = 'data/apps/'
files = os.listdir(path)

result = []
for n, file in enumerate(files):
    print(n, file)
    with open(f'{path}/{file}', 'rb') as f:
        data = f.read()

    unzipped_data = gzip.decompress(data)

    decoded_data = io.BytesIO(unzipped_data)
    reader = jsonlines.Reader(decoded_data)

    for line in reader:
        if line['category_id'] == 6014:
            result.append(line)


df = pd.DataFrame(result)
EN

回答 1

Stack Overflow用户

发布于 2020-03-23 22:38:54

这应该允许您读取每一行,而无需加载整个文件。

代码语言:javascript
复制
import pandas as pd
import json
import gzip
import os


path = 'data/apps/'
files = os.listdir(path)

result = []
for n, file in enumerate(files):
    print(n, file)
    with gzip.open(f'{path}/{file}') as f:
        for line in f:
            data = json.loads(line)
            if data['category_id'] == 6014:
                result.append(data)


df = pd.DataFrame(result)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60815579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档