在保留数据类型的同时导出 pandas 数据帧的格式是什么?不是 CSV;数据库?镶木地板?

What format to export pandas dataframe while retaining data types? Not CSV; Sqlite? Parquet?

我的工作流程通常涉及将一些数据(通常来自 CSV 文件)加载到 pandas 数据框中,对其进行清理,为每一列定义正确的数据类型,然后将其导出到 SQL 服务器.

对于那些情况当 SQL 服务器不可用时,有什么好的替代方法来存储清理后的数据和每列数据类型的显式定义?

UPDATE:这是一个有趣的比较,据此 HDF5 是最快的格式:https://medium.com/@bobhaffner/gist-to-medium-test-db3d51b8ba7b

我似乎明白 HDF5 和 Parquet 之间的另一个区别是 datetime64 在 Hdf5 中没有直接等效项。大多数人似乎将他们的日期存储在 HDF5 中作为 ISO 日期格式 (yyyy-mm-dd) 字符串。

如果你真的想避免 pickle 和保存 CSV(我不完全同意你关于那些不可行的选项的说法)那么你可以 运行 一个本地数据库服务器来保存数据并在 SQL 服务器再次可用时执行 dump/restore 处理。否则:

使用 DataFrame 对象的 to_pickle 方法。

或者,使用您的数据类型保存数据类型 json 文件,并在保存 CSV 文件时指定日期格式:

# export
import json
data_types = df.dtypes.astype(str).to_dict()
with open('data_type_key.json', 'w') as f
    json.dump(data_types, f)
df.to_csv('data.csv', date_format='%Y%m%d')

# import
data_types = json.loads('data_type_key.json')
data_frame = pd.read_csv(your_csv_path, dtype=data_types)

如果您的数据是二维的 table 并且用于像 Apache Spark 这样的大数据处理,请使用 parquet。如您所述,HDF5 不适合处理 date/time。

如果您的数据有 3 个或更多维度,HDF5 将是一个不错的选择 - 特别是对于长期归档、可移植性和共享。

如果性能很重要,Apache Feather 是最快的。