カテゴリー

  • プログラミング
  • 英語学習
  • 海外
  • キャリア
  • Kredo
Kredoオンラインキャンプ
KredoIT留学
無料カウンセリングはこちら
Kredoオンラインキャンプ体験談
KredoIT留学体験談
外貨を稼ぐ!海外フリーランス無料セミナー
未経験から即戦力ITグローバル人材 無料セミナー
Kredo Blog 英語・IT・AIで、人生の選択肢を広げる。
無料ウェビナー参加 ↗ 無料カウンセリング予約無料相談↗
MENU
EXPLORE KREDO BLOG

知りたいことから、世界が広がる。

ブログTOP ↗
留学・セブSTUDY & LIFE
留学・セブの記事をすべて読む ↗ 海外留学→海外移住→海外就職→
英語学習ENGLISH
英語学習の記事をすべて読む ↗ 英語学習法→英語フレーズ→
IT・AITECH & CREATIVITY
IT・AIの記事をすべて読む ↗ プログラミング学習→プログラミング知識→AI・テクノロジー→デザイン→
キャリアYOUR NEXT CHAPTER
キャリアの記事をすべて読む ↗ 転職情報→キャリアデザイン→
KredoOUR SCHOOL
Kredoの記事をすべて読む ↗ ニュース・キャンペーン→セブ島情報→インタビュー→
STUDENT DIARIES留学生のリアルな日記noteの体験記を読む ↗YouTube・Instagramで留学を知る ↗
記事を探す ブログTOP
留学・セブ
STUDY & LIFEセブで学ぶ。海外で暮らす。留学の準備から、現地の毎日まで。
留学・セブを知るすべての記事 ↗
海外留学費用・期間・学校選びを知る↗海外移住海外で暮らすためのヒント↗海外就職世界で働く選択肢を探す↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
英語学習
ENGLISH英語が、世界を近くする。学び方と、今日から使える英語。
英語学習を知るすべての記事 ↗
英語学習法自分に合った学び方を見つける↗英語フレーズ会話で使える表現を読む↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
IT・AI
TECH & CREATIVITYつくる力を、次の一歩に。プログラミングとAIをもっと身近に。
IT・AIを知るすべての記事 ↗
プログラミング学習はじめ方・学び方を知る↗プログラミング知識仕組みやスキルを深める↗AI・テクノロジーAIの活かし方と最新の話題↗デザイン伝わるものづくりのヒント↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
キャリア
YOUR NEXT CHAPTER学びの先の、働き方。転職・海外就職・これからのキャリア。
キャリアを知るすべての記事 ↗
転職情報次の仕事へ向かう準備↗キャリアデザイン自分らしい働き方を考える↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
Kredo
OUR SCHOOLKredoを、もっと知る。学校のこと、セブのこと、学ぶ人のこと。
Kredoを知るすべての記事 ↗
ニュース・キャンペーンKredoからのお知らせ↗セブ島情報現地の暮らしを知る↗インタビュー受講生・卒業生の声を読む↗
FROM CEBU / note留学生の、
リアルな毎日。
写真とことばで読む留学日記日記を読む ↗
留学日記 ↗

ENGLISH · IT · AI / STUDY IN CEBU

学ぶって、冒険だ。

英語・IT・AIで、人生の選択肢を広げよう。

留学の無料相談へ ↗Kredo Blogを読む →
JAPAN✈CEBU
Kredoで、講師と一緒に英語とITを学ぶ受講生
LEARN SOMETHING NEW.
セブの海を望む場所で学ぶ日常
HELLO, NEW WORLD.
  • TOP
  • プログラミング
  • Web・プログラミング(学習)
  • PythonでCSV集計を自動化する方法|サンプルとコード付き

PythonでCSV集計を自動化する方法|サンプルとコード付き

アバター画像
Kredo編集部
公開日:2026.10.05
更新日:2026.10.05
Web・プログラミング(学習) |
PythonでCSV集計を学ぶ机とパソコンのイメージ写真

PythonでCSV集計を自動化するなら、最初の課題は「小さな表を読み込み、条件に合う行だけを集計し、手計算と照合する」にすると取り組みやすくなります。ファイルが出力されるだけでなく、何を数え、何を除外したかを説明できることが大切です。

この記事では、架空の学習記録12件を使います。正しく処理できれば、採用8件、除外4件、学習時間の合計305分になります。サンプルCSV、実行用のPythonコード、正解のCSVをダウンロードして、同じ結果を再現できます。実在する受講生や企業のデータではなく、記事用の練習教材です。

この記事でわかること

  1. CSVを科目別に集計する。
  2. 空欄・存在しない日付・重複した記録を見つける。
  3. 「元の12件=採用8件+除外4件」と、合計305分を確かめる。
  4. 元データを変えず、集計結果と除外理由を別ファイルに残す。

