3
3

Pandasのメソッドチェーンを使ってデータ処理を効率化しよう

Posted at

はじめに

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のメソッドチェーンを使用することで、データ処理を効率的に行い、処理の流れを明確にすることができますが、メソッドチェーンが長くなりすぎると、逆に可読性が下がることもあるので、要はバランスですね。
良いコード悪いコードについてもっと理解を深めて、効率的にコードを書いていきたいですね。
メモリを節約するための書き方とか。
それでは!!!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3