概観コマンド
このレッスンでできるようになること。head と info と describe を使い分けて、データの健康診断ができるようになります。
読み込んだデータをいきなり全部表示すると、画面が数千行で埋まって何も分かりません。pandas には全体を短時間で掴むための道具が3つあります。
df.head() は先頭の5行を返します。引数に数を渡せば df.head(3) で3行になります。目的は値の形を見ることです。日付が 2026-01-05 なのか 2026/1/5 なのか、金額に円が付いているのか、といった細かい形はここで気づきます。末尾を見る df.tail() もあり、ファイルの終わりに合計行が混ざっていないかの確認に使います。
df.info() は列ごとの型と非欠損の件数を表示します。目的は壊れている列を見つけることです。金額が数値ではなく object と表示されていたら、どこかの行に文字が混ざっています。件数が他の列より少なければ、その列に欠損があります。info は画面に表示するだけで値を返さないので、判定に使うなら df.dtypes や df.count() を直接読みます。
df.describe() は数値列の統計量を返します。件数、平均、標準偏差、最小、四分位数、最大の7つです。目的は値の範囲を知ることです。金額の最小がマイナスなら返品が混ざっており、最大が桁違いなら外れ値か入力ミスです。describe の結果は DataFrame なので、そのまま返さず to_dict() などにしてから扱います。
Python
import pandas as pd
df = pd.read_csv("sales.csv")
print(df.dtypes["金額"])
print(int(df["金額"].max()))この3つを順番に見る習慣を、健康診断と呼びます。分析の前に3分かければ、あとの数時間を無駄にせずに済みます。この演習では、健康診断の結果を辞書にまとめます。
要件
- 金額列の型名を dtype に文字列で入れる
- count に非欠損の件数を int で入れる
- min と max に金額の最小と最大を int で入れる
- mean に金額の平均を小数のまま入れる
入出力例
health_check("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,白磁のマグカップ,食器,2,3600
2026-01-06,横浜店,鉄のフライパン,調理器具,1,7800
2026-01-07,大宮店,積み重ね収納ボックス,収納,3,4500
2026-01-08,渋谷店,木製カッティングボード,調理器具,1,4200
2026-01-09,横浜店,白磁のマグカップ,食器,4,7200
2026-02-03,渋谷店,鋳物ホーロー鍋,調理器具,1,16800
2026-02-04,大宮店,白磁のマグカップ,食器,5,9000
2026-02-05,渋谷店,布製収納バスケット,収納,2,3000
") → {"count":8,"dtype":"int64","max":16800,"mean":7012.5,"min":3000}
health_check("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,白磁のマグカップ,食器,2,3600
2026-01-06,横浜店,鉄のフライパン,調理器具,1,7800
2026-01-07,大宮店,積み重ね収納ボックス,収納,3,4500
2026-01-08,渋谷店,木製カッティングボード,調理器具,1,4200
") → {"count":4,"dtype":"int64","max":7800,"mean":5025,"min":3600}