python - 如何将 .zst 文件提取到 Pandas 数据框中

标签 python pandas dataframe zstd

我在 Python 方面有点初学者,但我在学校的一个项目需要我在这个 reddit 流行数据集上执行分类算法。这些文件是巨大的 .zst 文件,可以在这里找到:https://files.pushshift.io/reddit/submissions/ 无论如何,我只是不确定如何将其提取到数据库中,因为到目前为止我们所做的任务只是使用了 .csv 数据集,我可以轻松地将其放入 pandas 数据框中。 我偶然发现了一个不同的帖子,我尝试使用代码:

    def transform_zst_file(self,infile):
        zst_num_bytes = 2**22
        lines_read = 0
        dctx = zstd.ZstdDecompressor()
        with dctx.stream_reader(infile) as reader:
            previous_line = ""
            while True:
                chunk = reader.read(zst_num_bytes)
                if not chunk:
                    break
                string_data = chunk.decode('utf-8')
                lines = string_data.split("\n")
                for i, line in enumerate(lines[:-1]):
                    if i == 0:
                        line = previous_line + line
                    self.appendData(line, self.type)
                    lines_read += 1
                    if self.max_lines_to_read and lines_read >= self.max_lines_to_read:
                        return
                previous_line = lines[-1]

但我不完全确定如何将其放入 pandas 数据框中,或者如果文件太大,则仅将一定百分比的数据点放入数据框中。 任何帮助将不胜感激!

以下代码只会在我每次尝试运行时使我的计算机崩溃:

import zstandard as zstd  
your_filename = "..." 
with open(your_filename, "rb") as f:     
    data = f.read()  

dctx = zstd.ZstdDecompressor() 
decompressed = dctx.decompress(data)

可能是因为文件太大,有没有办法将这个文件的一部分提取到 pandas 数据框中?

最佳答案

该文件已使用压缩库 Zstandard (https://github.com/facebook/zstd) 进行压缩。

对您来说最简单的事情可能是安装 python-zstandard (https://pypi.org/project/zstandard/) 使用

pip install zstandard

然后在 python 脚本中运行类似

的东西
import zstandard as zstd

your_filename = "..."
with open(your_filename, "rb") as f:
    data = f.read()

dctx = zstd.ZstdDecompressor()
decompressed = dctx.decompress(data)

现在您可以直接使用解压后的数据,也可以将其写入某个文件,然后将其加载到 pandas。祝你好运!

关于python - 如何将 .zst 文件提取到 Pandas 数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61067762/

相关文章:

python - 通过对列进行分组来合并 pandas 数据框的行

python - 在 pandas/python 中,读取存储为字符串的数组

python - pandas 通过非 nan 值之前和之后填充 nans

python - 如何根据上一行的值添加新列

python - 如何将系列或序列分配给 dask 数据框列?

r - 根据不同列中的另一行更改行的值

python - 为什么 ,,b = 1,2,3 在 IPython 中被解析为 (',b' , '=' , '1,2,3' )?

python - 如何在Python中使用tabula提取PDF文件中存在的多个表格?

python - Django 中的cache.fetch?

Python Pandas 从复杂字典中创建记录