PythonのPandasのmeltメソッドについて

Python,イメージ

AI実装検定のご案内

Pandasのmeltメソッドについて、基礎から応用までできるだけ詳しく解説します。

目次

meltメソッドとは?

pandas.melt()は、ワイド形式(wide format) のデータを ロング形式(long format) に変換するためのメソッドです。

例えば、ExcelやCSVなどでは「1列に1変数」ではなく「横に並んだ複数列が同じ変数を表す」形になっていることが多いですが、分析や可視化の前処理では「縦長の形式(tidy data)」に変換した方が扱いやすくなります。

イメージ

  • ワイド形式(変換前)
ID202220232024
A100120140
B90110150
  • ロング形式(変換後)
IDvariablevalue
A2022100
B202290
A2023120
B2023110
A2024140
B2024150

基本的なコード

import pandas as pd

df = pd.DataFrame({
    "ID": ["A", "B"],
    "2022": [100, 90],
    "2023": [120, 110],
})

melted = pd.melt(df, id_vars=["ID"])
print(melted)
# => columns: ["ID", "variable", "value"]

主要パラメータ

var_name value_name

id_vars

  • そのまま残したい列名 を指定します。
  • 主キーやID列などは通常ここに入ります。

value_vars

  • 縦に展開したい列 を指定します。
  • 指定しない場合は、id_vars以外すべての列が対象になります。
import pandas as pd

df = pd.DataFrame({
    "ID": ["A", "B"],
    "2022": [100, 90],
    "2023": [120, 110],
})

melted = pd.melt(
    df,
    id_vars=["ID"],
    var_name="year",
    value_name="sales"
)
print(melted)

value_vars

  • 縦に展開したい列 を指定します。
  • 指定しない場合は、id_vars以外すべての列が対象になります。
import pandas as pd

df = pd.DataFrame({
    "ID": ["A", "B", "C"],
    "2022": [100, 90, 130],
    "2023": [120, 110, 150],
    "2024": [140, 150, 170]
})

melted_partial = pd.melt(
    df,
    id_vars=["ID"],
    value_vars=["2022", "2023"],  # 2024はそのまま残す
    var_name="year",
    value_name="sales"
)
print(melted_partial)

ignore_index

  • デフォルトはTrueで、インデックスはリセットされます。
  • Falseにすると、元のインデックスを保持できます。
import pandas as pd

df = pd.DataFrame({
    "ID": ["A", "B"],
    "2022": [100, 90],
    "2023": [120, 110],
}, index=[10, 20])

melted_keep_idx = pd.melt(
    df,
    id_vars=["ID"],
    var_name="year",
    value_name="sales",
    ignore_index=False
)
print(melted_keep_idx)

応用的な使い方

複数のid_vars

df = pd.DataFrame({
    "Name": ["Alice", "Bob"],
    "Gender": ["F", "M"],
    "Math": [85, 92],
    "English": [78, 88]
})

pd.melt(df, id_vars=["Name", "Gender"], var_name="Subject", value_name="Score")

pivotとの関係

  • meltは「ワイド → ロング」変換
  • pivotpivot_tableは「ロング → ワイド」変換

両者を組み合わせることで、自由自在にデータの形を変換できます。

まとめ

  • meltデータをロング形式に整形する強力なツール
  • 特に「可視化」や「tidy data」を意識した前処理で多用される。
  • id_varsで残したい列を指定し、value_varsで展開したい列を指定するのが基本。
  • var_namevalue_nameを工夫することで読みやすいデータに変換できる。
  • pivotと組み合わせれば、データ整形が自由自在になる。

以上、PythonのPandasのmeltメソッドについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次