変数や繰り返し処理がまだ難しい場合は、Pythonのサンプルコード集で基本の書き方を確認しながら進めてください。

記事のもくじ

  • PythonでCSV集計を自動化する流れと準備
    • 集計する前に、正しいデータの条件を決める
    • サンプルCSVと正解を先に確認しよう
  • サンプルとコードをダウンロードして実行する
  • CSV集計コードを4つの処理に分けて読む
    • 1.CSVを列名で読み取る
    • 2.入力を確かめてから数値へ変える
    • 3.科目が同じ行を集めて足す
    • 4.合計と除外理由を別々に書き出す
  • 集計結果の答え合わせと、エラーの確認方法
    • うまく動かないときに見る場所
    • 次の練習:1行追加して、答えを予測する
  • よくある質問
    • pandasをインストールしなくてもCSV集計はできますか?
    • このコードを会社のCSVへそのまま使えますか?
    • 自動化で何分短縮できますか?
  • まとめ:正しい答えを確かめられる自動化にしよう

PythonでCSV集計を自動化する流れと準備

入力12件を採用8件と理由付きの除外4件に分けるCSV集計の図解
この教材では、入力12件を採用8件と除外4件に分けます。除外した行も理由を付けて残します。

入力はstudy_log.csv、実行するファイルはaggregate.pyです。処理後は、指定した新しいフォルダーに3つのCSVができます。

ファイル 中身・確認すること
accepted.csv 集計に使った8件。科目や時間を元データと照合する
rejected.csv 除外した4件と理由。勝手に消えた行がないか確かめる
summary.csv 科目ごとの件数と合計時間。手計算した答えと比べる

実務でも、合計だけを出すと、取り込めなかった行に気づけないことがあります。今回は小さな教材ですが、採用したデータと除外したデータを両方残す流れを練習します。

集計する前に、正しいデータの条件を決める

まず、何を「正しい1件」と数えるかを決めます。数字を足す処理より先に、この条件をそろえてください。

列 今回のルール
record_id Wと半角数字3桁。同じIDが再登場した行は除外
date YYYY-MM-DD形式で、実在する日付
subject 英語、Python、JavaScriptのいずれか
minutes 半角数字で1〜1440分の整数。空欄・負数・小数は除外

これは教材のためのルールです。たとえば売上データでは、返品や調整を負の金額で表す場合があります。学習時間で使った「負数を除外する」という条件を、そのまま売上集計に移してはいけません。業務で使う前に、担当者と条件を決め直します。

重複の扱いにも注意が必要です。このコードは、同じIDが2回目以降に現れたら除外します。後の行が訂正版なのか、どちらも別の記録なのかを推測して修正する機能はありません。

サンプルCSVと正解を先に確認しよう

入力ファイルの最初の8件は、次のとおりです。ここでは計算を追いやすいように、ID・科目・時間を抜き出しています。

ID 科目 時間
W001 英語 30分
W002 Python 45分
W003 英語 25分
W004 Python 60分
W005 JavaScript 40分
W006 英語 35分
W007 Python 20分
W008 JavaScript 50分

残る4件には、あえて入力の問題を入れました。W009の日付は存在しない「2026-02-30」、W010の時間は空欄、W011の時間は「-10」です。最後の行ではW002が再登場します。自動で都合のよい値へ直すのではなく、理由を付けて集計から外します。

手計算の答えは、英語が30+25+35=90分、Pythonが45+60+20=125分、JavaScriptが40+50=90分。合計は90+125+90=305分です。先に正解を持っておくと、プログラムが出した数字をそのまま信じずに確認できます。

サンプルとコードをダウンロードして実行する

教材を展開し実行して結果を確認する3つの手順
教材を展開し、コードを実行して、同じ結果が出るか確かめます。写真は学習場面のイメージ(AI生成)です。

実習ファイル一式

CSV集計のサンプル・コード・正解をダウンロード(ZIP)

aggregate.py、study_log.csv、起動手順、expectedフォルダー内の正解CSVを同梱しています。追加ライブラリのインストールは不要です。

Python 3.9以降が入ったPCで、ZIPを展開してください。ターミナルまたはコマンドプロンプトで、aggregate.pyがあるフォルダーを開きます。Macでは、cd と入力した後に展開したフォルダーをターミナルへドラッグすると、移動先のパスを入力できます。

Macなどでpython3コマンドを使う環境では、次を実行します。

python3 aggregate.py study_log.csv result01

WindowsでPythonランチャーのpyを使う環境では、次のように実行できます。自分の環境でPython 3を起動するコマンドに合わせてください。

