Pandas初心者必見! loc の基本から応用まで徹底解説

「loc」の使い方 Pandas

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 を使いこなしてみてください!

コメント

タイトルとURLをコピーしました