python 常用数据压缩工具对比
你还在为数据过大,占用内存大而烦心吗?下面这些压缩工具可以帮助你
import sys
import brotli # brotli 是一种现代的压缩算法,提供了良好的压缩率和解压速度。它通常用于网页资源的压缩,如 HTML、CSS 和 JavaScript 文件
import pandas as pd
import lzma # lzma 是一个标准库,用于处理 .xz 和 .lzma 文件。它提供了非常高的压缩率。
import gzip # gzip 是一个标准库,用于读取和写入 .gz 文件。它基于 zlib 提供的功能。
import zlib # zlib 是一个标准库,用于支持 gzip 压缩格式。它提供了数据压缩和解压缩功能。
import bz2 # bz2 是一个标准库,用于处理 .bz2 文件。它提供了较高的压缩率
import lz4.frame # lz4 是一个非常快速的压缩算法,适用于需要高压缩速度的场景。它的压缩率较低,但解压速度极快
import zstandard as zstd # zstd 是一个提供高压缩率和高速的压缩算法。它可以调节压缩率和速度之间的平衡,非常适合大数据压缩
import snappy # snappy 是一个快速的压缩算法,适用于需要快速压缩和解压缩的场景,如实时系统。其压缩率较低,但速度非常快 安装 pip install python-snappy
import blosc # blosc 是一个用于科学数据的压缩库,特别适合于多维数组和块状数据的压缩。它提供多线程压缩,速度非常快
import fastlz # pyfastlz 是一个基于 FastLZ 的压缩库,提供了快速的压缩和解压缩功能。
df = pd.read_csv('3.csv')
brotli_compress_data = brotli.compress(str(df).encode('utf-8'))
lzma_compress_data = lzma.compress(str(df).encode('utf-8'))
gzip_compress_data = gzip.compress(str(df).encode('utf-8'))
zlib_compress_data = zlib.compress(str(df).encode('utf-8'))
bz2_compress_data = bz2.compress(str(df).encode('utf-8'))
lz4_compress_data = lz4.frame.compress(str(df).encode('utf-8'))
cctx = zstd.ZstdCompressor()
zstd_compress_data = cctx.compress(str(df).encode('utf-8'))
snappy_compress_data = snappy.compress(str(df).encode('utf-8'))
blosc_compress_data = blosc.compress(str(df).encode('utf-8'))
fastlz_compress_data = fastlz.compress(str(df).encode('utf-8'))
print("原始数据占用内存:",sys.getsizeof(df))
print("brotli 数据压缩至:",sys.getsizeof(brotli_compress_data))
print("lzma 数据压缩至:",sys.getsizeof(lzma_compress_data))
print("gzip 数据压缩至:",sys.getsizeof(gzip_compress_data))
print("zlib 数据压缩至:",sys.getsizeof(zlib_compress_data))
print("bz2 数据压缩至:",sys.getsizeof(bz2_compress_data))
print("lz4 数据压缩至:",sys.getsizeof(lz4_compress_data))
print("zstd 数据压缩至:",sys.getsizeof(zstd_compress_data))
print("snappy 数据压缩至:",sys.getsizeof(snappy_compress_data))
print("blosc 数据压缩至:",sys.getsizeof(blosc_compress_data))
print("fastlz 数据压缩至:",sys.getsizeof(fastlz_compress_data))
结果如下: