前回はMapメソッドを使った変換を行いましたが、今回は追加するときにとても便利なメソッドを紹介します。
Pythonのプログラミングでよく使うpandasライブラリの便利な機能、.apply()
メソッドについてお話します。プログラミングって聞くと難しそう…と思うかもしれませんが、大丈夫です。ここでは、初心者の方でも理解しやすいように、噛み砕いて説明しますね!
最後に例題も用意していますのでぜひ手を動かしてチャレンジしてみてください。アウトプットが最大の学習ですよと。
まずは、.apply()
って何?
.apply()
メソッドは、pandasのシリーズ(一種のリストのようなもの)の各要素に対して、あなたが指定した関数を適用することができる機能です。簡単に言うと、シリーズの中の各データに同じ計算をしたい時に、この.apply()
を使うととっても便利なんです。
実際に使ってみよう!
例として、[0, 1, 2]という数字が入ったシリーズがあるとします。これに「1を足す」という操作を各要素に対して行いたいとき、こんな風に書けます。
import pandas as pd
# シリーズを作成
sr = pd.Series([0, 1, 2])
# .apply()を使って、各要素に1を足す
sr2 = sr.apply(lambda x: x+1)
# 結果を表示
print(sr2.values)
すると、出力結果は [1, 2, 3]
となります。ちゃんと各要素に1が足されていますね!
「lambda」とは何者?
この例で出てきたlambda
というのは、無名関数を表します。無名関数とは、名前をつけずに一時的に使う小さな関数のこと。lambda x: x+1
と書くと、「xを受け取って、xに1を足したものを返す」という短い関数を表します。
lambda
の使い方はとってもシンプル。「lambda 引数: 返り値」と書くだけ。これで、引数に何か操作をして、その結果を返す関数がパパッと作れちゃうんです。
ちなみに、同じことをdef
を使って関数を定義する場合はこうなります。
def func(x):
return x + 1
lambda
は、シンプルな処理を一時的に行いたいときにとても便利です。でも、もっと複雑な操作をするときや、何度も同じ処理を使いたいときは、def
できちんと関数を定義したほうが良いですよ。
まとめ
.apply()
メソッドを使うと、シリーズの各要素に対して同じ操作を簡単に適用できます。lambda
を使えば、その場で小さな関数を作って.apply()
に渡すことも可能。この便利な機能を使って、データ処理をもっと効率的に行いましょう!
練習問題
以下のシリーズがあります:
import pandas as pd
data = pd.Series([10, 20, 30, 40, 50])
このデータに対して、以下の操作を行ってください。
- 奇数番目の要素に2を掛ける
ヒント: インデックスは0から始まるので、奇数番目の要素はインデックスが0, 2, 4…です。 - 全ての要素から5を引く
それぞれの操作を.apply()
メソッドとlambda
(またはdef
で定義した関数)を使って実行し、最終的な結果を出力してください。
解答例は以下のようになります:
# 1の解答
result1 = data.apply(lambda x: x*2 if x % 2 == 1 else x)
# 2の解答
result2 = data.apply(lambda x: x - 5)
この問題を通して、.apply()
メソッドの使い方をより深く理解できるはずです。ぜひ挑戦してみてくださいね!わからないことがあれば、どんな小さなことでも質問してください。一緒に学びましょう!
コメント