列を選ぶ
このレッスンでできるようになること。必要な列だけを取り出して、扱いやすい表に絞れるようになります。
売上データには6つの列があります。「商品ごとにいくら売れたか」を見たいだけなら、売上日も店舗もカテゴリも要りません。列を絞ると表が読みやすくなり、処理も軽くなります。
列を複数選ぶときは、角かっこの中に列名のリストを渡します。
Python
import pandas as pd
df = pd.read_csv("sales.csv")
picked = df[["商品名", "金額"]]角かっこが2重に見えますが、外側は「取り出す」記号、内側はリストの記号です。この形で返るのは DataFrame です。列が1つでも、リストで渡せば DataFrame のままになります。
渡した順番がそのまま列の順番になります。df[["金額", "商品名"]] と書けば金額が左に来ます。元の CSV の並びに縛られる必要はありません。
列名を1つでも間違えると KeyError になります。実際の分析では、列名の前後に空白が入っているせいで見た目は合っているのに落ちる、ということがよく起きます。そういうときは df.columns.tolist() で本当の列名を確かめてください。
不要な列を落としたいときは df.drop(columns=["数量"]) という書き方もあります。残したい列が多く、落としたい列が少ないときはこちらが短く済みます。どちらも元の df は変わりません。新しい表が返るだけです。変えたいなら df = df.drop(columns=["数量"]) のように代入し直します。この「元を書き換えない」性質は pandas 全体に共通するので、覚えておくと混乱が減ります。
要件
- 列名のリストを渡す形で商品名と金額の2列を取り出す
- columns に取り出した表の列名リストを入れる
- rows に行数を int で入れる
- records に to_dict("records") の結果を入れる
入出力例
pick_columns("売上日,店舗,商品名,カテゴリ,数量,金額
2026-01-05,渋谷店,白磁のマグカップ,食器,2,3600
2026-01-06,横浜店,鉄のフライパン,調理器具,1,7800
2026-01-07,大宮店,積み重ね収納ボックス,収納,3,4500
2026-01-08,渋谷店,木製カッティングボード,調理器具,1,4200
") → {"columns":["商品名","金額"],"records":[{"商品名":"白磁のマグカップ","金額":3600},{"商品名":"鉄のフライパン","金額":7800},{"商品名":"積み重ね収納ボックス","金額":4500},{"商品名":"木製カッティングボード","金額":4200}],"rows":4}
pick_columns("売上日,店舗,商品名,カテゴリ,数量,金額
2026-02-03,渋谷店,鋳物ホーロー鍋,調理器具,1,16800
2026-02-04,大宮店,白磁のマグカップ,食器,5,9000
") → {"columns":["商品名","金額"],"records":[{"商品名":"鋳物ホーロー鍋","金額":16800},{"商品名":"白磁のマグカップ","金額":9000}],"rows":2}ヒント
編集 ゆめさく編集部