Pandasで複雑なデータ構造を操作する高度なテクニック

この記事では、Pythonのデータ解析ライブラリであるPandasを用いて、複雑なデータ構造を効率的に操作する高度なテクニックについて解説します。具体的なコード例、その詳細解説、および応用例を含めてご紹介します。

目次

前提条件

この記事を理解するためには、PythonとPandasの基礎知識が必要です。具体的には、PandasのDataFrameやSeriesの基本的な使い方を理解していることが望ましいです。

高度なフィルタリング

通常のフィルタリングでは不十分な場合、高度なフィルタリングテクニックが有用です。

複数条件のフィルタリング

通常のフィルタリングよりも柔軟にデータを抽出したい場合には、複数条件のフィルタリングが有用です。

import pandas as pd

# サンプルデータ作成
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 45, 35],
    'city': ['NY', 'LA', 'Chicago']
})

# ageが30以上、かつ、cityがNYのデータをフィルタリング
filtered_df = df[(df['age'] >= 30) & (df['city'] == 'NY')]

print(filtered_df)

コードの詳細解説

この例では、`age`が30以上かつ`city`がNYである条件に一致するデータをフィルタリングしています。条件は括弧で囲むことで、複数の条件を`&`で結合しています。

データのマージと結合

データの結合も、複雑なデータ操作には欠かせません。

内部結合(Inner Join)

以下の例では、2つのDataFrameをキー(`id`)を元に内部結合しています。

# 初めのDataFrame
df1 = pd.DataFrame({
    'id': [1, 2, 3],
    'name': ['Apple', 'Banana', 'Cherry']
})

# 2つ目のDataFrame
df2 = pd.DataFrame({
    'id': [3, 4, 5],
    'price': [200, 150, 50]
})

# 内部結合
merged_df = pd.merge(df1, df2, on='id', how='inner')
print(merged_df)

コードの詳細解説

`pd.merge()`関数を用いて、`id`をキーとして内部結合を行っています。この結果、`id`が共通するデータだけが新しいDataFrameとして作成されます。

応用例

グループ化と集計

この例では、複数のデータをグループ化し、それぞれのグループの平均値を計算します。

# サンプルデータ
df = pd.DataFrame({
    'department': ['HR', 'HR', 'Eng', 'Eng', 'Sales'],
    'salary': [4000, 5000, 6000, 7000, 8000]
})

# departmentごとの平均給与
grouped_df = df.groupby('department').mean()
print(grouped_df)

コードの詳細解説

`groupby()`メソッドでデータをグループ化し、`mean()`メソッドで各グループの平均値を求めています。

欠損値の補完

この例では、欠損値がある場合にそれを平均値で補完します。

import numpy as np

# サンプルデータ
df = pd.DataFrame({
    'value': [10, np.nan, 30, 40, np.nan]
})

# 平均値で欠損値を補完
df.fillna(df['value'].mean(), inplace=True)
print(df)

コードの詳細解説

`fillna()`メソッドを使用して、`value`列の平均値で欠損値(`np.nan`)を補完しています。

まとめ

この記事では、Pandasで複雑なデータ構造を効率的に操作するための高度なテクニックを解説しました。高度なフィルタリングやデータのマージと結合、さらには応用例としてデータのグループ化と集計、欠損値の補完などを取り上げました。

コメント

コメントする

目次