Polars DataFrame:高速データ処理の紹介
Published on
従来のPandasを超えた高速で効率的なデータ処理能力を備えたPolars DataFrameがPython愛好家たちに受け入れられています。大量のデータセットを扱うための強力なツールを提供するこのDataFrameライブラリは、完全にRustで構築されており、データサイエンティストやアナリストの間で大いに支持されています。この包括的なガイドでは、Polars DataFrameについて深く理解し、その機能を紹介して、Pandasの優れた代替手段であることを示します。
PandasよりもPolarsを活用する
簡単な比較により、Polarsの優れた点が明らかになります。Pandasとは異なり、PolarsはDataFrameにインデックスを使用しないため、データ操作が大幅に簡素化されます。さらに、Polarsは内部データ表現にApache Arrow arraysを使用するため、読み込み時間、メモリ使用量、および演算効率が向上します。さらに、Rustで書かれているため、Polarsはより多くの並列演算を提供し、多数のタスクを加速します。そして、Pandasのような熱心な評価では使用できない、必要に応じてクエリを最適化し、メモリ使用量を最小化する遅延評価をサポートする点を忘れてはなりません。
Polars DataFrameの始め方
Polarsをインストールすることは簡単です。pipまたはcondaのコマンドを使用できます:
pip install polars
conda install polars
Polars DataFrameを作成してからJourneyを始めましょう。以下は、Polarsモジュールをインポートし、DataFrameをクラフトしています:
import polars as pl
df = pl.DataFrame(
{
'Model': ['iPhone X','iPhone XS','iPhone 12','iPhone 13','Samsung S11','Samsung S12','Mi A1','Mi A2'],
'Sales': [80,170,130,205,400,30,14,8],
'Company': ['Apple','Apple','Apple','Apple','Samsung','Samsung','Xiao Mi','Xiao Mi'],
}
)
df
Pandasとは異なり、Polarsは列ヘッダー名が文字列型であることを期待しています。列ヘッダー名として整数を使用する場合は、文字列として使用することを確認してください:
df2 = pl.DataFrame(
{
"0" : [1,2,3],
"1" : [80,170,130],
}
)
Polarsの各列のデータ型が列ヘッダー名とともに表示されます。各列のデータ型を明示的に表示するには、dtypesプロパティを使用します:
df.dtypes
列名を取得するには、columnsプロパティを使用します。
df.columns # ['Model', 'Sales', 'Company']を返します。
DataFrameの内容をタプルのリストとして取得するには、rows()
メソッドを使用します。
df.rows()
重要な機能の1つは、Pandasとは異なり、Polarsはインデックスの概念を使用しないことです。Polarsの設計哲学は、インデックスがDataFramesで特に役立たないことを明示的に述べています。
Polarsにおける列の選択を解説
Polarsで列を選択することは容易です。select()
メソッドを使用して、列名を指定します。
df.select('Model')
このステートメントは、'Model'列を含むPolars DataFrameを返します。ただし、Polarsは角括弧のインデックス付け方法を descouragesし、将来のバージョンではこの機能が廃止される可能性があります。複数の列を選択するには、列名をリストとして指定します。
df.select(['Model','Company'])
式の強力さは、Polarsの主要な特徴の1つです。たとえば、DataFrame内のすべての整数(Int64)列を取得するには、select()
メソッド内で式を使用できます。
df.select(pl.col(pl.Int64))
Polarsには、式を連結する独自の方法があります。たとえば、以下の式では、 'Model'と 'Sales'列を選択し、 'Sales'列の値に基づいて行をソートします。
df.select(pl.col(['Model','Sales']).sort_by('Sales'))
すべての文字列型列を取得するには、pl.Utf8
プロパティを使用します。
df.select([pl.col(pl.Utf8)])
Polarsの式については、記事の次の部分で詳しく説明します。
Polarsにおける行の選択を解説
DataFrame内の1行を選択するには、 row()
メソッドを使用して行番号を渡します。
df.row(0) # 最初の行を取得する
これにより、タプルが返されます:
('iPhone X', 80, 'Apple')
複数の行を選択するために、Polarsは filter()
関数を使用することをお勧めします。例えば、すべてのApple製品を取得したい場合は、以下の式を使用できます:
df.filter(pl.col('Company') == 'Apple')
論理演算子を使用して複数の条件を指定できます:
df.filter((pl.col('Company') == 'Apple') | (pl.col('Company') == 'Samsung'))
Polarsでは、以下の論理演算子を使用できます:
|
— OR&
— AND~
— Not
同時に行と列を選択する
しばしば、同時に行と列を選択したい場合があります。このために、filter()
メソッドと select()
メソッドを連鎖させます:
df.filter(pl.col('Company') == 'Apple').select('Model')
上記のステートメントは 'Apple' を含むすべての行を選択し、 'Model' 列のみを表示します。 'Sales' 列も表示するには、 select()
メソッドにリストを渡します:
df.filter(pl.col('Company') == 'Apple').select(['Model','Sales'])
ポイントは、Polars DataFrame が従来のPandasに比べて効率的で高速な代替手段を提供すること、遅延評価、インデックスなしポリシー、並列操作能力を活かすことです。簡単なインストールから複雑なデータ操作まで、Polarsは、データ処理を簡素化し、メモリ使用量を改善する強力なツールとして現れています。
PyGWalkerを使用してPolars DataFrameを視覚化する
PyGWalker (opens in a new tab)は、Polarsのデータフレームから簡単にデータの可視化を作成するのに役立つオープンソースのPythonライブラリです。
Pythonコードで複雑な処理を完了する必要はもうありません。単にデータをインポートして、変数をドラッグアンドドロップして、さまざまなデータの視覚化を作成できます。操作に関するクイックデモ動画があります:
Jupyter NotebookでPyGWalkerを使用する方法は以下の通りです:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
代わりに、Kaggleノートブック/Google Colabで試すこともできます:
PyGWalkerは、オープンソースコミュニティのサポートに基づいて構築されています。 [PyGWalker GitHub](https://github.com/Kanaries/pygwalker)をチェックして、スターをあげてください! (opens in a new tab)
よくある質問
-
Pandasに比べてPolarsの主な利点は何ですか?
Polars DataFrameは、Pandasよりもいくつかの利点を提供します。データ処理の効率化のためにApache Arrow配列を使用し、データ操作にインデックスを依存しない、並列操作をサポートし、要件に基づいてクエリを最適化するための遅延評価を使用して、メモリ使用量を改善します。
-
Polars DataFrameで列を選択するにはどうすればよいですか?
Polars DataFrameは、列を選択するための
select()
メソッドを提供します。単一の列を選択する場合は、列名を文字列として渡し、複数の列を選択する場合は列名のリストを渡すことができます。 -
Polarsで特定の条件に基づいて行をフィルタリングするにはどうすればよいですか?
filter()
メソッドを使用して、特定の条件に基づいて行を選択します。このメソッドには、列をある値に等しくする式を渡して行をフィルタリングできます。複数の条件を指定するために、論理演算子を使用することもできます。