SeriesとDataFrame
このレッスンでできるようになること。pandas が持つ2つの器、Series と DataFrame を区別して説明できるようになります。
pandas のデータは2種類しかありません。DataFrame は表そのもので、行と列があります。マイショップ・チェーンの売上CSVを読み込むと DataFrame になります。Series は1列だけの縦のデータです。DataFrame から1つの列を取り出すと Series になります。
Python
import pandas as pd
df = pd.read_csv("sales.csv")
amounts = df["金額"]df["金額"] は角かっこに列名を1つ書く形で、返ってくるのは Series です。ここで角かっこを二重にして df[["金額"]] と書くと、1列だけの DataFrame が返ります。見た目は似ていますが型が違うので、混ざると後で困ります。「1つの列そのものが欲しいなら1重、表の形のまま欲しいなら2重」と覚えてください。
Series にはインデックスが付いています。読み込んだ直後は 0, 1, 2 と番号が振られています。DataFrame から列を取り出しても、元の行番号がそのまま付いてきます。この番号があるおかげで、複数の Series を計算しても行がずれません。
型を確かめるには type() を使います。組み込みの関数なので type(amounts).__name__ と書くと "Series" という文字列が取れます。分析中に「これは Series だったか DataFrame だったか」と迷ったら、この確認が早いです。
Series には合計や平均の計算が最初から付いています。amounts.sum() や amounts.mean() がそれです。DataFrame にも同じ名前のメソッドがありますが、こちらは列ごとに計算した結果を返すので、返る形が変わります。器の違いを意識すると、返り値の形に驚かなくなります。この演習では、金額の列を2つの取り出し方で取り、それぞれの型名を確かめます。
要件
- df["金額"] の型名を one に入れる
- df[["金額"]] の型名を two に入れる
- 型名は type(x).name で文字列にする
- Series 側の合計を int にして total に入れる
入出力例
inspect_types("売上日,店舗,商品名,カテゴリ,数量,金額
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
") → {"one":"Series","total":56100,"two":"DataFrame"}
inspect_types("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,白磁のマグカップ,食器,2,3600
2026-01-06,横浜店,鉄のフライパン,調理器具,1,7800
2026-01-07,大宮店,積み重ね収納ボックス,収納,3,4500
2026-01-08,渋谷店,木製カッティングボード,調理器具,1,4200
") → {"one":"Series","total":20100,"two":"DataFrame"}