売上データをpandasの pivot_table
で集計したら NaN
がズラリ…見づらい! と思ったら fill_value
を使えば一発で空欄にできて感動しました。
はじめに:NaNが並ぶと「はっ?」となる
ある日のこと。売上データをカテゴリ別・店舗別にクロス集計したくて、pandasの pivot_table
を使ってみました。Excelならピボットテーブルでサクッと出せるアレです。
しかし出力された表を見て私は固まりました。空欄のはずのセルに NaN
がズラリ
何が起きていたのか
調べたところ、pandasの集計である組み合わせにデータが存在しない場合、結果は NaN
(Not a Number)で表現されるとのことでした。Excelのピボットテーブルでは空欄で表示されることが多いので、見慣れないと違和感を覚えます。
私の場合、カテゴリA × 店舗B の組み合わせに売上データがない箇所が NaN
として出てきて、表全体が見づらくなっていたのです。
「はっ?」を解消する一行:fill_value
解決したのは意外とあっさり。pivot_table
に fill_value
引数を渡すだけでOKでした。
import pandas as pd
# 例: pivot_table の使い方
pd.pivot_table(df,
values="売上",
index="商品",
columns="店舗",
aggfunc="sum",
fill_value=" ") # NaN を空欄にする
これで NaN
がスマートに空欄(ここでは半角スペース)に置き換わり、表の見た目が一気に整います。Excelのピボットに慣れている人には特にありがたい機能です。
エクセルでやってた処理がPythonで一発
これまで私はExcelで空欄処理をしていました。条件付き書式やIF関数、手作業で空白に置き換えることも多々ありました。ところがPythonならたった一行で同等の見た目にできます。
正直、「ズルい…!」と軽く嫉妬したくなるほど楽ちんでした(褒め言葉です)。
実務での使い所
- 売上クロス集計をダッシュボード用に整形するとき
- CSVで出力してレポートに貼る際に見た目を整えたいとき
- データが欠損している部分を分かりやすく表示したいとき
どれも頻繁に出てくるユースケースなので、fill_value
の存在は覚えておくと地味に役立ちます。
NaNとにらめっこ
NaNを「はっ?」と思いながらにらめっこしてました。けれどその経験があるからこそ次に同じことが起きたときに素早く対応できるようになったわけで、結果オーライです。
学び:小さな便利さが学習のモチベになる
今回の一件で実感したのは、細かな「使い勝手の改善」が学習のモチベーションになるということ。大きなアルゴリズムや難しい概念を学ぶだけでなく、日常の「少しのストレス」を取り除くテクニックに触れることが、継続の原動力になりました。
pandas初心者のみなさん、ぜひ pivot_table
の fill_value
を試してみてください。表がスッと見やすくなって、「あ、Pythonってやっぱり便利だな」と思えるはずです。
まとめ
- 問題:pivot_tableの出力に
NaN
が表示されて見づらい - 解決:
fill_value=" "
を指定して空欄に置き換える - 教訓:小さな便利さの発見が学習の継続につながる