我的工作流程通常包括将一些数据(通常来自 CSV 文件)加载到 pandas 数据框中,对其进行清理,为每列定义正确的数据类型,然后将其导出到 SQL 服务器。
对于SQL Server 不可用的情况,存储清理后的数据和每列数据类型的显式定义有哪些好的替代方法?
- 我测试过的唯一真正的解决方案是导出到一个 sqlite .db 文件,使用这里的答案来确保日期被读取为日期。
Feather、HDF5、Parquet怎么样?Pandas支持它们,但我对这些格式了解不多。我读过feather不推荐长期存储(因为API可能会改变?不清楚)
我不确定是否使用 pickle:我知道它不是一种安全格式,并且 API 不断变化并破坏向后兼容性
CSV 并不是一个真正的选择,因为根据我的数据推断数据类型通常是一场噩梦;将数据读回熊猫时,我需要明确声明格式,包括日期格式,否则:
- pandas 可以创建列,其中一行是 dd-mm-yyyy,另一行是 mm-dd-yyyy(请参见此处)。加
- 我有许多文本列,其中前 10k 行似乎是数字,接下来的 100 行是文本,因此大多数软件会推断该列是数字,然后导入失败。也许我需要创建一个函数来导出一个包含所有数据类型定义、日期格式等的辅助文件?可行但麻烦。
更新:这是一个有趣的比较,根据 HDF5 是最快的格式:https ://medium.com/@bobhaffner/gist-to-medium-test-db3d51b8ba7b
我似乎明白 HDF5 和 Parquet 之间的另一个区别是 datetime64 在 Hdf5 中没有直接等价物。大多数人似乎将他们的日期作为 ISO 日期格式 (yyyy-mm-dd) 字符串存储在 HDF5 中。