🐼 Pandasを応用レベルで使えると、データ分析が一気に楽しくなる
Pythonでデータ分析や業務効率化をするとき、必ずと言っていいほど登場するのが Pandas(パンダス) です。基本的なデータフレームの作り方や読み込みは知っていても、「複数のデータをまとめて集計する」「複数のCSVを結合する」「グラフでパッと可視化する」といった応用テクニックを使いこなせると、業務スピードが何倍にも変わります。
売上データを担当者ごとに自動集計したり、複数のシステムから出てきたCSVを1つにまとめたり、Excelでは時間がかかる集計を数行のコードで終わらせたり。そんな未来を引き寄せるための応用テクを、動画の内容に沿って整理しました。✨
📊 groupbyでデータをまとめて集計する
「担当者ごと」「曜日ごと」「商品カテゴリごと」のように、ある列の値でグループ化して集計したいときに使うのが groupby です。たとえば8月の売上実績データから、担当者ごとの1日あたりの平均売上を出したいとします。
書き方はとてもシンプルで、df.groupby("担当者").mean() のように、第1引数にグループ化したい列名を指定し、続けて集計用のメソッドを呼び出すだけ。これだけで佐藤さんの平均、斉藤さんの平均、田中さんの平均がパッと表示されます。便利すぎますよね。🎯
🔢 使える集計関数いろいろ
- 📈 mean():平均値
- 🔝 max() / min():最大値・最小値
- ➕ sum():合計
- 🔢 count():件数
数値以外の列が混ざっているときは、numeric_only=True を指定すると数値列だけを対象に集計してくれます。エラーで止まらず、必要なデータだけスッキリ取り出せます。
⚠️ 欠損値(NaN)の扱いに注意
集計関数は、列ごとにNaNを除外してから計算します。たとえば金曜日の売上が1件だけ欠損していると、count() の結果も他の列より1件少なくなります。「数が合わない…」と思ったら、まずNaNの有無を疑ってみましょう。🧐
🔁 インデックス操作を自在に
データフレームのインデックスは、後から自由に変更できます。地味ですが、表計算で言う「並べ替え」「キー設定」に相当する大事な操作です。
- 🆕 df.index = [...]:リストやSeriesでインデックスを丸ごと置き換え。
- 🏷 df.columns = [...]:カラム名を一括変更(日本語→英語のリネームに便利)。
- 🔑 df.set_index("列名", inplace=True):既存の列をインデックスに昇格。
- 🔄 df.reset_index(drop=True, inplace=True):インデックスを0から振り直してリセット。
inplace=True を付けると元のデータフレーム自体が書き換わり、付けないと新しいデータフレームが返ってくる、という違いも押さえておくと混乱しません。
🔗 複数のデータフレームを結合する
📚 concat:縦・横にそのまま連結
pd.concat([df1, df2]) でデータフレームをそのまま連結できます。デフォルトは縦方向、axis=1 を指定すると横方向の連結になります。3つ以上のデータフレームをまとめて渡せるのもポイントです。
連結時に片方にしかない列がある場合、その部分はNaNで埋められます。「データが消えた」のではなく、「もう片方になかったから空欄」と考えると分かりやすいです。📝
🗝 merge:キーを使った賢い結合
SQLのJOINに相当するのが pd.merge。共通のキー(例:ユーザーID)を指定して、横方向にデータを結合します。
- 🤝 inner(既定):両方にあるキーだけ残す。
- ⬅️ left:左のデータをすべて残し、右にないキーはNaN。
- ➡️ right:右のデータをすべて残し、左にないキーはNaN。
- 🌐 outer:両方の和集合。どちらかにしかないキーもすべて残す。
使い方は pd.merge(df1, df2, on="ユーザーID", how="left") のように、on でキー、how で結合方式を指定。3つ以上を一度には結合できないので、2つずつ繰り返すのがコツです。🔁
🧪 mapとラムダ式でカスタム列を作る
「20歳以上なら成人、それ未満なら未成年」のような条件付きの新しい列を作りたいときは、map とラムダ式の組み合わせが強力です。
たとえば df["区分"] = df["年齢"].map(lambda x: "成人" if x >= 20 else "未成年") と書くだけで、年齢列の各値が順番にラムダ式に渡され、結果が新しい列として追加されます。Excelの IF 関数を一気に全行に適用するイメージですね。⚡
📈 データフレームから直接グラフを描く
分析結果は数値だけより、グラフで見せたほうが断然伝わります。Pandasにはデータフレームから直接グラフを描ける plot メソッドが用意されています。
使い方は df.plot(x="ユーザー", y="購入額", kind="bar") のように、X軸・Y軸の列と kind でグラフ種類を指定するだけ。kind="bar" なら棒グラフ、デフォルトは折れ線グラフになります。
日本語ラベルが文字化けする場合は、事前に pip install japanize-matplotlib しておき、import japanize_matplotlib を1行書くだけで解決。グラフが一気に読みやすくなります。🇯🇵
📚 Pandasを使いこなすためのおすすめ書籍
動画やブログで全体像をつかんだら、書籍で体系的に深掘りするのが上達への近道です。Pandasだけでなく、データ分析・可視化・機械学習との組み合わせまで一気に押さえると、実務での応用力が一段上がります。📈
🐼 Pandasの決定版テキスト
Pandasの作者自身が著者を務める世界的な定番書。データの前処理・集計・結合・可視化までを網羅し、業務で困ったときに辞書代わりに使える1冊です。
📊 実務でそのまま使える前処理レシピ
業務データにありがちな「欠損値」「日付処理」「結合」「集計」を、Pandasのメソッドベースでパターン化して解説。レシピ集として机に置いておきたい1冊です。
🤖 機械学習につなげたい人へ
Pandasで整えたデータを、scikit-learnで実際にモデル化する流れを学べる定番書。「集計の次のステップ」を狙う人に最適です。
🎨 データ可視化を一段上のレベルに
matplotlibやseabornを使った美しいグラフ作成を、Pandasと組み合わせて学べる1冊。「分析→可視化→共有」までの流れがスムーズになります。
🚀 業務効率化・自動化を狙う人へ
ExcelやCSV、Webスクレイピングと組み合わせて、Pandasで日々の業務を自動化する方法を学べる実践書。明日からのルーティンが軽くなります。
❓ よくある質問(FAQ)
🤔 Q1. groupbyで複数の列をキーにできますか?
はい、df.groupby(["担当者", "曜日"]) のようにリストで複数列を指定すると、組み合わせごとにグループ化されます。クロス集計に近いことが手軽にできます。
🔗 Q2. concatとmergeはどう使い分ければいい?
同じ形のデータをそのままつなげるなら concat、共通のキーで関連付けて結合するなら merge、と覚えると分かりやすいです。SQLに慣れている方には merge がJOINと同じ感覚で使えます。
⚠️ Q3. 欠損値(NaN)が混ざると集計結果が変になります
多くの集計関数はNaNを自動で除外するため、列ごとに件数や平均が変わることがあります。必要に応じて fillna() で値を埋めるか、dropna() で行を除外してから集計しましょう。
🐌 Q4. 大量データだと処理が遅いです
ベクトル化された操作(map、apply よりも純粋なPandas/NumPy演算)を使う、不要な列を早めに削る、データ型を最適化する、といった工夫で速くなります。それでも遅ければ Polars や Dask への移行も選択肢です。
🎨 Q5. グラフの日本語が文字化けします
matplotlib単体だと日本語フォントの設定が必要ですが、japanize-matplotlib をインストールして import japanize_matplotlib を1行書くだけで自動解決できます。手軽でおすすめです。
✨ まとめ:Pandas応用テクで「分析できる人」へ
Pandasの基本に groupby・concat・merge・map・plot を加えるだけで、扱えるデータの幅と分析の深さが一気に広がります。Excelで手作業していた集計やグラフ作成が、数行のコードで自動化できる。これが応用編の醍醐味です。🚀
最初は引数や使い分けで迷うかもしれませんが、書籍で体系的に学びながら手を動かせば、必ず体に染み込みます。今回紹介した書籍を相棒に、あなたのデータ活用スキルを次のステージへ引き上げてみてください。📚


![前処理大全[データ分析のためのSQL/R/Python実践テクニック]](https://m.media-amazon.com/images/I/51Cts803MnL._SL160_.jpg)









コメント