Skip to content

Pandasでデータにアクセスおよび操作するためのDataFrame.locの使用

Updated on

データのアクセスと操作は、どのデータサイエンスプロジェクトにおいても重要であり、Pandasライブラリはこれらのタスクに最もよく使われるツールの一つです。Pandasのなかでも、loc[]メソッドは、しばしばDataFrame内のラベルまたはブール配列によって、データにアクセスしてフィルタリングするために使用されます。この記事では、Pandas DataFrame loc[]の構文と例を掘り下げ、その他の方法に比べてloc[]の利点を探究します。

Pythonでデータ可視化をすばやく作成したいですか?

PyGWalker は Jupyter Notebook ベースの環境でデータ解析および可視化のワークフローを迅速化するのに役立つ、オープンソースのPythonプロジェクトです。

PyGWalker (opens in a new tab) は、Pandas Dataframe (または Polars Dataframe) をビジュアルUIに変換し、変数をドラッグ&ドロップして簡単にグラフを作成することができます。単に次のコードを使用してください:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

このオンラインノートブックで PyGWalker を今すぐ実行できます。

そして、GitHubで⭐️をお願いします!

Kaggle NotebookでPyGWalkerを実行 (opens in a new tab)Google ColabでPyGWalkerを実行 (opens in a new tab)GitHubでPyGWalkerに⭐️を付ける (opens in a new tab)
Kaggle NotebookでPyGWalkerを実行 (opens in a new tab)Google ColabでPyGWalkerを実行 (opens in a new tab)GitHubでPyGWalkerに⭐️を付ける (opens in a new tab)

Pandas DataFrame loc[]とは?

Pandas DataFrame loc[]は、Pandas DataFrame内のデータを選択してフィルタリングするための方法です。loc[]メソッドは、1つまたは2つの引数を取ります。引数は、行ラベルまたはブール配列である必要があります。行ラベルが指定された場合、loc[]はラベルに一致する行を含むDataFrameを返します。ブール配列が指定された場合、loc[]は、ブール配列がTrueの行を含むDataFrameを返します。

Pandas DataFrame loc[]をどのように使用しますか?

Pandas DataFrame loc[]を使用してラベルによって行と列にアクセスすることは非常に簡単です。以下は、例です。

import pandas as pd
 
# Creating a sample DataFrame
df = pd.DataFrame({'Age': [23, 24, 25, 26], 
                   'Name': ['John', 'Mike', 'Sarah', 'Rachel'], 
                   'Marks': [85, 90, 80, 95], 
                   'ID': ['A101', 'A102', 'A103', 'A104']})
 
# Accessing a row using the row label
row = df.loc[1]

行ラベルのリストを使用して複数の行にアクセスする

rows = df.loc[[0, 2]]

列ラベルを使用して列にアクセスする

ages = df.loc[:, 'Age']

列ラベルのリストを使用して複数の列にアクセスする

subset = df.loc[:, ['Name', 'Marks']]


上記の例では、4行4列のサンプルDataFrameを作成しました。loc[]を使用してラベルを使用して行と列にアクセスします。loc[]に単一のラベルを指定すると、pandas Seriesを返し、複数のラベルが指定されると、DataFrameを返します。

loc[]を使用して、特定の条件に基づいて行をフィルタリングすることもできます。以下は例です。

```python
# 条件に基づいて行をフィルタリングする
filtered_df = df.loc[df['Age'] > 24]

上記の例では、Age列が24より大きい行をフィルタリングするためにloc[]を使用しています。

Pandas DataFrame loc[]の利点は何ですか?

Pandas DataFrame loc[]の主な利点の1つは、ラベルベースのインデックス付けを処理できる能力です。ラベルベースのインデックス付けは、整数ベースのインデックス付けよりも直感的で読みやすいため、loc[]を使用するとコードがより表現力がありエラーが少なくなる可能性があります。

loc[]の別の利点は、DataFrameのサブセットに新しい値を割り当てることもできることです。

# 特定の行の値を変更する
df.loc[0:1, 'Age'] = 24

上記の例では、DataFrameの最初の2行のAge値を変更するためにloc[]を使用しています。

Pandas DataFrame loc[]はPandas iloc[]とどう違いますか?

Pandas iloc[]はloc[]と似ていますが、ラベルベースのインデックス付けではなく整数ベースのインデックス付けを使用します。以下は例です。

# iloc[]を使用して最初の行にアクセスする
df.iloc[0]
 
# 整数の位置を使用して行と列にアクセスする
df.iloc[0:2, 1:3]

最初の例では、iloc[]を使用してDataFrameの最初の行にアクセスしています。2番目の例では、整数位置を使用してDataFrameのサブセットにアクセスするためにiloc[]を使用しています。

iloc[]はloc[]よりも高速ですが、表現力が低く、DataFrameが変更された場合にエラーが発生する可能性があるため、より強固なloc[]を使用することができます。また、iloc[]は整数位置を使用するため、DataFrameがソートまたは変更された場合に混乱する可能性があり、loc[]はこのような変更により堅牢性があります。

Pandas DataFrame loc[]を使用して名前/ラベルによって行と列を選択/フィルタリングできますか?

はい、Pandas DataFrame loc[]を使用して名前/ラベルによって行と列を選択/フィルタリングできます。以下は例です。

# 列ラベルと条件を使用して行をフィルタリングする
filtered_df = df.loc[df['Name'] == 'Mike']
 
# ラベルを使用してサブセットの行と列にアクセスする
subset_df = df.loc[0:1, ['Name', 'Age']]

最初の例では、列ラベルを使用して条件列に基づいて行をフィルタリングするためにloc []を使用しています。 2番目の例では、loc []と列ラベルを使用して、行と列のサブセットにアクセスしています。

結論

この記事では、Pandas DataFrame loc []メソッド、その構文と例、および他のメソッドとの利点を探索しました。 loc []がラベルまたはブール配列に基づいてデータにアクセスしてフィルタリングする方法と、iloc []を使用した整数ベースのインデックス付けとどのように異なるかを示しました。 Pandas DataFrame loc []を使用することで、Pythonでのデータ分析と操作のためにより表現力豊かで堅牢なコードを書くことができます。