pandasで、以下のようにparquet形式のデータを読み込もうとしました。
#read_parquetでparquet形式のデータを読み込もうとする
book_train = pd.read_parquet("ファイルパス")
その結果、以下のようなエラーが出て失敗しました。
「ImportError: Unable to find a usable engine; tried using: 'pyarrow', 'fastparquet'.」
この記事では、上記のerror修正方法、pandasで列指向ストレージparquetを使う方法について解説します。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |
pandasでparquetを使えるようにする
pandasでparquetが使えるか確認する
pandasでparquetが使えるか確認します。
>>> import pandas as pd
>>> pd.show_versions()
実行結果は、以下の通りでした。
INSTALLED VERSIONS
------------------
python : 3.7.3.final.0
fastparquet : None
pyarrow : None
scipy : 1.6.0
sqlalchemy : 1.3.16
上記の内容から、fastparquet、pyarrowがNoneになっていることがわかります。
Pandasをインストールしただけでは、parquetが使えないことがわかります。
parquetをインストールする
pipコマンドでparquetをインストールします。
pip install pyarrow
pip install fastparquet
その結果、再度pd.show_versions()を実行すると「fastparquet」「pyarrow」にバージョンがつくことがわかります。
fastparquet : 0.7.1
pyarrow : 5.0.0
その後、以下のコードを実行するとparquet形式のファイルを正しく読み込めるようになりました。
pd.read_parquet(“ファイルパス”)
めでたし、めでたし。
参考サイト
https://stackoverflow.com/questions/50760351/how-to-identify-pandas-backend-for-parquet
「parquet」とは
parquet(Apache Parquet)は、データ処理フレームワーク、データモデル、プログラミング言語の選択に関係なく、Hadoopエコシステムのすべてのプロジェクトで使用できる列型ストレージ形式です。
列型ストレージ形式について調べて見ると、「AWS 列指向ストレージ形式」には、
以下のことが書かれています。
Apache Parquet や ORC は、データを高速に取得できるように最適化された、AWS 分析アプリケーションで使用されている、列指向ストレージ形式です。
列指向ストレージ形式には以下の特性があるため、Athena での使用に適しています。
列のデータ型に合わせて選択された圧縮アルゴリズムによる列ごとの圧縮で、Amazon S3 のストレージ領域を節約し、クエリの処理中におけるディスク容量と I/O を削減します。
Parquet および ORC での述語プッシュダウンにより、Athena クエリが必要なブロックのみを取得できるようになり、クエリパフォーマンスが向上します。Athena クエリがデータから特定の列値を取得すると、データブロック述語からの統計 (最大値や最小値など) を使用して、そのブロックを読み取るかスキップするかを判断します。
Parquet および ORC でのデータの分割により、Athena がデータの読み取りを複数のリーダーに分割して、クエリ処理時における並列化を向上させることが可能になります。
簡単に言えば、機械学習のように列を指定してデータを取得するのに適したデータファイル形式と言えます。
列指向の反対は、行指向です。
行指向になると、Mysqlのように行を指定して取るもので、行形式のデータを取り出すのに最適化(DBのindex機能など)されています。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |
まとめ
以上、pandasで列指向ストレージparquetを使う方法でした。
- 👑👑Aidemy Premium Plan・AIを基礎から学ぶPython特化型プログラミングスクール
受講期間中ならAI、WEB開発、データサイエンスなどの多くの技術を身につけられる!
開発環境がすでに用意されているから、すぐに学習に取り組める! - テックアカデミー・最短4週間から学べるスクール
週2回のメンタリングでモチベーションを持続できる
受講料が10万円台からとお財布に優しい! - 侍エンジニア・専属メンターと二人三脚でオリジナルサービス開発を実現
オリジナルカリキュラムであなたの目的にあった技術を学べる!
あなた専属のメンターが、入学から卒業まで学習をサポート
>>より詳しく5つのスクールについて知りたい方は、以下をクリック!