惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
博客园 - Franky
IT之家
IT之家
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
腾讯CDC
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
博客园_首页
G
Google Developers Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
非本科工程師的踩坑心得:環境數據處理,為什麼跟線上課程教...
阿恩 Arne| Env · 2026-05-11 · via DEV Community

阿恩 Arne| Environmental Enginee

非本科工程師的踩坑心得:環境數據處理,為什麼跟線上課程教的都不一樣?

我是一名環境工程師。因為工作上有很多數據彙整業務,半路出家學了 Python,想把那些重複性的 Excel 作業自動化。

一開始,我嘗試把線上課程學到的 Pandas 技巧,套用到政府公開資料(Open data)跟實驗室的檢測報告上。結果,我卻迎來了嚴重的撞牆期。

我發現,不是我的程式碼寫錯了,而是環境科學領域的數據,根本不符合主流資料科學課程裡那種「完美、隨機、常態分佈」的假設。在反覆踩雷後,我慢慢體悟到:我們在做的其實不是純粹的數據分析,而是「領域知識驅動的數據工程」。

總結這段時間,我在處理環境數據時觀察到的 4 個底層的認知差異:


1. 缺失值(Missing Values)本身就是一種物理資訊

在學資料清理時,遇到缺失值,我直覺的想法就是「補值」(平均值或0)。
但後來我才意識到,在環境檢測中,缺失值往往有明確的物理原因:暴雨導致感測器通訊中斷、溫度過低導致設備失效,或是檢測儀器正在進行定期的標準氣體校正。如果在暴雨期間的空白處,硬是補上前幾個小時的平均雨量或是0,會直接導致後續的評估完全失真。

在環境數據中,缺失的原因本身就是關鍵資訊,不能隨便亂補。


2. 異常值(Outliers)不是雜訊,是評估與工程的核心

颱風侵襲期間風速、降水量與空氣品質狀況

環境數據的異常值可能是極端天氣(颱風)、工廠突發性排放超標,或是土地使用改變。如圖,若單看PM2.5變化可能會認為10/3空氣品質良好,比對風速、降水量及中央氣象署的資料可以發現當時有颱風侵襲,才導致PM2.5偏低;若把PM2.5數值極低或甚至出現未檢出的數據與風速、降水量的峰值刪除或用平均值取代,會使分析結果失真。

在環境影響評估中,背景調查中的最大值往往代表著該區域對污染的「涵容能力」,或是判定開發強度的容許閾值;同時,在環境品質數據的呈現也對於「數據是否具代表性」格外重視。而在環境工程設計的角度,極端值代表的是工程設計或設備的邊界條件。

若把這些極端值當成雜訊洗掉,等於洗掉了真實的環境風險。


3. 時間序列的非平穩性與地球科學週期

環境數據的時間序列具有強烈的地球科學週期性,氣溫、水質、空氣品質不僅受一年四季影響,還有日夜週期,甚至受季風與豐枯水期的干擾。這使得我一開始嘗試套用一般商業預測的時間序列模型時,跑出來的結果簡直慘不忍睹。處理這類數據,如果不把環境的週期特性作為特徵放進去,根本無法建立有意義的關聯。


4. 左側設限資料(Left-censored Data):化學分析的型別地獄

這是我在寫 script 時最頭痛的環節。當你在資料庫看到 <0.05,它不是缺失值,更不能單純當成字串處理。

標記 全名 物理意義
ND Not Detected 未檢出,但不代表濃度是 0。
MDL Method Detection Limit 儀器能可靠量測的最低極限。真實值存在,但小於這個數字。

Excel 會把 <0.05 當成字串而忽略。我一開始為了讓 Matplotlib 順利畫出折線圖,甚至寫過直接把它們轉成 0 或刪除的粗暴程式碼。後來才知道,這會嚴重破壞污染物的真實統計分佈,必須依據具體的環境場景進行合理轉換(例如替換為 1/2 MDL)。


寫在最後的請益

我們做這些數據處理,最終的輸出通常需要提送機關審查,方法必須有科學根據、符合法規,且能被稽核追溯。目前我正在嘗試把這些領域知識邏輯封裝成自動化的 python 清理模組。

如果你是熟悉資料工程的前輩,對於這類數據的架構設計有任何建議,非常歡迎留言交流!