isin関数の基本的な使い方
pandasのisin
関数は、特定の値がDataFrameやSeriesに存在するかどうかを確認するための関数です。以下に基本的な使い方を示します。
import pandas as pd
# データフレームの作成
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
print(df)
上記のコードは以下のようなデータフレームを出力します。
A B C
0 1 4 7
1 2 5 8
2 3 6 9
次に、列’A’に値2が存在するかどうかを確認します。
print(df['A'].isin([2]))
このコードは以下のような結果を出力します。
0 False
1 True
2 False
Name: A, dtype: bool
これは、’A’列の2番目の要素が2であるため、その位置がTrueになっています。他の位置はFalseになります。これがisin
関数の基本的な使い方です。
インデックスを無視したisin関数の使用例
通常、pandasのisin
関数はインデックスを考慮に入れます。しかし、インデックスを無視してisin
関数を使用する方法もあります。以下にその使用例を示します。
まず、インデックスが異なる2つのデータフレームを作成します。
import pandas as pd
# データフレーム1の作成
df1 = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['a', 'b', 'c'])
print(df1)
上記のコードは以下のようなデータフレームを出力します。
A B C
a 1 4 7
b 2 5 8
c 3 6 9
次に、データフレーム2を作成します。
# データフレーム2の作成
df2 = pd.DataFrame({
'A': [2, 3, 4],
'B': [5, 6, 7],
'C': [8, 9, 10]
}, index=['x', 'y', 'z'])
print(df2)
上記のコードは以下のようなデータフレームを出力します。
A B C
x 2 5 8
y 3 6 9
z 4 7 10
次に、isin
関数を使用して、df1
の各要素がdf2
に存在するかどうかを確認します。ただし、このときインデックスは無視します。
print(df1.isin(df2.values))
このコードは以下のような結果を出力します。
A B C
a False True True
b True True True
c True False False
これは、df1
の各要素がdf2
の値の中に存在するかどうかを示しています。インデックスは考慮されていません。これがインデックスを無視したisin
関数の使用例です。
実用的な応用例
インデックスを無視したisin
関数は、特定の値が大量のデータの中に存在するかどうかを高速に確認するための実用的な方法です。以下にその応用例を示します。
例えば、ある製品のIDリストがあり、それらの製品が特定の日に売れたかどうかを確認したいとします。この場合、売上データのDataFrameと製品IDのリストを持っていると仮定します。
import pandas as pd
# 売上データのDataFrame
sales_df = pd.DataFrame({
'product_id': [101, 102, 103, 104, 105],
'sales': [100, 200, 150, 300, 250]
})
# 製品IDのリスト
product_ids = [102, 104, 106]
print(sales_df)
上記のコードは以下のようなデータフレームを出力します。
product_id sales
0 101 100
1 102 200
2 103 150
3 104 300
4 105 250
次に、isin
関数を使用して、製品IDのリストに含まれる製品が売上データに存在するかどうかを確認します。
print(sales_df['product_id'].isin(product_ids))
このコードは以下のような結果を出力します。
0 False
1 True
2 False
3 True
4 False
Name: product_id, dtype: bool
これは、製品IDが102と104の製品が売上データに存在することを示しています。これがインデックスを無視したisin
関数の実用的な応用例です。このように、isin
関数は大量のデータの中から特定の値を高速に検索するための強力なツールとなります。