Pythonのデータ分析ライブラリ「Pandas」は、データフレームの操作が簡単に行えるため、多くのデータサイエンティストやエンジニアに愛されています。
その中でもよく使われるメソッドの一つが loc です。
しかし、この loc の使い方をしっかり理解していないと、エラーに悩まされたり、コードが非効率になったりすることも。
今回は、loc の基本から応用までを詳しく解説していきます。
Pandasのlocとは?
locは、ラベルインデックスを使って、
データフレームからデータを取得・操作するためのメソッドです。
行や列の名前を指定して、データの選択やフィルタリングを行います。
DataFrameから値を検索して取得やフィルタリングをする方法だね!
DataFrameについて、学びたい方は以下の記事にまとめてあります!
ぜひ、ご覧ください!
loc による値の取得
行を指定して値を取得
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# locを使ってデータを取得
print(df.loc[0]) # 行ラベルが0のデータを取得
このコードは、データフレームのインデックスが0の行、つまりAliceのデータを返します。つまり、行を指定して、列を取得しているね!
行と列を指定して値を取得
loc は、
df.loc[行ラベル, 列ラベル]
という構文を持っています。行と列の両方を指定することができ、非常に便利です。
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# Bobの年齢を取得
age_bob = df.loc[1, 'age']
print(age_bob) # 出力: 30
行と列を指定することで、欲しい値が取得できているね!
複数の行や列を取得
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# AliceとCharlieのデータを取得
subset = df.loc[[0, 2], ['name', 'city']]
print(subset)
locのインデックスをそれぞれ配列にすることで、複数の値が取得できたね!
loc によるフィルタリング
条件によるフィルタリング
データ分析でよく使われるのが、条件に基づいたフィルタリングです。loc を使えば、複雑な条件も簡単に書けます。
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# 年齢が30以上の人のデータを取得
adults = df.loc[df['age'] >= 30]
print(adults)
このコードは、age が30以上の行のみをフィルタリングし、該当するデータを返します!複数の条件も使用できます!
複数条件によるフィルタリング
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# 年齢が30以上で、かつ都市が'Chicago'の人を取得
filtered = df.loc[(df['age'] >= 30) & (df['city'] == 'Chicago')]
print(filtered)
& 演算子を使って、複数の条件を組み合わせています!
loc を使ったデータの更新
loc はデータの取得だけでなく、データの更新にも使えます。
特定の値を更新
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# Bobの年齢を31に更新
df.loc[1, 'age'] = 31
print(df)
条件を指定して一括で更新
import pandas as pd
# サンプルデータフレームの作成
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# 年齢が30以上の人の都市を'San Francisco'に変更
df.loc[df['age'] >= 30, 'city'] = 'San Francisco'
print(df)
【注意】loc と iloc の違い
loc とよく混同されるのが、iloc です。
loc はラベルベースのインデックスを使用しますが、iloc は整数インデックスを使います。
これにより、行や列の位置でデータを取得することができます。
# `iloc` を使って2行目と2列目のデータを取得
data = df.iloc[2, 2]
print(data) # 出力: San Francisco
ilocについては、以下の記事にまとめてあるよ!
ぜひ、この機会に学習してみてね!
まとめ
Pandas の loc メソッドは、データフレームをラベルベースで操作する際に非常に強力なツールです。
基本的な使い方から、条件フィルタリング、データの更新まで幅広く対応できるため、データ分析のあらゆる場面で役立ちます。
今回の記事を参考に、ぜひ loc を使いこなしてみてください!
コメント