py -3 aggregate.py study_log.csv result01

実行後に表示される答えは、次のとおりです。

入力12件 / 採用8件 / 除外4件 / 合計305分
英語: 3件 / 90分
Python: 3件 / 125分
JavaScript: 2件 / 90分

同じ場所にできたresult01フォルダーを開き、3つのCSVを確認しましょう。もう一度実行するときはresult02など、まだ存在しないフォルダー名に変えます。前回の結果を上書きしないよう、この教材では既存の出力フォルダーを指定すると中断します。

CSV集計コードを4つの処理に分けて読む

CSV処理を読み込み、検証、集計、書き出しの4つに分けた図解
読み込み・検証・集計・書き出しに分けると、それぞれの処理が何をしているか追いやすくなります。

1.CSVを列名で読み取る

標準ライブラリのcsv.DictReaderを使うと、1行のデータを列名で取り出せます。たとえばrow['subject']が科目、row['minutes']が時間です。

with source.open(encoding='utf-8-sig', newline='') as handle:
    reader = csv.DictReader(handle, strict=True)
    if reader.fieldnames != FIELDS:
        raise ValueError('列名と順番を確認してください。')
    for row in reader:
        subject = row['subject']
        minutes = row['minutes']

上は読み込み部分を短くした説明用の抜粋です。配布コードには、列数、日付、重複などの検証も入っています。CSVから取り出した数字は基本的に文字列なので、足し算の前に整数へ変換します。CSVファイルを開く際のnewline=''指定やDictReaderの動作は、Python公式のcsvモジュールの説明で確認できます。

2.入力を確かめてから数値へ変える

空欄のままint()に渡すと、整数にできません。今回のコードは半角数字かどうかと範囲を確かめ、問題がない行だけvalidという一覧へ入れます。日付は書式だけでなく、実際に存在する日かも確認します。

「2026-02-30」は見た目の形式が整っていても存在しません。date.fromisoformat()による変換を使って検出しています。形式と有効な日付の関係は、Python公式のdate.fromisoformatを参照してください。

3.科目が同じ行を集めて足す

検証が終わったvalidの中から同じ科目の時間を取り出し、件数と合計を求めます。配布コードの集計部分は次の形です。

summary = []
for subject in SUBJECTS:
    minutes = [row['minutes'] for row in valid
               if row['subject'] == subject]
    summary.append(dict(
        subject=subject,
        records=len(minutes),
        minutes=sum(minutes)
    ))

英語の番なら、時間の一覧は[30, 25, 35]になります。len()で3件、sum()で90分です。最初はこの一覧を紙に書いて追ってみると、集計の意味をつかみやすくなります。

4.合計と除外理由を別々に書き出す

結果はcsv.DictWriterで書き出します。元のCSVを読む処理と、結果を新しいフォルダーへ保存する処理を分けているので、練習で失敗しても元データからやり直せます。教材の出力はUTF-8のBOM付きです。表計算ソフトで文字が崩れる場合は、開き方と読み込み時の文字コードも確認してください。

集計結果の答え合わせと、エラーの確認方法

英語90分、Python125分、JavaScript90分の合計305分と件数・除外理由の照合
合計305分だけでなく、科目別の内訳、採用8件、除外4件とその理由を照合します。

合計が305分なら終わり、とはせず、次の3点を照合します。別の間違いが打ち消し合って、合計だけが一致する可能性もあるためです。

  1. 科目別の合計:英語90分、Python125分、JavaScript90分か。
  2. 件数:入力12件が、採用8件と除外4件に分かれているか。
  3. 除外理由:日付不正、時間の空欄、負数、ID重複の4件か。

記事制作時には、2026年10月5日にmacOS・Python 3.9.6で実行し、この答えとの一致を確認しました。さらに元CSVの内容が変わらないこと、既存の出力先への上書きを拒むこと、0・1・1440・1441の境界、小数・全角数字、うるう日、列名・列数の誤りを含む9項目を検証しています。Windowsでの実行確認や、大量データでの速度測定は行っていません。

うまく動かないときに見る場所

状況 確認すること
python3やpyが見つからない Pythonが導入されているか、自分の環境で使う起動コマンドは何か
ファイルがないと表示される ターミナルで開いているフォルダーと、CSV・Pythonファイルの場所
出力先が既に存在する result02など、まだ使っていないフォルダー名に変更
列名のエラーになる 先頭行がrecord_id,date,subject,minutesで、順番も同じか
採用件数が少ない rejected.csvのreason列。科目名の違いや入力規則を確認

