Как извлечь файлы .zst в pandas фрейм данных - PullRequest
1 голос
/ 06 апреля 2020

Я немного новичок, когда дело доходит до 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 фрейм данных?

1 Ответ

1 голос
/ 06 апреля 2020

Файл был сжат с использованием 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. Удачи!

...