この記事では、Pandasによる条件を指定してのデータ抽出について説明します。
Contents
1. データフレームの作成
まずは、データフレームの作成方法について説明します。以下のように、Pandasモジュールを読み込んで、データを作成します。
import pandas as pd df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 32, 18, 47], 'city': ['Tokyo', 'Osaka', 'Kyoto', 'Nagoya']})
上記コードでは、`pd.DataFrame()`関数に辞書型のデータを渡すことで、データフレームを作成しています。データフレームは、左側にインデックス(行名)、上部にカラム(列名)が表示されます。
2. 条件を指定してデータ抽出
次に、条件を指定してデータを抽出する方法について説明します。以下のように、`data[‘age’] > 30`という条件を指定することで、ageカラムが30より大きいデータを抽出することができます。
df[df['age'] > 30]
上記のコードを実行すると、以下のような結果が出力されます。
name age city
1 Bob 32 Osaka
3 David 47 Nagoya
上記の結果から、ageが30より大きい人の名前、年齢、都市が表示されました。
3. 複数の条件を指定してのデータ抽出
複数の条件を指定してデータを抽出する方法について説明します。以下のように、`&`演算子を使用して、年齢が30より大きく、都市が「Osaka」である人のデータを抽出することができます。
df[(df['age'] > 30) & (df['city'] == 'Osaka')]
上記のコードを実行すると、以下のような結果が出力されます。
name age city
1 Bob 32 Osaka
上記の結果から、年齢が30より大きく、都市が「Osaka」である人の名前、年齢、都市が表示されました。
また以下のように、`|`演算子を使用して、都市が「Kyoto」または「Nagoya」である人のデータを抽出することができます。
df[(df['city'] == 'Kyoto') | (df['city'] == 'Nagoya')]
上記のコードを実行すると、以下のような結果が出力されます。
name age city
2 Charlie 18 Kyoto
3 David 47 Nagoya
上記の結果から、都市が「Kyoto」または「Nagoya」である人の名前、年齢、都市が表示されました。
おまけ ~df.query()を用いる場合
pandasでの条件を指定の方法には上記のほかにも、「query()」を使用する方法も存在します。
query()を使用する場合は以下のように記述します。
“`python
df.query(“条件式”)
“`
「query()」では、「条件式」としてPythonの論理式を文字列で指定します。例えば、以下のように記述することで、2021年1月3日以降のデータを抽出することができます。
# ageが20以上の行を抽出する df.query("age >= 20")
複数の条件を指定する場合も先ほどと同じように、「&」や「|」を使用します。例えば、以下のように記述することで、2021年1月3日以降のorangeのデータを抽出することができます。
# ageが20以上かつ都市が大阪の行を抽出する df.query("age >= 20 & city == 'Osaka'")
4.特定の文字列を含むデータ行を抽出する
また、文字列に対しては、「str.contains()」を使用することで、部分一致を用いた抽出ができます。例えば、以下のように記述することで、Productに”apple”が含まれるデータを抽出することができます。
df[df["city"].str.contains("Kyoto")]
5. applyを使用した詳細な条件指定
下記例では、df[“city”]に対してapply関数を使用し、ラムダ関数で”名古屋”を含むデータを抽出しています。その後、df[df[“city”].apply(lambda x: “名古屋” in x)]によって抽出したデータを変数nagoyaに代入しています。
df[df["city"].apply(lambda x: "Kyoto" in x)]
さらに、年齢が20歳以下の人だけを抽出する場合は以下のようになります。
df[df["age"].apply(lambda x: x >= 20)]
またapplyとlambdaの真骨頂はデータの検索・抽出ではなく、詳細な条件を指定してデータフレームの要素を置換することにあります。詳しくは下記記事を参考にしてください
関連記事:pandasの列データをapplyとlambdaで条件分岐して置換する
6. データの型変換
最後に、データの型変換について説明します。Pandasは、データを取り扱う際に、データの型を自動的に判定することができます。しかし、データの型が不適切な場合には、明示的に型変換を行う必要があります。
まず初期のデータ型は以下の関数で確認することができます
print(data.info())
以下のように、`data[‘age’]`カラムの型を「int」から「float」に変換する方法を示します。
# データ型を変換する data['age'] = data['age'].astype(float) # 変換できているか確認 print(data.info())
上記のコードを実行すると、`data[‘age’]`カラムのデータ型が「float」に変換されます。
関連記事:【Python】pandasで日付データの欠損を補完するサンプルコード
関連記事:【pandas】applymapで一定条件を満たす列にのみ色を付ける
コメント
[…] 関連記事:Pandasで条件に一致したデータを検索・抽出するサンプルコード […]
[…] 関連記事;Pandasで条件に一致したデータを検索・抽出するサンプルコード […]