はじめに
時系列データ分析やビックデータ分析などのテーブルデータの分析におけるDataFrameの処理にはPandasが一般的に使用されてきました。近年、RustベースのPolarsというライブラリが注目を集めています。注目されている理由として、従来使用されてきたPandasと比較して、非常に高速なDataFrameの処理が可能であること、機能的にもPandasと同等であることが挙げられます。PolarsではPython用のPolars APIが存在するため、早速PolarsでDataFrameの処理を行っていきたいと思います。
本記事では、超高速DataFrameライブラリーPolarsでDataFrameの作成、csv出力・読込、要素の抽出、条件分岐、列の追加、グループごとの処理、日付データの処理、欠損値の処理、DataFrameの結合の方法を紹介します。
- はじめに
- Google Colaboratoryでの紹介
- 1. パッケージのインストール
- 2. 基本的なDataFrameの作成:pl.DataFrame
- 3.DataFrameのcsv出力・読込
- 4.DataFrameの一部を表示:head()、tail()、glimpse()
- 5.列名の修正:alias()、prefix()、suffix()
- 6.要素の抽出
- 7.条件分岐:pl.when()
- 8.データの統計値を表示
- 9.列の追加:with_columns()
- 10.グループごとの抽出、計算:groupby()
- 11.日付と時刻のデータ分析
- 12.欠損値の処理
- 13.DataFrameの結合
- オススメ書籍
- スキル修得&転職
- おわりに
Google Colaboratoryでの紹介
PolarsでDataFrameの作成、csv出力・読込、要素の抽出、条件分岐、列の追加、グループごとの処理、日付データの処理、欠損値の処理、DataFrameの結合を行う方法を以下のGoogle Colaboratoryで示します。上部の青色で示した「Open in Colab」を押すと単元の目次を見ながら各手順を確認することができます。
1. パッケージのインストール
pip installでpolarsをインストールします。
2. 基本的なDataFrameの作成:pl.DataFrame
まずは基本的なDataFrameの作成を行います。以下ではnumpyで行列データを生成して、それを用いてDataFrameを作成しています。
以下の例では辞書型のデータを作成して、そのデータからDataFrameを作成しています。
3.DataFrameのcsv出力・読込
3.1 csvファイル出力:write_csv()
write_csv()でDataFrameをcsv形式のデータとして出力します。
3.2 csvファイルを読み込んでDataFrameに格納:read_csv()
read_csv()でcsv形式のデータを読み込んでDataFrameに格納します。
4.DataFrameの一部を表示:head()、tail()、glimpse()
head()で先頭の5行、tail()で最後尾の5行をDataFrame形式で表示します。
glimpse()で先頭の10行を文字列として表示します。
5.列名の修正:alias()、prefix()、suffix()
列名に新しく別名を付ける際には、alias()を使用します。また、列名の前後に任意の文字を付与したい場合には、.prefix()と.suffix()を使用します。
6.要素の抽出
6.1 行を選択して抽出
6.2 列を選択して抽出:get_column()、select()
列名を指定して抽出する方法の一つにget_column()を用いる方法があります。それが以下になります。
また、別の方法としてselect()を用いる方法があります。
6.3 行に対するフィルタリング:filter()
7.条件分岐:pl.when()
if...else...のような条件分岐をpolarsで扱うことができます。Polarsではpl.when()を使用します。その中で、条件に対して真の場合はthen()の内容、偽の場合はotherwise()の内容を結果として使用します。
8.データの統計値を表示
8.1 DataFrame全体の統計値を算出:describe()
以下のデータを表示することができます。
- データ数(count)
- 欠損値の数(null_count)
- 平均値(mean)
- 標準偏差(std)
- 最小値(min)
- 最大値(max)
- 中央値(median)
8.2 任意の列での統計値の算出:polars.sum()、polars.min()、polars.max()、polars.mean()
ある1列の統計値を算出します。以下の項目を算出することができます。
- 要素数:pl.col('{列名}').count()
- 合計値:pl.sum('{列名}')
- 最小値:pl.min('{列名}')
- 最大値:pl.max('{列名}') or pl.col('{列名}').max()
- 平均値:pl.mean('{列名}')
- 標準偏差:pl.std('{列名}')
- 分散:pl.var('{列名}')
9.列の追加:with_columns()
列の追加にはwith_columns()を使用します。
10.グループごとの抽出、計算:groupby()
11.日付と時刻のデータ分析
11.1 時間データの生成:polars.date_range()
11.2 文字列の時刻データを日付データへ:str.strptime()
11.3 年月日、時間、四半期の要素を抽出:dt.year()、dt.month()、dt.day()
各要素の抽出方法の詳細は以下のリンクから確認できます。
https://pola-rs.github.io/polars/py-polars/html/reference/series/timeseries.html
11.4 日付列のフィルタリング:filter()
12.欠損値の処理
12.1 欠損値の有無確認:null_count()、is_null()
12.2 欠損箇所を埋める:fill_null()
13.DataFrameの結合
13.1 polars.concatでの結合
13.2 join()での結合
オススメ書籍
Pythonによるあたらしいデータ分析の教科書
Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。
データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析
こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。
スキル修得&転職
近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。
以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
おわりに
本記事では、超高速DataFrameライブラリーPolarsでDataFrameの作成、csv出力・読込、要素の抽出、条件分岐、列の追加、グループごとの処理、日付データの処理、欠損値の処理、DataFrameの結合の方法を紹介しました。従来使っていたPandasよりも高速に処理できることから、今後はPolarsでの処理が主流になりそうですね。今のうちから使いこなせるようになっておきましょう。