【Python】Pandasでインデックスを簡単に取得する方法:データフレーム操作の基本

Pandasは、Pythonで最も使われるデータ分析ライブラリの1つであり、データの前処理や分析、可視化を行うためによく使われます。その中でも、データフレーム操作は非常に重要です。データフレームのインデックスは、行や列に名前をつけるために使われ、データフレームの操作でよく使われる要素の1つです。本記事では、Pandasでインデックスを取得する方法を解説します。

pandasでインデックス操作の重要性と基本概要

データフレームのインデックスは、行や列に名前をつけるために使われます。例えば、以下のようなデータフレームがあった場合、列の名前を列の番号ではなく、「名前」という文字列で参照できるようになります。

import pandas as pd
data = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [24, 42, 18],
    "性別": ["女性", "男性", "男性"]
}
df = pd.DataFrame(data)
print(df)
   名前  年齢  性別
0  Alice  24  女性
1    Bob  42  男性
2  Charlie  18  男性

データフレームのインデックスは、df.indexでアクセスできます。通常、Pandasは、0から始まる連番をデフォルトのインデックスとして設定しますが、このインデックスを変更することもできます。たとえば、"名前"列をインデックスとして設定するには、以下のようにします。

df.set_index("名前", inplace=True)
print(df)
         年齢  性別
名前             
Alice    24  女性
Bob      42  男性
Charlie  18  男性

このように、インデックスを設定することで、行や列に名前をつけることができます。さらに、インデックスを使ったデータフレームの操作も非常に便利です。

データフレームのインデックスを取得する方法

# で取得できます。以下は、先程の例でインデックスを設定した後に、df.indexを使ってインデックスを取得する例です。

import pandas as pd
data = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [24, 42, 18],
    "性別": ["女性", "男性", "男性"]
}
df = pd.DataFrame(data)
df.set_index("名前", inplace=True)
print(df.index)
Index(['Alice', 'Bob', 'Charlie'], dtype='object', name='名前')

データフレームのインデックスは、df.index

このように、df.indexでインデックスを取得できます。

特定の条件に合致するインデックスを取得する方法

データフレームのインデックスを使って、特定の条件に合致する行や列を取得することができます。以下は、先程の例でインデックスを設定した後に、df.loc[]を使って、"Bob"という名前のデータを取得する例です。

import pandas as pd
data = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [24, 42, 18],
    "性別": ["女性", "男性", "男性"]
}
df = pd.DataFrame(data)
df.set_index("名前", inplace=True)
print(df.loc["Bob"])
年齢    42
# 性別    男性
Name: Bob, dtype: object

このように、df.loc[]を使って、"Bob"という名前のデータを取得できます。同様に、df.loc[]を使って、"Alice""Charlie"のデータも取得できます。

インデックスを基にデータフレームの行や列を取得する方法

データフレームのインデックスを使って、特定の行や列を取得することもできます。以下は、先程の例でインデックスを設定した後に、df.loc[]を使って、"年齢""性別"という列を取得する例です。

import pandas as pd
data = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [24, 42, 18],
    "性別": ["女性", "男性", "男性"]
}
df = pd.DataFrame(data)
df.set_index("名前", inplace=True)
print(df.loc[:, ["年齢", "性別"]])
         年齢 性別
名前
Alice      24 女性
Bob        42 男性
Charlie    18 男性

このように、df.loc[:, ["年齢", "性別"]]を使って、"年齢""性別"という列を取得できます。

インデックスを使ったデータフレームの結合・マージの手法

データフレームのインデックスを使ったデータの結合やマージも非常に便利です。以下は、2つのデータフレームを結合する例です。まずは、2つのデータフレームを用意します。

import pandas as pd
data1 = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [24, 42, 18],
    "性別": ["女性", "男性", "男性"]
}
data2 = {
    "名前": ["Alice", "Charlie", "Dave"],
    "国籍": ["アメリカ", "日本", "イギリス"]
}
df1 = pd.DataFrame(data1)
df1.set_index("名前", inplace=True)
df2 = pd.DataFrame(data2)
df2.set_index("名前", inplace=True)

次に、df1df2join()で結合します。

df = df1.join(df2)
print(df)
         年齢  性別    国籍
名前                   
Alice    24  女性  アメリカ
Bob      42  男性   NaN
Charlie  18  男性    日本

このように、df1.join(df2)を使って、df1df2を結合できます。

まとめ

本記事では、Pandasでインデックスを取得する方法を解説しました。データフレームのインデックスは、行や列に名前をつけるために使われ、データフレームの操作でよく使われる要素の1つです。特定の条件に合致する行や列を取得する方法や、インデックスを使ったデータの結合やマージも解説しました。これらの操作を使いこなすことで、Pandasを効率的に使いこなすことができるようになるでしょう。

以上で、Pandasでインデックスを簡単に取得する方法の解説を終わります。