この記事では、Pythonのデータ分析ライブラリ「pandas」を用いてデータフレームをフィルタリングするさまざまなテクニックについて解説します。具体的なコード例とその詳細な解説、さらには応用例も含めています。
目次
pandasとは
pandasはPythonでデータ分析を行うためのオープンソースライブラリです。CSV、Excel、SQLデータベース、HDF5形式など多くのファイル形式をサポートしています。
基本的なフィルタリングの方法
条件式を用いる基本的なフィルタ
最も基本的なフィルタリング方法は条件式を用います。
import pandas as pd
# データフレーム作成
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['NY', 'LA', 'Chicago']
})
# 条件に合うデータをフィルタリング
filtered_df = df[df['Age'] > 27]
# 結果を表示
print(filtered_df)
上記のコードでは、「Age」が27より大きいデータをフィルタリングしています。
複数条件のフィルタリング
複数条件の組み合わせ
複数の条件を組み合わせてフィルタリングを行うことも可能です。
# 年齢が27より大きく、かつCityが'NY'であるデータをフィルタリング
filtered_df = df[(df['Age'] > 27) & (df['City'] == 'NY')]
# 結果を表示
print(filtered_df)
カスタム関数でのフィルタリング
applyメソッドによるフィルタ
applyメソッドを用いると、より高度なフィルタリングが行えます。
# カスタム関数
def filter_func(x):
return x['Name'].startswith('A') and x['Age'] > 20
# applyメソッドでフィルタリング
filtered_df = df[df.apply(filter_func, axis=1)]
# 結果を表示
print(filtered_df)
この例では、applyメソッドを使用して「NameがAで始まる」かつ「Ageが20より大きい」データをフィルタリングしています。
応用例
応用例1:外部データを使用したフィルタリング
外部のデータリストを用いてフィルタリングする場合の例です。
# 外部から取得したデータリスト
external_data = ['Alice', 'Charlie']
# データフレームからNameがexternal_dataに存在する行をフィルタリング
filtered_df = df[df['Name'].isin(external_data)]
# 結果を表示
print(filtered_df)
応用例2:動的なフィルタリング
ユーザーからの入力を使って動的にフィルタリングする場合の例です。
# ユーザーからの入力
user_input = {'Age': 27, 'City': 'NY'}
# フィルタリング
filtered_df = df
for key, value in user_input.items():
filtered_df = filtered_df[filtered_df[key] == value]
# 結果を表示
print(filtered_df)
まとめ
pandasには多くのフィルタリングテクニックが存在します。この記事で紹介した方法を使えば、データフレームから必要な情報だけを効率よく抽出することができるでしょう。
コメント