はじめに
Pandasは、Pythonのデータ操作やデータ分析を行うためのライブラリですが、メソッドチェーンを活用したことはありますか?
メソッドチェーンを活用することで、コードの可読性を高め、効率的にデータ処理を行うことができます。
メソッドチェーンについて
メソッドチェーンとは、複数のメソッドを連結して一連の処理を行う記法のことです。
例えば、csvファイルを読み込んで、カラム名を変更し、欠損値を削除からの、特定のカラムでソートをかけたい。などといったデータ処理があったとします。
通常、この操作を行う場合は以下のようなコードになるかと思います。
import pandas as pd
df = pd.read_csv("data.csv")
df.rename(columns={"old_name":"new_name"}
df.dropna()
df.sort_values("column_name")
まあ、これでも全然いいんですが、メソッドチェーンを使用することで、各メソッドの出力が次のメソッドの入力となるため、最終的な結果のみ返されることになります。
メソッドチェーンの書き方
では、実際にメソッドチェーンを活用するためのデータを作成していきましょう。
import pandas as pd
import numpy as np
np.random.seed(42)
n_rows = 100
old_name_data = np.random.randint(1, 100, size=n_rows)
column_name_data = np.random.randint(1, 1000, size=n_rows)
missing_data = np.random.choice([np.nan, 1], size=n_rows, p=[0.1, 0.9])
df = pd.DataFrame({
"old_name": old_name_data,
"column_name": column_name_data,
"missing_name": missing_name_data
})
df.to_csv("data.csv", index=False)
それでは、メソッドチェーンを使用してみましょう(/・ω・)/
import pandas as pd
df = (
pd.read_csv("data.csv")
.rename(columns={"old_name":"new_name"}
.dropna()
.sort_values("column_name")
)
なかなか可読性があがったのではないでしょうか?
コードを書く量が減ったかと言われると、ほんの少しだけって感じですが、個人的には好みです。
まとめ
Pandasのメソッドチェーンを使用することで、データ処理を効率的に行い、処理の流れを明確にすることができますが、メソッドチェーンが長くなりすぎると、逆に可読性が下がることもあるので、要はバランスですね。
良いコード悪いコードについてもっと理解を深めて、効率的にコードを書いていきたいですね。
メモリを節約するための書き方とか。
それでは!!!