【Python】高効率でデータフレームをローカルに保存する(Pandas.DataFrame.to_parquet)

Python

先日YouTubeでPandasデータフレームのto_csvメソッドは最遅方法であることを解説してくれた動画を拝見しました。自分でも実行してみたら、まさにその通りでびっくりでしたので、記事にまとめます。

データの前処理を一時保存したり、処理の経過を見られるようにするために当たり前のようにto_csvを使用していましたが、保存する容量や処理速度を意識するとto_csvではどうにも追いつかないことがあります。その時にto_parquetがおすすめです。注意点もあるので最後までご覧ください。

該当コード

下準備

import pandas as pd

df_csv = pd.read_csv('data.csv')
df_parquet = pd.read_parquet('data.parquet')

基本的な使い方のみ紹介

df_csv.to_parquet('data.parquet')
df_parquet.to_csv('data.csv')

# df_csvもdf_parquetもデータフレームオブジェクトのため、csv形式でもparquet形式でも保存できる
# 使い慣れた「csv」の部分を「parquet」に変えるだけ

実際に動かしてみる

まずは大きめのcsvを読み込む

データフレームとして読み込んだ大きめのcsvをcsvとparquetで保存して比較する

保存したcsvとparquetをデータフレームとして読み込んで比較する

最後に保存しているデータ容量を比較

参照サイト

公式ドキュメント

pandas.DataFrame.to_parquet — pandas 1.1.5 documentation

まとめ

基本的には、「read_csv」「to_csv」と使い方は変わりません。index=Falseなども使用することができます。
そのため、特段の理由がない限り「parquetファイル」で保存とロードをするのが良い手のように感じました。

しかし落とし穴があります。それはparquetファイルはUIで開けません。csvだとよくエクセルで開いて中身を軽く確認するなんてことができますが、parquetファイルはそれができないので要注意です。
UIで確認ができないので、Pythonで動かして確認する必要があります。その点で、プログラミングができないと確認できないのがデメリットですね。

確認する用途としてはあまり使用しにくい中間テーブルなどをparquetファイルで出し入れし、集計結果などをcsvで非エンジニアにも扱いやすいようにするというのがベターかと思います。

そんな感じで使えることを理解しておきましょう!

サイト内関連記事

【Python】データフレームで文字を指定して列を分割する(pd.DataFrame / str.split)
本記事は、PythonのライブラリPandasのデータフレームの列の分割について解説した記事になります。データフレームの1列を分割するようなシチュエーションは、だいたい前処理の過程でしょう。例えばメールアドレスからドメイン数を集計したかった...

その他の技術系記事も書いています

データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

転職・スキルアップはこちらからどうぞ

オススメ転職はこちらからどうぞ
オススメのスキルアップはこちらからどうぞ

コメント

タイトルとURLをコピーしました