【python】pandasで列指向ストレージparquetを使う方法!エラー「ImportError: Unable to find a usable engine; tried using: ‘pyarrow’, ‘fastparquet’.」が出たときの対処方法

  • 2021年8月18日
  • 2021年8月18日
  • Python
  • 149view

 

pandasでparquet形式のデータを読み込もうとしました。

 

#read_parquetでparquet形式のデータを読み込もうとする
book_train = pd.read_parquet("ファイルパス")

 

その結果、以下のようなエラーが出て失敗しました。

 

「ImportError: Unable to find a usable engine; tried using: 'pyarrow', 'fastparquet'.」

 

この記事では、pandasで列指向ストレージparquetを使う方法について解説します。

 

 

pandasでparquetを使えるようにする

 

pandasでparquetが使えるか確認する

 

pandasでparquetが使えるか確認します。

 

>>> import pandas as pd
>>> pd.show_versions()

 

その結果、fastparquet、pyarrowがNoneになっていることがわかります。

Pandasをインストールしただけでは、parquetが使えないことがわかります。

 

INSTALLED VERSIONS
------------------
python           : 3.7.3.final.0
fastparquet      : None
pyarrow          : None
scipy            : 1.6.0
sqlalchemy       : 1.3.16

 

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 がデータの読み取りを複数のリーダーに分割して、クエリ処理時における並列化を向上させることが可能になります。

 

出典:AWS 列指向ストレージ形式

 

簡単に言えば、機械学習のように列を指定してデータを取得するのに適したデータファイル形式と言えます。

 

列指向の反対は、行指向です。

行指向になると、Mysqlのように行を指定して取るもので、行形式のデータを取り出すのに最適化(DBのindex機能など)されています。

 

まとめ

以上、pandasで列指向ストレージparquetを使う方法でした。

 

\AI(機械学習)を学べるプログラミングスクール5選/

イメージ スクール名 学べる内容 受講形式 特徴 料金めやす オススメする人
.Pro(ドットプロ) WEB開発
機械学習(AI)
教室授業 ✔教室による対面授業
✔WEB開発と同時にAIも学べる

AI×Django コース
24週間
¥517,800円

✔仲間と一緒に学びたい
✔AIありのWEBシステムを作りたい
Aidemy Premium Plan WEB開発
機械学習(AI)
オンライン ✔申し込んだ講座以外のカリキュラムも学べる
✔給付金制度を利用して最大70%支給あり

AIアプリ開発講座
12週間
¥528,000円

✔AI(機械学習)について広く学びたい
✔給付金を利用して実質70%引きで学びたい

AIジョブカレ 機械学習(AI)
数学、統計学
教室授業、オンライン ✔10万円台から受講可能
✔数学や統計学を学びたい人向けの講座あり

機械学習講座
16週間
¥132,000円

✔Python,数学、統計学など基礎から学びたい
✔授業形式で講師から学びたい
✔受講料を抑えたい
テックアカデミー WEB開発
機械学習(AI)
Unityでゲーム開発
オンライン ✔AI以外にPHP,Unity,C言語など、主要な言語を学べる
✔料金が10万円代から

Python+AIコース
8週間
¥316,800円

✔AI(機械学習)以外にも学びたいものがある
✔できる限り安い金額で学びたい
✔マイペースで学びたい
侍エンジニア 機械学習(AI)
ブロックチェーン
オンライン ✔現役エンジニアが入学から最後まで寄り添ってサポート
✔ブロックチェーンも学べる
AIコース
12週間〜
¥698,000〜
✔マンツーマンで教えてほしい
✔ポートフォリオのサポートが欲しい
✔ブロックチェーンにも興味がある

>>より詳しく5つのスクールについて知りたい方は、以下をクリック!

 

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG