在 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]
但是我不完全确定如何将其放入熊猫数据框中,或者如果文件太大,则仅将一定百分比的数据点放入数据框中。任何帮助将不胜感激!
以下代码只会在我每次尝试运行它时使我的计算机崩溃:
import zstandard as zstd
your_filename = "..."
with open(your_filename, "rb") as f:
data = f.read()
dctx = zstd.ZstdDecompressor()
decompressed = dctx.decompress(data)
可能是由于文件的大小太大,有没有办法将这个文件的一部分提取到 pandas 数据框中?