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)
次に、df1
とdf2
をjoin()
で結合します。
df = df1.join(df2) print(df)
年齢 性別 国籍 名前 Alice 24 女性 アメリカ Bob 42 男性 NaN Charlie 18 男性 日本
このように、df1.join(df2)
を使って、df1
とdf2
を結合できます。
まとめ
本記事では、Pandasでインデックスを取得する方法を解説しました。データフレームのインデックスは、行や列に名前をつけるために使われ、データフレームの操作でよく使われる要素の1つです。特定の条件に合致する行や列を取得する方法や、インデックスを使ったデータの結合やマージも解説しました。これらの操作を使いこなすことで、Pandasを効率的に使いこなすことができるようになるでしょう。
以上で、Pandasでインデックスを簡単に取得する方法の解説を終わります。