pandasは「データを見るツール」ではなく、「データを整えるツール」です。特に実務では、「いかに効率よく整形できるか」が重要になります。
この記事では、単なる文法紹介ではなく、「実際の業務でどう使うか」という視点で、データ加工の流れに沿って解説していきます。
Pythonの導入についてはこちら。
Python入門:最初のプログラムを作って実行する方法 – Lean Data Office
Python環境構築のやり方|初心者向け完全ガイド – Lean Data Office
pandasについてはこちら。
Python入門:pandasの基本をやさしく解説(データ操作の超入門) – Lean Data Office
🧭 データ加工は“流れ”で考える
pandasのコードが読みにくくなる原因の多くは、「処理の順番がバラバラ」なことです。
実務では、次のような流れで考えると整理しやすくなります。
最初にデータの不要部分を削り、その後必要な列を作り、欠損値を処理し、最後に集計する。この順序を意識するだけで、コードの見通しは大きく改善します。
➕ 列の追加は“加工の起点”
まず、多くの処理は「新しい列を作る」ことから始まります。
Python
df[“売上金額”] = df[“単価”] * df[“数量”]
Show more lines
このような単純な計算はもちろんですが、実務では「条件付きの列」を作るケースが非常に多くなります。
Python
df[“売上ランク”] = df[“売上金額”].apply(
lambda x: “A” if x >= 10000 else “B”
)
Show more lines
このように、後の集計や分析に使うための「意味のある列」を先に作っておくと、その後の処理が圧倒的に楽になります。
✂️ 列・データの整理は早めにやる
不要な列や行は、早い段階で削除しておくのが基本です。
Python
df = df.drop(columns=[“備考”, “更新日時”])
Show more lines
また、条件で不要データを切り落とすことも重要です。
Python
df = df[df[“売上金額”] > 0]
Show more lines
ここを後回しにすると、「いらないデータが混ざったまま計算する」というミスにつながります。
⚠ 欠損値は“放置しない”
実務データでは、欠損値(NaN)はほぼ確実に存在します。そして、これをどう扱うかで結果が変わります。
単純に削除するケース
Python
df = df.dropna(subset=[“売上金額”])
“
Show more lines
値で埋めるケース
Python
df[“売上金額”] = df[“売上金額”].fillna(0)
Show more lines
重要なのは、「なぜその処理をするのか」を意識することです。とりあえず0で埋める、という癖は危険です。場合によっては平均値や前後のデータを使った補完の方が適切なこともあります。
🔤 文字列加工は地味に重要
データクレンジングでは、文字列の加工がかなりの割合を占めます。
例えば、表記揺れを統一するケース。
Python
df[“国名”] = df[“国名”].str.strip().str.upper()
Show more lines
ある特定の文字列を含むかで判定する場合。
Python
df[“VIP顧客”] = df[“顧客名”].str.contains(“VIP”)
Show more lines
こうした処理を丁寧に行うことで、後の集計精度が大きく変わります。
🧾 日付データの扱い
実務では日付もよく扱いますが、文字列のままだと扱いにくいため変換が必要です。
Python
df[“日付”] = pd.to_datetime(df[“日付”])
Show more lines
変換後は、月ごとの集計なども簡単にできます。
Python
df[“月”] = df[“日付”].dt.month
Show more lines
日付を正しく扱えるようになると、「期間分析」が一気に楽になります。
📊 groupbyで集計する
pandasの強みは、少ないコードで強力な集計ができる点です。
Python
df.groupby(“地域”)[“売上金額”].sum()
Show more lines
さらに、複数項目の集計も柔軟に対応できます。
Python
df.groupby(“地域”).agg({
“売上金額”: “sum”,
“数量”: “mean”
})
Show more lines
そして実務では、「集計結果をDataFrameとして扱う」ケースが多いため、以下もよく使います。
Python
df.groupby(“地域”, as_index=False)[“売上金額”].sum()
Show more lines
これを知らないと、後の結合処理がやりづらくなります。
🔗 データ結合(merge)
実務では複数のデータを組み合わせることが非常に多いです。
Python
df = pd.merge(df_sales, df_master, on=”顧客ID”, how=”left”)
Show more lines
ここで重要なのは how の指定です。
leftを使うことで、「元データを基準にしつつ、マスタ情報を追加する」という動きになります。
このあたりはSQLのJOINとほぼ同じ考え方です。
⚙ applyは便利だが使いすぎ注意
apply は柔軟ですが、パフォーマンスが落ちやすいという特徴があります。
Python
df[“区分”] = df[“売上金額”].apply(
lambda x: “高” if x > 10000 else “低”
)
Show more lines
簡単に書ける反面、大量データでは遅くなるため、可能な場合はベクトル演算を使った方が良いです。
Python
df[“区分”] = “低”
df.loc[df[“売上金額”] > 10000, “区分”] = “高”
“
Show more lines
この違いは実務ではかなり重要になります。
🧠 “読みやすさ”が最重要
pandasでありがちな失敗は、「1行で全部書こうとする」ことです。
例えば以下のようなコードは動きますが、かなり読みにくいです。
Python
df = df[df[“売上”] > 0].groupby(“地域”).agg({“売上”: “sum”})
Show more lines
実務ではあえて分けた方が良いです。
Python
df = df[df[“売上”] > 0]
result = df.groupby(“地域”)[“売上”].sum()
Show more lines
コードは短さよりも「意図が伝わること」の方が重要です。
✍️ まとめ
pandasのデータ加工は、単なる関数の組み合わせではありません。「どう整理すればデータが意味を持つか」を考える作業です。
特に実務では、
不要なデータの削除、列の追加、欠損の処理、そして集計という流れを意識することが重要です。
また、apply や groupby のような強力な機能も、「読みやすさ」と「パフォーマンス」を意識して使うことで、より良いコードになります。
最初は時間がかかっても、「整理してから集計する」という意識を持つことで、ミスの少ないデータ処理ができるようになります。