Bcolz 是一款支持数据压缩的,列数存储软件。提供可压缩内存和磁盘的柱状分块数据容器。列存储允许有效地查询表,以及列添加和删除。它基于 NumPy ,并将其用作标准数据容器与 Bcolz 对象进行通信。
默认情况下,Bcolz 对象被压缩,不仅可以减少内存 / 磁盘存储,还可以提高 I / O 速度。压缩过程由 Blosc 在内部执行,Blosc 是针对二进制数据进行优化的高性能多线程压缩器。
Bcolz 也可以在内部使用 numexpr(默认情况下,如果它检测到 numexpr 已安装)或 dask ,以加速许多向量和查询操作。 numexpr /dask 可以优化内存使用,并使用多线程进行计算。
#示例
import bcolz
import pandas as pd
import numpy as np
df = pd.read_csv("./000002.SZ.csv")
arr = np.array(df)
carr = bcolz.carray(arr, chunklen=10 * 1024,expectedlen=10*1024,rootdir="./000002")
#存磁盘
carr.flush()
#读取数据
path = './000002'
ct = bcolz.open(rootdir=path)
print(ct)
1.直接修改
#把data.bcolz文件中A列为0的数据填充为1000
data = bcolz.open("data.bcolz", "a") #以"a"方式打开可以进行修改
col_A = data["A"]
for i in range(col_A.shape[0]):
if col_A[i] == 0:
col_A[i] = 1000
data.flush() #刷新进去