私のワークフローでは通常、いくつかのデータ (通常は CSV ファイルから) を pandas データフレームに読み込み、それをクレンジングし、各列の適切なデータ型を定義してから、SQL サーバーにエクスポートします。
SQL サーバーが利用できない状況では、クレンジングされたデータと各列のデータ型の明示的な定義を格納するための適切な代替手段は何ですか?
- 私がテストした唯一の実際の解決策は、日付が日付として読み取られることを確認するために、こちらの回答を使用して sqlite .db ファイルにエクスポートすることです。
Feather、HDF5、寄木細工はどうですか?Pandasはそれらをサポートしていますが、私はこれらの形式についてあまり知りません。フェザーは長期保存はお勧めしないと読んだことがあります(APIが変更される可能性があるため?不明)
pickle の使用についてはよくわかりません。安全な形式ではないことは理解しています。また、API が変更され続け、下位互換性が失われています。
私のデータのデータ型を推測することはしばしば悪夢であるため、CSV は実際にはオプションではありません。データをパンダに戻すときは、日付形式を含む形式を明示的に宣言する必要があります。
- pandas は、1 つの行が dd-mm-yyyy で、別の行が mm-dd-yyyy である列を作成できます (こちらを参照)。プラス
- 最初の 10,000 行が数値で、次の 100 行がテキストのように見えるテキスト列が多数あるため、ほとんどのソフトウェアは列が数値であると推測し、インポートに失敗します。たぶん、すべてのデータ型定義、日付形式などを含む補助ファイルをエクスポートする関数を作成する必要があるでしょうか? 実現可能だが面倒。
更新: HDF5 が最速のフォーマットであったという興味深い比較です: https://medium.com/@bobhaffner/gist-to-medium-test-db3d51b8ba7b
HDF5 と Parquet のもう 1 つの違いは、datetime64 が Hdf5 に直接相当するものがないことです。ほとんどの人は、日付を ISO 日付形式 (yyyy-mm-dd) の文字列として HDF5 に保存しているようです。