プログラミング学習

【初心者向け】PythonでCSVデータを抽出・保存する方法|pandas活用&GUI付き実践解説

記事内に商品プロモーションを含む場合があります

PythonでCSVファイルから特定条件のデータを抽出したいと思ったことはありませんか?

この記事では、例として「温度が23℃以上のデータを抽出して別のCSVに保存する方法」を、初心者にもわかりやすく解説します。

さらに、GUIアプリ化して誰でも簡単に操作できる方法や、文字化けやエラーの対処法も紹介します。
最後に、業務や趣味で活用できる応用例まで紹介します。

✅ 前提と目的

まず、今回のサンプルCSVファイルには以下のようなデータが入っていると仮定します。

日付,時間,温度(℃),湿度(%)
2025-09-24,10:00,22.5,60
2025-09-24,11:00,23.1,58
2025-09-24,12:00,24.0,55

この中から「温度が23℃以上」の行だけを抽出して、新しいCSVファイルに保存します。

▶ サンプルCSVファイルのダウンロードはこちら

🐍 pandasを使った基本スクリプト

Pythonでは、データ処理に強いライブラリ「pandas」を使うと、条件抽出が驚くほど簡単にできます。
以下のコードは最小構成のサンプルです。

import pandas as pd

df = pd.read_csv('data.csv', encoding='utf-8')
filtered_df = df[df['温度(℃)'] >= 23]
filtered_df.to_csv('filtered_temperature.csv', index=False, encoding='utf-8-sig')

print("抽出結果を 'filtered_temperature.csv' に保存しました。")

このスクリプトを実行すると、23℃以上のデータのみが「filtered_temperature.csv」に保存されます。

Excelで開いたときに文字化けしないように、保存時は `utf-8-sig` を指定するのがおすすめです。

PythonでCSVをフィルタリング

⚠️ よくあるエラーと対処方法

初心者が最初に躓きやすいのが、ライブラリの導入や文字コードの違いによるエラーです。
ここでは代表的な2つの例を紹介します。

エラー①:pandasがインストールされていない

ModuleNotFoundError: No module named 'pandas'

【対処法】
コマンドプロンプト(ターミナル)からpandasをインストールします。

pip install pandas

エラー②:文字コードエラー

'utf-8' codec can't decode byte 0x93...

原因: CSVファイルがUTF-8以外(Shift_JISなど)で保存されている場合。

対処法①: Excelで開き、「CSV UTF-8(コンマ区切り)」で保存しなおす。
対処法②: 読み込み時に文字コードを指定する。

df = pd.read_csv('data.csv', encoding='cp932')
Pythonの文字化けエラー例

🖥️ GUIアプリで抽出処理を簡単に!

コマンド操作が苦手な方でも簡単に使えるように、GUI(グラフィカルユーザーインターフェース)で動作するツールを作成してみましょう。
以下のコードを実行すると、ボタン操作だけでCSV選択・抽出・保存が可能になります。

import pandas as pd
import tkinter as tk
from tkinter import filedialog, messagebox

def select_file():
    filepath = filedialog.askopenfilename(filetypes=[("CSV files", "*.csv")])
    if filepath:
        try:
            df = pd.read_csv(filepath, encoding='utf-8')
            filtered_df = df[df['温度(℃)'] >= 23]
            save_path = filedialog.asksaveasfilename(defaultextension=".csv", filetypes=[("CSV files", "*.csv")])
            if save_path:
                filtered_df.to_csv(save_path, index=False, encoding='utf-8-sig')
                messagebox.showinfo("完了", "抽出結果を保存しました!")
        except Exception as e:
            messagebox.showerror("エラー", f"処理中にエラーが発生しました:\n{e}")

root = tk.Tk()
root.title("CSV温度抽出ツール")

label = tk.Label(root, text="CSVファイルを選択して、温度が23℃以上のデータを抽出します")
label.pack(pady=10)

button = tk.Button(root, text="CSVファイルを選択", command=select_file)
button.pack(pady=10)

root.mainloop()

GUI画面(ファイル選択ボタンと説明ラベル)

Python Tkinter GUI画面

ファイル選択と抽出後のファイル保存先

ファイル選択画面ファイル選択画面
保存先指定画面抽出後ファイルの保存先選択画面

データ抽出後のCSVファイル

抽出後CSVサンプル
【筆者のひとこと】
実際にTkinterでGUIツールを作ってみると、「思ったより簡単!」と感じる方が多いです。
社内の非エンジニアにも使ってもらいたい場合、こうしたGUI化は非常に有効です。

💡 応用例:抽出機能を使ってこんなこともできる!

単純な温度抽出以外にも、pandasを使えば多彩な条件でデータ分析や整理ができます。

  • 湿度が60%以上のデータだけ抽出:
    df[df['湿度(%)'] >= 60]
  • 特定の日付のデータだけ抽出:
    df[df['日付'] == '2025-09-24']
  • 複数条件で抽出(例:温度が23℃以上かつ湿度が50%以下):
    df[(df['温度(℃)'] >= 23) & (df['湿度(%)'] <= 50)]
  • 時間帯で抽出(例:午前中のデータ):
    df[df['時間'].str.startswith(('08','09','10','11'))]
  • 複数CSVを結合して一括抽出:
    pd.concat([pd.read_csv(f) for f in file_list])

【📈 活用例】
温度や湿度の管理、IoTデータの整理、センサーの異常値検知、品質管理など、業務シーンにも応用可能です。
個人でも「室温ロガー」や「植物の栽培データ」などに応用して楽しむことができます。

✨ まとめ

  • PythonとpandasでCSVの条件抽出はシンプルに実装できる
  • GUI化すれば誰でも操作できるツールに進化
  • 文字コードエラーはutf-8-sig指定で回避できる
  • 抽出条件を変えるだけで幅広い分析や業務改善が可能

PythonのスクリプトをGUI化することで、チーム全体の業務効率を大幅に向上させることも可能です。
ぜひこの記事のサンプルを参考に、自分だけの「CSV抽出ツール」を作ってみてください。

📂 サンプルCSVファイル配布

今回使用した温湿度データのCSVファイルを下記からダウンロードできます。
条件を変えて試してみることで、データ分析の感覚をつかめます。

▶ サンプルCSVファイルのダウンロードはこちら

AIブロガー
筆者:yuki
Python未経験からAIと対話しながらコード作成。副業×自動化×プログラミングの可能性を模索中。 ▷詳細プロフィールはこちら
RELATED POST