前一陣子跑去看 「國有器官」 認識 雄獅影視的管弄雲先生。 我主動建議幫他製作, 並且已經完成了: 「國有器官」放映地圖。 他們忙著更重要的事, 當然不可能請他們自己學會用 umap。 要讓他們能夠自己維護後續的新資料, 最簡單的方法就是: 我建一張 國有器官播放紀錄試算表 分享給他們, 然後我用程式把試算表的資料拉過去地圖上。 原本以為先前的 「共筆維護試算表、地圖自動更新」 可以直接拿來用, 後來才發現試算表太大 (大約超過 100 列?) 時會失敗。
2025年7月25日 星期五
2025年3月11日 星期二
共筆維護試算表、地圖自動更新 - 小尺寸版
想像一個團隊, 每位成員分頭去收集一些 (不涉及隱私或機密、 可以公開的) 地址, 要放到一張共同的地圖上面。 除了地址之外, 還有一些需要經常更動的欄位, 例如各地點的開放時間、 注意事項、 臨時公告等等。 什麼樣的工作流程會比較有效率呢? 我會開一張共筆的試算表, 例如 ethercalc 或是 google sheet, 裡面含有名稱、地址、經緯度、備註以及其他文字資訊等等欄位, 並且分享給所有成員, 然後把這張試算表餵給 umap 吃。 於是每當任何成員修改 [地址經緯度以外的] 其他任何欄位, 地圖瀏覽者只要重新整理網頁, 就會看到最新最及時的資訊。 至於經緯度, 可以透過 TGOS 手動批次更新。 編輯 google 試算表的門檻比編輯地圖低很多, 這樣的安排便於讓任何人都可以參與。
如果你的試算表較大 (超過100列?), 本篇可能不適用。 請跳到第三節見新版連結。
2025年1月10日 星期五
把所有帳號的信件都接收到自己的伺服器上 (三): 從 zimbra 匯出 csv 格式的通訊錄; 匯入 neomutt 與 posteo
延續 mbsync + neomutt + msmtp 這一篇, 接下來我想把 zimbra (使用多年下來系統自動建立) 的 「姓名 email」 通訊錄搬到 neomutt 跟 posteo。 先講心得: 過程當中用 csv 檔比較方便處理; 處理 vcf 檔的工具太少了。 反正最後要轉 vcf 很簡單。
2024年5月29日 星期三
tesseract 之數字表格圖片轉試算表 (最簡單的 OCR 應用)
老婆:「快點啦! 報稅軟體都幫你下載好了,快來算啦!」
好吧, 就用她的 windows 電腦一路 「下一步」 快速通關。
謝謝財政部。 可是身為很多家公司的小股東的她,
還想要把所有股利收入逐筆放入試算表。
問題是: 下載的 pdf 是圖檔, 讀不出文字!
幹嘛啊, 這又沒有保護作用, 只是增加納稅人的麻煩而已, 真沒意思。
沒關係, 那就把 pdf 檔搬到我的電腦, 用 OCR
(optical character recognition) 工具來讀吧。
2023年4月29日 星期六
試算表的 unpivoting/melting
有些試算表它的許多欄位恰好構成資料空間的某種分割, 例如12個月份、 各類交通工具、 4種血型、 全國22個縣市... 等等。 有時候我們會希望把這 N 個欄位合併成兩個欄位, 一個欄位紀錄原表格中的欄位名稱, 另一個欄位紀錄原表格的內容, 從而產生一個 「比較瘦、 N倍高」 的新表格。 這個轉換動作稱為 unpivoting 或 melting。 這篇文章 的圖很清楚, 大推! 也可以參考 用 google 試算表做 unpivoting 的中文教學。
2023年4月28日 星期五
「電力能源來源分類」資料整理與驗證
右圖是我看著 electricity-mix.csv
(製作過程)
整理出來的 「電力能源來源分類」 猜測。
這種樹狀的階層式結構 (hierarchy) 感覺很好拿來畫 treemap 之類的圖形。 (另文詳)
為了驗證這些猜測:
2023年4月24日 星期一
幫 OWID 資料加上三字元 iso 國碼及所在大陸
上 「資料視覺化」 課程的時候, 想要拿 electricity mix 這個資料集做例子。 發現裡面混雜著個別的國家、 聯盟 (G20、 OECD) 跟大陸 (歐/亞/非/..), 很難整理。 另一方面我也希望標示每個國家所在的大陸, 但是原始資料集裡面並沒有這項資訊。 於是我找到 List of Countries by Continent 這個表格, 並且 在 owid dataset 發問 之後修改了我的小程式 country-encode.py, 以後要整理 OWID 的資料就方便多了。
2021年12月5日 星期日
清點密碼貨幣資產
最近迷上密碼貨幣, 爬了好多文, 心得不知從何寫起。 (為什麼不應該叫做「加密貨幣」? 因為它只用到 非對稱式加解密 的 「數位簽章」 那一半, 並沒有用到它的 「加解密」 那一半。) 今天先分享一篇最單純的心得: 如何清點你的密碼貨幣資產? 我在好幾個交易所開了帳戶, 也買了好幾種密碼貨幣。 買到後來到底賺錢還賠錢連自己都頭昏搞不清楚了。 (昨天的瘋狂爆跌過後, 現在當然很明顯是賠錢的。 真希望我是今天才開始買的...) 所以建了 這個Google試算表。 大家可以拷貝回去修改成自己的版本。 裡面的數值當然只是示意, 並非我真實的投資金額, 不過確實大略反應我的資產配置重點。
2020年3月14日 星期六
被 genfromtxt 打敗
先前寫 python 程式時, 一直都用 自己手工打造的 csv 讀檔副程式; 但基於 「站在巨人肩膀上」 的理念, 仍舊希望改用別人寫好的現成函式庫。 剔除 速度超慢且有點難用的 pandas 之後, 發現 numpy 的 genfromtxt 貌似很好用。 (比 loadtxt 有更多彈性。) 結果在一個奇怪的 bug 卡好久 :-(
2020年2月1日 星期六
scatplot: 一張試算表, 散點圖畫到飽
大選過後, 一直想畫 「X黨 vs Y黨在各縣市得票比例對照圖」。
過年時節在家躲疫情, 終於有時間完成了一個小專案放到 github 上:
scatplot 。
也請參考舊文
「三種方式產生 scatter plot / bubble chart」。
不只是程式宅, 我相信政黨智囊團、 財報型股民、 社會科學家、 自然科學家..
任何需要以視覺化方式理解數值資料的朋友們也會喜歡這幾個 demo 網頁:
LLM 比較表、
全球各國電價比較表、
揪出手機上的腫脹軟體、
太陽系天然衛星軌道常數、
股票財報指標圖、
陳時中團隊的 covid 19 防疫成績、
資料視覺化破解源自黃珊珊的假消息、
新聞頻道轉台運動、
2018 兩政黨各縣市得票比例對照圖、
[2022/12 後續有再補充與更新較新的圖片與文章連結]。
2020年1月20日 星期一
xls 或 xlsx 批次轉成 csv
看到
非典型大選分析 的漂亮地圖版大選資料視覺化, 我也手癢了。
到 中選會資料庫
的歷屆公職選舉資料, 找到
2020-第 10 屆 立法委員選舉, 下載了
「各投票所得票明細及概況」, 用
unzip -O cp950 檔名.zip
解壓縮。
下一個問題是: 要怎麼把一堆 xls 檔轉成 csv 檔?
對, 可以用 libreoffice 一個一個打開、 另存新檔。
可是我希望可以用指令批次處理啊~
2019年8月19日 星期一
網頁表格轉 csv, 瀏覽器 inspector 手動剪貼版
玩資料視覺化, 經常需要從網頁上下載表格, 再轉成 csv。
以前就曾搜尋到
sebsauvage.net 上面的 html2csv.py,
後來忘記了; 最近又重新發現一次。
很簡單: python2 html2csv.py abc.html
它會把 abc.html
裡面的所有表格串在一起, 產生一個 abc.csv 。
如果有合併列或合併欄等等比較複雜的狀況, 還是需要後續處理,
但至少比自己寫 regexp 簡單多了。 全文完。
喂~ 這樣就結束? 這篇未免太 ㄌㄢˋ ㄩˊ ㄔㄨㄥ ㄕㄨˋ 了吧!
[現在有同音異字的成語太多了, 我都不知道國字該怎麼寫才對...]
至少應該要交代一下如何取得 html 啊。 如果是大量的靜態網頁,
可以用 wget 或 lynx -dump 或 curl 取得。
有可能需要
設定 user agent 才不會被網站拒絕。
如果是 javascript 所動態產生的、 上述指令無法取得的網頁呢?
如果頁面數量很多, 那就考慮用
puppeteer。 如果只是單一或少數的 [js 動態產生的] 頁面,
那就手動另存新檔就好。
可是有一些 js 頁面需要你點幾個地方之後, 才會動態填值進表格。
這時 firefox 的 console 就很好用了 --
即使不是 js 程式設計師也值得學一下。
2019年6月27日 星期四
文字檔控用 SQL 語法肉博 csv
2018年12月11日 星期二
拿公投統計資料學 pandas
2018年11月26日 星期一
DataTables 的固定表頭、 排名、 置中
先前寫的小程式 jesp 可以拿來把好幾個 csv 檔 join 在一起, 並且方便按照任何欄位排序。 其中表格資料好用的互動排序功能, 靠的就是 jQuery 的 DataTables 外掛。 兩年多前曾在 「jQuery 無痛讀檔」 裡初次使用; 現在重學一次, 並且選用幾個好用的效果。
2018年8月30日 星期四
用 lynx 加 perl 的 csv 句型從網頁裡的表格產生試算表
如果說
三大 regexp 句型 是 「懶得學 perl 程式語言的系統管理員必學的三句 perl」,
那麼今天要介紹的就是第四重要的 perl 句型:
perl -F, -nale 'print join(", ", @F[2,5,6])'
姑且就稱它為 perl 的 csv 句型吧。
它跟文字瀏覽器 lynx 合作, 可以把網頁的表格抓下來變成試算表。
當你不想為了一點小事開啟 calc 時, 就用它們來馴服 .csv 檔吧。
2018年8月28日 星期二
科普貴教你天天自助 calc 便宜股撈明牌
這篇其實是 LibreOffice Calc 的 「連結外部 csv 檔」 教學, 只是拿台股來作例子比較有實用感、 可以提高大家的學習動機 :-) 不需要唸資訊科系、 不需要寫程式, 只需要一部 linux 電腦, 並且略熟試算表函數, 例如 vlookup 及 iferror 等等即可操作。
[不怕偶爾需要自己除錯 php/js 的程式設計師可以安裝 (我寫的網頁版程式) scatplot: 一張試算表, 散點圖畫到飽 ]
2017年7月12日 星期三
跟同學交換 ethercalc 容器, 馬上理解 docker 的 volume、 port、 link
2017年1月30日 星期一
從試算表產生柱柱圖(三次元長條圖)
有沒有冬天越來越不冬天的八卦? 可是川普王說全球暖化是騙人的耶...
那就趁 NASA 的資料還沒被下架之前趕快到 NASA 的
地表溫度歷史記錄 去下載資料回來分析吧。
如果把北半球地表及海面上所有觀測站的溫度按月平均,
再減去某段很長時間 (例如 1951-1980) 同一月份的歷史均溫,
就可以看出溫度異常 (anomaly) 現象有沒有越來越嚴重了。
本文其實是要介紹我寫的 colchart 裡面的兩隻小程式。 假設你有一個數字二維陣列 (例如從試算表匯出的 *.csv 檔, 或是 1987 到 2016 北半球每月平均溫度異常表, 點 raw 下載)。 用 mat2list.pl 可以把它轉成 gnuplot 認得的資料格式, 再用 pt2sq.pl 可以把每一筆資料轉成四筆, 然後就可以畫出 3D 版的長條圖 -- 稱為 column chart。 可能是因為部分的資訊會被遮住, 所以這種圖表不太流行。 但是在 gnuplot 裡面, 畫好 3D 圖後還可以拉著柱柱們旋轉, 從各個方向觀賞, 死角比較少, 很適合在會議簡報上製造物美價廉的視覺效果。
2017年1月20日 星期五
使用試算表內的陣列函數來製作分組次數分配表
假設你手邊有某個班級 20 位同學總共 8 次小考/作業/實作成績,
你想要製作
次數分配 (Frequency Distribution) 圖表。
本文先只處理表格的部分; 另文再談製圖。
最近為了這個需求, 第一次學會在試算表 (libreoffice 或
openoffice 的 calc, 或是 excel 也適用) 裡面使用
陣列函數 (array function)。