DATA / LESSON 02

pandasで表を読む

行と列に意味を付け、欠けた値にも気づけるようになろう。

図から学ぶ
pandasで表を読むを表すキャラクターと学習内容のイラスト
TODAY'S GOAL

この回でつかむこと

列を選び、欠損値と平均の意味を説明できる。

ことばの窓
01 / SEE THE IDEA

pandasで表を読むって何だろう?

DataFrameは行と列を持つ表です。列名から必要な情報を選べます。欠損値NaNは『値がない』印で、実測の0とは違います。

あおい

気温の表を見ていたら、1日だけ値がない! ゼロってことかな?

AI先生

そこは大事な違いなんだよ。『測っていない』と『0度だった』は別の意味だね。

はる

欠損値を先に確認してから、平均を計算します。

空欄は0度ではない。3日目は測っていない。記録された3日分を合計。平均は60÷3=20度。
図2 空欄は0度ではない。3日目は測っていない。記録された3日分を合計。平均は60÷3=20度。

AI先生 空欄を0度にすると、平均まで変わってしまうんだよ。

図を読むと

欠損を0と決めつけず、記録の意味を先に確認する。 DataFrameは行と列を持つ表です。列名から必要な情報を選べます。欠損値NaNは『値がない』印で、実測の0とは違います。

小さなコードで確かめるまず結果を予想しよう
import pandas as pd
df = pd.DataFrame({'day':[1,2,3,4], 'temp':[18.0,20.0,None,22.0]})
print(df['temp'].isna().sum())
print(df['temp'].mean())
実行結果欠損1件、平均20.0

なぜそうなる? mean()は既定で欠損を除外します。4件の平均として扱ったわけではありません。

02 / GO ONE STEP FURTHER

条件に合う行を探す

『20度以上の日』のような問いを、列ごとの条件で表せます。

print(df.loc[df['temp'] >= 20, ['day','temp']])
実行結果2日目と4日目

ここに注目 条件がTrueの行だけを取り出します。欠損は20度以上とは判定されません。

03 / YOUR TURN

予想して、理由を話そう

答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。

気温が記録されていない日は?

答えを選ぶと理由が表示されます。

04 / TRY ON COLAB

Colabで試してみよう

コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。

保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。

COFFEE BREAK

身近な技術とつなげてみよう

AI先生

AI先生:センサーが通信できなかった日の空欄を0度にすると、突然の寒波に見えてしまうかもしれないね。

KEY TERMS

この回の重要な用語

本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。

DataFrame
行と列で構成されるpandasの表データです。
NaN
Not a Number。ここでは値が欠けていることを示します。
loc
行の条件と列名を指定して表の一部を選ぶ方法です。