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ファイルに保存します。
🐍 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` を指定するのがおすすめです。
⚠️ よくあるエラーと対処方法
初心者が最初に躓きやすいのが、ライブラリの導入や文字コードの違いによるエラーです。
ここでは代表的な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')
🖥️ 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画面(ファイル選択ボタンと説明ラベル)
ファイル選択と抽出後のファイル保存先
ファイル選択画面
抽出後ファイルの保存先選択画面データ抽出後のCSVファイル
💡 応用例:抽出機能を使ってこんなこともできる!
単純な温度抽出以外にも、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ファイルを下記からダウンロードできます。
条件を変えて試してみることで、データ分析の感覚をつかめます。