エラーの文をAIに相談する場合も、まずダミーデータで再現してください。「入力12件、採用8件の想定なのに7件だった。除外理由はこれ」と伝えると、確認すべき箇所を絞れます。業務の実データをそのまま外部サービスへ貼り付ける必要はありません。

次の練習:1行追加して、答えを予測する

サンプルのコピーに、ID「W012」、日付「2026-10-05」、科目「Python」、時間「15」の行を追加してください。実行前に答えを予測します。

正解は、入力13件、採用9件、除外4件、合計320分です。Pythonは4件・140分になります。続いて、その行の科目を「python」の小文字へ変えてみましょう。今回の規則では別の文字列なので除外され、元の305分へ戻ります。大文字小文字を同じものとして扱いたければ、業務ルールと変換処理を追加する必要があります。

このように、1か所だけ変える→先に答えを書く→実行結果と比べると進めると、コードをコピーして終わらずに理解を深められます。別の題材に進むなら、Pythonの練習問題と学習サイトも活用してください。

あわせて読みたい記事

PythonのCSV読み込みで列がずれる原因と直し方
PythonのCSV読み込みで列がずれる原因と直し方
2026-10-05

Pythonの英語エラーの読み方|6種類の原因と直し方
Pythonの英語エラーの読み方|6種類の原因と直し方
2026-10-05

よくある質問

pandasをインストールしなくてもCSV集計はできますか?

今回のような小さな表は、Python標準ライブラリのcsvと繰り返し処理で集計できます。複数の表の結合や複雑な集計を行う段階で、pandasなどを検討しても遅くありません。

このコードを会社のCSVへそのまま使えますか?

列名、文字コード、ID、科目、時間のルールを教材用に固定しているので、そのまま適用できるとは限りません。まず実データのコピーを用意し、正しい集計条件と既知の答えを確認してから変更してください。

自動化で何分短縮できますか?

この教材では時間短縮を測定していません。実務で評価するなら、同じ件数・同じ確認範囲について、準備、実行、除外行の確認、修正を含む時間を比較します。コードの実行時間だけで判断しないようにしましょう。

まとめ:正しい答えを確かめられる自動化にしよう

CSVを読めたら、次は「どの行を数えたのか」「除外した理由は何か」「手計算と一致するか」を確認してください。この3点がそろうと、別のデータに広げるときも、何を変えればよいか考えやすくなります。

プログラミングと英語の学び方を相談したい方へ

KredoではITと英語を学ぶ留学プログラムを案内しています。このPython教材が各コースの授業内容を示すものではありません。自分が学びたい技術や作りたいものに合うかを、相談時に確認してください。

Kredo IT留学の無料カウンセリングを見る

英語でIT・AIを学べるKredo

英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?

当メディアを運営しているKredoは、英語×ITをオンラインで学ぶ「Kredoオンラインキャンプ」と、フィリピンのセブ島で英語とIT・AIを学ぶ「KredoIT留学」「KredoAI留学」を提供しています。これまでの卒業生は3,000名以上。卒業生の多くが、国内外のIT企業への転職、フリーランスなどへのキャリアチェンジを実現しています。これからの時代に必要な英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?

\ セブ島でIT×英語を学ぶ /IT留学の無料カウンセリングを予約する
\ オンラインでIT✕英語を学ぶ / Kredoオンラインキャンプの詳細をみる >>
  • ツイート
  • シェア
  • はてな
  • ポケット
この記事を書いた人
アバター画像
Kredo編集部

Kredo編集部です!プログラミング、英語学習、キャリア、Kredo情報を発信していきます。

関連記事

  • カレンダーとパソコンで日付のずれを考える学習イメージ
    Web・プログラミング(学習)

    JavaScriptの日付が1日ずれる原因と直し方|UTCと日本時間

  • CSVの表データをパソコンと紙で照合する学習イメージ
    Web・プログラミング(学習)

    PythonのCSV読み込みで列がずれる原因と直し方

  • Pythonの英語エラーを調べる学習者のイメージ写真
    Web・プログラミング(学習)

    Pythonの英語エラーの読み方|6種類の原因と直し方

  • JavaScriptで学習記録アプリを作る学習者のイメージ写真
    Web・プログラミング(学習)

    JavaScriptで学習記録アプリを作る|保存・編集の仕組み

新規CTA
KREDO JAPAN株式会社

\ SNSで留学の様子を更新中! /

  • Instagram
  • LINE
  • X
  • YouTube
©KREDO JAPAN Inc. 2024 All rights reserved.
Kredoのサービス
セブ島で学びたい方はこちら KredoIT留学
自宅で学びたい方はこちら Kredo Online 英語×アプリ開発コース
運営会社 会社概要 採用情報 お問い合わせ
利用規約 プライバシーポリシー 特定商品取引に基づく表示 資料請求