pandasデータフレームを直接寄木細工のファイルに保存することは可能ですか?できない場合、推奨されるプロセスは何ですか?
目的は、寄木細工のファイルを別のチームに送信できるようにすることです。別のチームは、scalaコードを使用して、ファイルを読み取り/開くことができます。ありがとうございます。
パンダにはコア関数to_parquet()
があります。次のように、データフレームを寄木細工の形式に書き込むだけです。
df.to_parquet('myfile.parquet')
fastparquet
などの寄木細工のライブラリをインストールする必要があります。複数の寄木細工のライブラリがインストールされている場合は、使用するエンジンも指定する必要がありますpandas使用しない場合は、最初にインストールするエンジンが使用されます ドキュメント )例:
df.to_parquet('myfile.parquet', engine='fastparquet')
Fastparquetと呼ばれるパッケージの比較的初期の実装があります-それはあなたが必要とするものの良いユースケースかもしれません。
https://github.com/dask/fastparquet
conda install -c conda-forge fastparquet
または
pip install fastparquet
from fastparquet import write
write('outfile.parq', df)
または、行のグループ化/圧縮などのファイルオプションを使用する場合:
write('outfile2.parq', df, row_group_offsets=[0, 10000, 20000], compression='GZIP', file_scheme='Hive')
pyarrow は、保存をサポートしていますpandasデータフレーム:
import pyarrow
pyarrow.Table.from_pandas(dataset)
はい、可能です。次にコード例を示します。
import pyarrow as pa
import pyarrow.parquet as pq
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
table = pa.Table.from_pandas(df, preserve_index=True)
pq.write_table(table, 'output.parquet')
これは私にとってうまくいったアプローチです-上記と同様-圧縮タイプを規定することを選択しました:
import pandas as pd
テストデータフレームを設定する
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
必要な寄木細工のライブラリをインポートします(これがインストールされていることを確認してください。使用したものは$ conda install fastparquet
)
import fastparquet
データフレームを寄木細工に変換し、現在のディレクトリに保存する
df.to_parquet('df.parquet.gzip', compression='gzip')
現在のディレクトリにある寄木細工のファイルを読み取り、pandasデータフレームに戻します。
pd.read_parquet('df.parquet.gzip')
出力:
col1 col2
0 1 3
1 2 4