1. まず「データを眺める」ことから
データ分析は、いきなり集計や加工から始めるものではありません。 最初にやるべきは 「どんなデータが、どれだけ、どんな型で入っているか」を把握することです。 これを データの全体像をつかむ(探索) と言います。
特に、何百行もある大きなデータは print(df) で全部表示すると逆に分かりにくくなります。
pandasには、大きなデータでも要点だけを素早く確認できるメソッドが用意されています。
このレッスンで、その「最初の一手」を身につけましょう。
💡 これから使う「確認の4点セット」:
df.head()/df.tail()… 先頭・末尾を数行だけ見るdf.shape… 何行×何列か(レッスン2で学習)df.info()… 列名・型・欠損の有無・行数を一覧df.describe()… 数値列のサマリ統計(レッスン1で学習)
2. head / tail — 先頭・末尾をのぞく
df.head(n) は先頭 n 行、df.tail(n) は末尾 n 行だけを表示します。
n を省略すると 5 行が表示されます。「データがちゃんと読み込めているか」「列名は正しいか」を
ひと目で確認できる、最もよく使うメソッドです。
🩺 医療データ文脈:
数千人分の健診データを読み込んだとき、まず df.head() で「列名は想定どおりか」「数値が文字列になっていないか」を確認します。
ここで異変に気づければ、後の集計ミスを防げます。「読み込んだら、まず head()」が鉄則です。
3. info — 列の型と欠損をまとめて確認
df.info() は、データフレーム全体の情報を1つにまとめて表示します。
「各列の名前・データ型・欠損していない件数・全体の行数」が一覧でき、
欠損値(データの抜け)があるかどうかもここで分かります。
💡 info() の読みどころ:
- Non-Null Count(非欠損の件数)… 全行数より少なければ、その列に欠損がある
- Dtype … 各列の型(object=文字列、int64/float64=数値)
- RangeIndex … 全体の行数
info() は print() で囲まなくてもそのまま表示されます(戻り値ではなく直接出力するメソッドのため)。欠損値の本格的な処理は レッスン7「欠損値の扱い」 で扱います。
4. describe — 数値列のサマリ統計
レッスン1でも触れた df.describe() は、データの「分布」を素早くつかむのに最適です。
件数・平均・標準偏差・最小〜最大・四分位数が一覧でき、「だいたいどのくらいの値が、どれだけばらついているか」が分かります。
💡 探索の黄金ルーティン:
データを受け取ったら、head() → info() → describe() の順に実行するのが定番です。
「中身を見る → 型と欠損を確認 → 分布をつかむ」という流れで、わずか数行でデータの全体像を把握できます。
ここまでやって初めて、安心して集計や加工に進めます。
5. 練習問題
先頭5行と全体の行数を確認しよう
下記の df について、先頭5行(head)と shape を表示してください。
ヒントを見る(答え+解説)
import pandas as pd
df = pd.DataFrame({
"患者ID": ["P001","P002","P003","P004","P005","P006","P007"],
"年齢": [45, 62, 33, 55, 71, 48, 29],
"SBP": [120, 145, 118, 138, 160, 128, 110],
})
# 先頭5行と shape を表示してください
print(df.head()) # head() は省略すると5行
print("shape:", df.shape) # (7, 3)
df.head() は引数を省略すると先頭5行を表示します。df.shape は (7, 3)=7人×3列。データを受け取ったらまずこの2つで全体像を確認します。
info で型と件数を確認しよう
下記の df に対して info() を実行し、各列の型と件数を確認してください。
ヒントを見る(答え+解説)
import pandas as pd
df = pd.DataFrame({
"氏名": ["山田","伊藤","中村","小林"],
"年齢": [40, 58, 29, 65],
"体温": [36.5, 37.2, 36.8, 38.1],
})
# info() で全体情報を表示してください
df.info()
df.info() だけで、列名・型(氏名=object、年齢=int64、体温=float64)・各列の非欠損件数(4)・全行数が一覧表示されます。print() で囲む必要はありません。欠損があれば Non-Null Count が4より少なくなります。
describe でサマリ統計を出そう
下記の df に対して describe() を実行し、さらに SBPの平均を表示してください。
ヒントを見る(答え+解説)
import pandas as pd
df = pd.DataFrame({
"SBP": [120, 145, 118, 138, 160, 128],
"DBP": [80, 92, 76, 88, 98, 84],
})
# describe() と SBPの平均を表示してください
print(df.describe())
print("SBPの平均:", df["SBP"].mean()) # 134.83...
describe() でSBP・DBPそれぞれのサマリ統計が一覧表示されます。SBPの平均は (120+145+118+138+160+128)/6 = 134.83... です。
6. まとめ
このレッスンのポイント
- 分析は「データを眺める(全体像の把握)」から始める
head(n)/tail(n):先頭・末尾を数行だけ確認(省略時5行)info():列名・型・欠損の有無・行数を一覧(print不要)describe():数値列のサマリ統計(分布をつかむ)- 黄金ルーティン:head() → info() → describe()
自由に試してみましょう:
完了するとコース一覧に進捗が記録されます