#62

CSVデータの読み取りと集計

複数行文字列のCSVをcsvモジュールで解析し、グループごとに集計します。

解説

実際のデータはCSV形式で配られることがよくあります。ここでは複数行の文字列をCSVデータと見立て、csv.DictReaderで1行ずつ辞書として読み込みます(各列に名前でアクセスできて便利)。 さらに collections.defaultdict を使って「クラスごと」にスコアをまとめ、グループ別の平均と人数、全体平均を集計します。 データの読み込み→グループ化→集計、というデータ分析の基本の流れを体験しましょう。

書き方

import csv / from io import StringIO / from collections import defaultdict — CSV解析・文字列のファイル化・初期値つき辞書を読み込む。
・StringIO(文字列) — 複数行文字列をファイルのように扱う。
・csv.DictReader(...) — 各行を列名キーの辞書として読み込む。row["列名"] でアクセス。
・defaultdict(list) — 未登場キーに自動で空リストを用意し append() でまとめる。
・sorted(辞書) でキーを並べ、sum(vals)/len(vals) で平均。内包表記で全件を平坦化。

書いて動かす

この回の課題

複数行のCSV文字列を DictReader で読み込み、クラスごとにスコアをまとめて、グループ別平均・人数と全体平均を集計しよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

自分のPCでも続けてみませんか

Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。