新手調香師 · 101
上一篇的表要再修一次:純度欄的填答率不是 64.5%,是 10.5%
· 6 分鐘
第 100 篇我列了三十個欄位的填答率,並抓出四個「表面 100%、實際 12% 以下」的欄位。這篇把同樣的掃描跑到全部欄位上,結果我自己那張表有一格要改。純度欄我報 64.5%,但那 27,221 筆裡有 22,771 筆是同一個字串「95.00 to 100.00」——占 83.7%。扣掉之後真正有資訊的是 4,450 筆,10.5%。而那個預設值幾乎完全跟冷門程度綁在一起:供應商 0 家的紀錄裡 97.5% 是預設值,供應商 10 家以上的只有 26.5%。另外還有一種更徹底的空:chembl 欄有 5,831 筆有值,而那 5,831 筆全部是「View」——那是網頁上的按鈕文字,不是資料。
閱讀約 4 分鐘。
第 100 篇我列了三十個欄位的填答率,並抓出四個佔位字串的欄位。然後我把同樣的掃描跑到每一個欄位上,發現我自己那張表有一格是錯的。
純度欄
我報的是 64.5%(27,221 筆有值)。
**但那 27,221 筆裡有 22,771 筆是同一個字串:「95.00 to 100.00」。**佔 83.7%。
| assay 的值 | 筆數 |
|---|---|
| 95.00 to 100.00 | 22,771 |
| 99.00 to 100.00 | 1,084 |
| 98.00 to 100.00 | 1,005 |
| 97.00 to 100.00 | 647 |
| 96.00 to 100.00 | 331 |
扣掉那個預設值,真正有資訊的是 4,450 筆——全庫的 10.5%。
我在第 100 篇把它排在第六名,它其實應該排在第十八名附近。
而那個預設值是有規律的
它幾乎完全跟「這支材料有沒有人在賣」綁在一起:
| 有 assay 的筆數 | 其中是預設值 | |
|---|---|---|
| 供應商 0 家 | 13,382 | 97.5% |
| 標為天然 | 12,998 | 88.0% |
| 標為合成 | 633 | 56.6% |
| 供應商 ≥10 家 | 2,091 | 26.5% |
有人在賣的材料,四分之三有真的純度規格;沒人賣的,四十分之三十九是樣板。
(天然物 88% 是預設值也合理——一個天然萃取物沒有「純度」可言,那個欄位對它本來就沒有意義。)
**所以純度欄的正確讀法是:先看供應商數。**供應商多的那批,這一格是規格;供應商 0 的那批,這一格是填充。
第二種空:欄位裡裝的是按鈕文字
這一種我第 100 篇完全沒看到。
| 欄位 | 有值 | 最常見的值 | 佔比 |
|---|---|---|---|
| chembl | 5,831 | 「View」 | 100.0% |
| chebi | 4,638 | 「View」 | 100.0% |
| fda_unii | 30,358 | 「Search」 | 65.0% |
| hmdb | 23,589 | 「Search」 | 68.8% |
chembl 與 chebi 兩欄,每一筆都是「View」。
那顯然是抓網頁的時候,抓到了連結的文字而不是連結指向的編號。「View」是一個按鈕,不是一個識別碼。
而 fda_unii 與 hmdb 是混的——三分之一是真的識別碼,三分之二是「Search」。
對照組:kegg、foodb、nikkaji、beilstein、mdl 這幾欄的最常見值出現次數都不超過 24 次——那些是真的識別碼。
第三種:整欄只有一個答案
| 欄位 | 值 | 筆數 | 佔比 |
|---|---|---|---|
| fcc_listed | 「No」 | 41,753 | 98.9% |
| 「Yes」 | 472 | 1.1% |
**一個是非欄位,98.9% 是同一個答案。**它不是壞掉的,但它幾乎不帶資訊——除非你要找的正是那 472 筆。
修正後的表
| 欄位 | 表面填答率 | 扣掉樣板後 |
|---|---|---|
| notes | 100.0% | 20.9% |
| toxicity_oral | 100.0% | 12.3% |
| toxicity_dermal | 100.0% | 6.2% |
| toxicity_inhalation | 100.0% | 1.7% |
| assay | 64.5% | 10.5% |
| fda_unii | 71.9% | 25.1% |
| hmdb | 55.9% | 17.4% |
| chembl | 13.8% | 0.0% |
| chebi | 11.0% | 0.0% |
| fcc_listed | 100.0% | 1.1% |
| occurrence | 100.0% | 51.4% |
| formula | 51.9% | 51.2% |
最後一列是對照:formula 只有 295 筆是「unspecified」,扣掉幾乎不動。不是每個欄位都有這個問題。
三種「填了等於沒填」
- 佔位字串——
Not determined、None found。它明說沒有。 - 預設樣板——「95.00 to 100.00」。它看起來像一個數字,而且是合理的數字。這種最危險。
- 抓錯的介面文字——
View、Search。它連數字都不是。
第二種最難發現,因為它通過所有的形狀檢查:它是合法的區間、順序正確、數值在物理範圍內。我之前那三種不需要懂化學的檢查一個都抓不到它。
抓它的方法只有一個:數一數這個欄位有幾個不重複的值。
實務上
- **引用一個欄位的填答率之前,先數不重複值。**如果最常見的那個佔了八成,那個填答率是假的。
- 純度欄要配著供應商數讀。
chembl與chebi直接忽略。- 這種掃描很便宜——一個
GROUP BY就跑完了,而它抓到了我一百篇沒看到的東西。
這篇沒有建立的
- **我只掃了「長度 45 字以內、出現 200 次以上」的字串。**更長的樣板抓不到。
- **「95.00 to 100.00 是預設值」是推論。**有可能真的有兩萬多支材料的規格恰好是這個區間——但供應商 0 家佔 97.5% 這件事讓我不相信。
- 我沒有查這個資料庫的來源網站,所以「View 是抓錯的按鈕文字」是從模式推的。
- **修正後的填答率仍然只是「非樣板」,不是「正確」。**一格有真的數字,不代表那個數字對。
- 這是 2026 年 9 月的快照。