Python環境を起動中... 初回のみ数秒かかります
Lesson 2 / 12

SeriesとDataFrameの基礎

このレッスンで学ぶこと

  • Series(1次元)と DataFrame(2次元の表)の違いを理解できる
  • Series を作って index でアクセス・集計できる
  • 「DataFrameの各列はSeries」という関係を理解できる
  • indexcolumnsdtypesshape でデータの構造を確認できる

1. pandasの2大データ構造

pandasには、覚えるべきデータ構造が2つだけあります。

前のレッスンで作った「表」が DataFrame、そこから df["年齢"] で取り出した「1列」が Series です。 「DataFrame(表)の各列は Series(1列)」 という関係を、このレッスンでしっかり押さえましょう。 この2つさえ分かれば、pandasの操作はぐっと理解しやすくなります。

2. Series — 1次元のデータ

Series は pd.Series(リスト) で作れます。Pythonのリストと似ていますが、大きな違いは 各要素に「index(ラベル)」が付くことです。index を指定しなければ 0 から自動で振られ、 指定すれば「曜日」や「患者名」などを目印にできます。

sample_1.py
Ctrl+Enter
出力

💡 Series と リストの違い: Pythonのリストは「位置(0,1,2…)」でしかアクセスできませんが、Series は 「火」「田中さん」のような意味のあるラベルでアクセスできます。 これにより、データが「何を表しているか」が分かりやすくなり、後の操作(並べ替え・結合)でも威力を発揮します。

3. DataFrame — 2次元の表

DataFrame は、複数のSeries(列)が横に並んだ表です。 前のレッスンと同じく辞書から作れますが、「各列がSeriesである」ことを今回は意識してみましょう。

sample_2.py
Ctrl+Enter
出力

💡 「表 = 列(Series)の集まり」: DataFrame は、複数の Series を辞書のように束ねたものです。 df["年齢"] で1列を取り出すと Series が返り、df[["年齢", "BMI"]] のように リストで複数列を指定すると、その列だけの DataFrame が返ります(列選択の詳細はレッスン5で扱います)。

4. DataFrameの構造を確認する(属性)

DataFrame には、その「形」や「中身の型」を確認するための属性が用意されています。 データを受け取ったとき、まずこれらで構造を把握するのが分析の基本です。

属性意味
df.shape(行数, 列数) のタプル
df.index行ラベル(index)の一覧
df.columns列名の一覧
df.dtypes各列のデータ型
sample_3.py
Ctrl+Enter
出力

💡 dtypes(データ型)の読み方:

  • object … 文字列(氏名・診断名など)
  • int64 … 整数(年齢・回数など)※ブラウザ環境では int32 と表示される場合があります
  • float64 … 小数(BMI・検査値など)

列ごとに型が違ってよいのがDataFrameの特徴です。型は計算や並べ替えの挙動に影響するので、最初に dtypes で確認する習慣をつけましょう。

5. 練習問題

問題 1

患者名をindexにしたSeriesを作ろう

3人の患者の最高血圧(SBP)を、患者名をindexにしたSeriesで作ってください。
田中=120、佐藤=135、鈴木=118。そして「佐藤さんの値」と「最大値」を表示しましょう。

exercise_1.py
出力
ヒントを見る(答え+解説)
import pandas as pd

# 患者名をindexにしたSeriesを作ってください
sbp = pd.Series([120, 135, 118], index=["田中", "佐藤", "鈴木"])

# 佐藤さんの値と、最大値を表示してください
print("佐藤さん:", sbp["佐藤"])   # 135
print("最大:", sbp.max())        # 135

pd.Series(値のリスト, index=ラベルのリスト) でラベル付きのSeriesが作れます。sbp["佐藤"] のようにラベルで値を取り出せるのがSeriesの便利な点です。

問題 2

DataFrameの属性を確認しよう

下記の df について、shape・columns・dtypes を表示してください。

exercise_2.py
出力
ヒントを見る(答え+解説)
import pandas as pd

df = pd.DataFrame({
    "氏名": ["山田", "伊藤", "中村", "小林"],
    "年齢": [40, 58, 29, 65],
    "体温": [36.5, 37.2, 36.8, 38.1],
})

# shape, columns, dtypes を表示してください
print("shape:", df.shape)          # (4, 3)
print("columns:", list(df.columns))  # ['氏名', '年齢', '体温']
print(df.dtypes)                    # 氏名=object, 年齢=int64, 体温=float64

4人×3列なので shape(4, 3)。氏名は文字列(object)、年齢は整数(int64)、体温は小数(float64)と、列ごとに型が異なります。

問題 3

1列を取り出してSeriesか確認しよう

下記の df から 体温 の列を取り出し、その平均と、取り出したものの型(type)を表示してください。

exercise_3.py
出力
ヒントを見る(答え+解説)
import pandas as pd

df = pd.DataFrame({
    "氏名": ["山田", "伊藤", "中村", "小林"],
    "体温": [36.5, 37.2, 36.8, 38.1],
})

# 体温の列を取り出し、平均と型(type)を表示してください
taion = df["体温"]
print("平均:", taion.mean())   # 37.15
print("型:", type(taion))      # <class 'pandas.core.series.Series'>

1列を取り出すと Series が返ります。平均は (36.5+37.2+36.8+38.1)/4 = 37.15。「DataFrameの列=Series」を実感できる例です。

6. まとめ

このレッスンのポイント

  • pandasのデータ構造は Series(1次元)DataFrame(2次元の表) の2つ
  • Series は index(ラベル)付きのデータ。s["ラベル"] でアクセス
  • DataFrameの各列はSeriesdf["列名"] で1列(Series)が取れる
  • shapeindexcolumnsdtypes で構造を確認できる
  • dtypes:文字列=object、整数=int64、小数=float64

自由に試してみましょう:

free_practice.py
出力

完了するとコース一覧に進捗が記録されます