Zenn
🐼

🐼 Pandasの高度なデータ操作テクニック

2025/03/29に公開
1

Pandasはデータ分析において非常に強力なツールですが、基本操作だけでなく、より効率的で高度なデータ操作テクニックを活用することで、分析の幅が大きく広がります。

本記事では、Pandasの高度なデータ操作テクニックを次の4つのテーマに分けて詳しく解説します。

  1. マルチインデックスの活用
  2. データのフィルタリングと条件指定
  3. 効率的なデータ操作のコツ
  4. データのエクスポート

1️⃣ マルチインデックスの活用

マルチインデックスは、データを階層的に管理できる便利な機能です。
複雑なデータ構造を扱う際に役立ちます。

🔹 マルチインデックスの作成

import pandas as pd

# サンプルデータ
data = {
    '都市': ['東京', '大阪', '東京', '大阪'],
    '年': [2022, 2022, 2023, 2023],
    '売上': [400, 350, 420, 380]
}

# マルチインデックスの作成
df = pd.DataFrame(data).set_index(['都市', '年'])
print(df)

🖥️ 実行結果

          売上
都市 年        
東京 2022  400
大阪 2022  350
東京 2023  420
大阪 2023  380

🔹 データの選択

# 特定の都市のデータ取得
print(df.loc['東京'])

# 特定の年のデータ取得
print(df.xs(2023, level='年'))

🖥️ 実行結果

       売上
年        
2022  400
2023  420
     売上
都市     
東京  420
大阪  380

🔹 マルチインデックスの並べ替え

sort_index() を活用すると、階層構造を保ちながらデータを並べ替えることができます。

# 年ごとに昇順でソート
print(df.sort_index(level='年'))

🖥️ 実行結果

          売上
都市 年        
大阪 2022  350
東京 2022  400
大阪 2023  380
東京 2023  420

2️⃣ データのフィルタリングと条件指定

Pandasでは、複数の条件を組み合わせたデータの抽出が可能です。

🔹 複数条件のデータ抽出 (query())

query() は複雑な条件でもシンプルなコードで書ける便利なメソッドです。

# 売上が400以上かつ「東京」のデータを抽出
filtered_df = df.query('売上 >= 400 & 都市 == "東京"')
print(filtered_df)

🖥️ 実行結果

          売上
都市 年        
東京 2022  400
   2023  420

🔹 部分一致検索 (str.contains())

文字列データの一部を条件にした検索ができます。

# 「東京」を含むデータ
print(df[df.index.get_level_values('都市').str.contains('東京')])

🖥️ 実行結果

          売上
都市 年        
東京 2022  400
   2023  420

🔹 .isin() と .between() の活用

# 複数の値を指定してフィルタリング
print(df[df['売上'].isin([350, 420])])

# 範囲指定でフィルタリング
print(df[df['売上'].between(350, 400)])

🖥️ 実行結果

          売上
都市 年        
大阪 2022  350
東京 2023  420
          売上
都市 年        
東京 2022  400
大阪 2022  350
   2023  380

3️⃣ 効率的なデータ操作のコツ

データの処理を効率化するための便利なテクニックを紹介します。

🔹 .apply() 関数の活用

apply() を使用することで、カラムごとに関数を適用できます。

# 条件に応じて「評価」列を追加
df['評価'] = df['売上'].apply(lambda x: '好調' if x >= 400 else '不調')
print(df)

🖥️ 実行結果

          売上  評価
都市 年            
東京 2022  400  好調
大阪 2022  350  不調
東京 2023  420  好調
大阪 2023  380  不調

🔹 .map() でのデータ変換

map() は、カテゴリデータやラベルの変換に便利です。

# MultiIndexのレベル('都市')をリネームする
df.index = df.index.set_levels(
    df.index.levels[0].map({'東京': 'Tokyo', '大阪': 'Osaka'}),
    level=0
)
print(df)

🖥️ 実行結果

             売上  評価
都市    年            
Tokyo 2022  400  好調
Osaka 2022  350  不調
Tokyo 2023  420  好調
Osaka 2023  380  不調

4️⃣ データのエクスポート

分析したデータをCSVやExcelに出力する方法を紹介します。

🔹 .to_csv() でのCSV出力

df.to_csv('売上データ.csv', encoding='utf-8-sig')

🔹 .to_excel() でのExcel出力

df.to_excel('売上データ.xlsx', index=True)

🔹 .to_sql() でのデータベース出力

データベースへの保存も可能です。

from sqlalchemy import create_engine

# SQLiteのデータベースにデータを保存
engine = create_engine('sqlite:///データベース.db')
df.to_sql('sales_data', engine, if_exists='replace')

🎯 まとめ

本記事では、Pandasの高度なデータ操作テクニックとして以下の内容を紹介しました。

✅ マルチインデックスの活用
✅ データのフィルタリングと条件指定
✅ 効率的なデータ操作のコツ
✅ データのエクスポート

これらのテクニックを活用することで、より複雑なデータ分析や実務でのデータ処理がスムーズに行えるようになります。

次回は、「Pandasの時系列データ処理と可視化」について詳しく解説します。

1

Discussion

ログインするとコメントできます