我正在寻找一种按城市保存房价数据的方法,例如每个城市一个数据框的熊猫面板。但我需要数据框是独立的,这意味着如果一个数据框损坏,其他数据框不会受到影响。我尝试使用 pickle 和 csv,但是一旦一行被损坏,我就会丢失整个文件。
将许多熊猫数据框保存在一起的最佳方法是什么?
数据挖掘
Python
熊猫
数据框
2021-09-22 13:20:17
1个回答
如果您想充分参与并能够为您创建的每个面板指定名称,您可以查看 h5 文件格式。
这允许您在命名容器中对数据集进行分组。然后,您可以稍后从磁盘中逐一读取它们,即您不需要将整个数据集读入内存。
以下是保存此类数据集的函数示例:
def save_h5(h5_filename, data, labels, descr=None,
data_dtype='float32', label_dtype='float32'):
"""Create a compressed .h5 file containing:
data : numpy array
labels : numpy array
descr : text description ofthe data contained (must be a string)
"""
if os.path.exists(h5_filename):
# prevent overwriting a file
sys.exit('File already exists!')
h5_fout = h5py.File(h5_filename)
h5_fout.create_dataset(
name='data',
data=data,
compression='gzip', compression_opts=4,
dtype=data_dtype)
h5_fout.create_dataset(
name='labels',
data=labels,
compression='gzip', compression_opts=4,
dtype=label_dtype)
if descr is not None:
h5_fout.create_dataset(
'description', data=descr)
h5_fout.close()
有关参数的含义,请查看文档。
您可以编写类似的函数来访问保存的 h5 文件。这确实是一种灵活的数据保存方式,并且可以使用开源世界中最著名的(广泛传播的)算法之一进行压缩:gzip!还实现了其他可能性。
附带说明一下,如果您想最大限度地减少损坏的可能性,您可以考虑将每个面板/DataFrame(无论您采用哪种方法)保存到单独的文件中,然后进行复制/备份。
另外,你说:
我尝试使用 pickle 和 csv,但是一旦一行被损坏,我就会丢失整个文件。
...一个简单csv文件的美妙之处在于,您实际上可以在记事本或电子表格中打开它,通常会找到“损坏”的行并修复/删除它。另一方面,Pickle 调试起来有点复杂。
其它你可能感兴趣的问题