2018年2月26日 星期一

2018.2.26 Pandas.DataFrame之入門九道題目--處理從html讀取的表格


2018.2.26 Pandas.DataFrame之入門九道題目

處理從html讀取的表格


JN想標題很久,想不對甚麼會很貼切,於是勉強這樣下。

關於Python的Pandas教學,從Google搜尋就能找到許多中國的解說。不過每次JN想要做的處理,就要再次尋找相關教學,因為分散在各地,實在很麻煩又不容易學習。而且內容詳盡的教學網站都類似教科書一樣死板呈現,然而想學的地方就只是千段中的一段文字,並不能很有效就挖掘出來。JN僅推薦從「pandas 0.22.0 documentation」去尋找如何做你想要的操作。

這篇文章是以網路爬蟲的會用到「Pandas.DataFrame」的一些處理為編寫依據,也是從實戰中有做的處理。JN相信,只要能完成這九道題目,就能整理大多數從網頁讀取的表格。歡迎分享解題過程在下方留言,而JN有天也會補上自己的寫法(可能吧)。



2018年2月9日 星期五

2018.2.9 Excel物品清單原型,掌握所有物品蹤跡

2018.2.9 Excel物品清單原型,掌握所有物品蹤跡

JN最近幾天突然有感而發,腦海不時浮現一種物品清單。這物品清單要能詳盡列出物品以及其所在位置(收納位置),還有各個收納位置裡面會有甚麼物品。物品跟收納位置是雙向箭頭關係,不論從哪一個開頭,最後都能到另外一端,白話來說,從收納位置可以找到有甚麼物品在裡面,而從物品列表也可以找到是在甚麼收納位置。

這份清單的最大優點:任何人只需要搜尋這份清單,就能夠準確找到物品。(前提是做好清點)

在辦公室人來來去去,未必每一個人都清楚辦公室裡面到底有甚麼東西,以及東西在哪裡。有些時候以為沒有的東西,買了新的,才發現其實藏在小角落。或是新來的人對於想要找A4紙補充印表機,卻不知道A4紙放哪裡。最後就是有空間塞甚麼就塞,沒有做好分類,以至於各種類型的物品混雜在一塊,每次要找特定物品時,各種翻箱倒櫃好像要掀開整個辦公室,實在很傷神費工。

年關將近,這時候也是大掃除的時候。趁這時候完成物品清點並且照著填上物品清單,就能享受控管各種物品的狀況。

這份JN自製的範本,用到了函數MATCH、INDEX以及巨集。平面圖與3D圖使用到「Sweet Home 3D」繪製。

範例Excel(dropbox)※轉載須註明出處

2018年2月4日 星期日

2018.2.4 藝人教育女兒--到底有甚麼問題?JN觀點

2018.2.4 藝人教育女兒--到底有甚麼問題?JN觀點


JN在ptt上看到這篇時,真的蠻心寒的。以前小的時候覺得大人都是對的,但等到長大後才發現其實很多大人有一大堆毛病。小孩子沒有對的榜樣、對的觀念與對的教育,以至於年紀變大後而引發一大堆社會問題,但是真正可悲的是,我們多數人以歧視而不是正視那些人與背後的原因。層出不窮的社會問題,也只是合理地呈現我們怎麼樣的教育。

簡單敘述一下是甚麼樣的文章:藝人體會到父親是威嚴的角色,並指出不能總是順從女兒的意,最後當面把女兒的玩具撕毀。後續回覆在我寫這篇文章時藝人也貼了,所以我也看了。後續回覆交待了此事前因後果,就沒有前一篇文章看起來十分不妥,但其中JN也是認為大有問題。關於該藝人相關此事的新聞,JN也有找到了,如果正如新聞所說的話,該藝人的教育才真的該好好修理。

有人會認為,別人家的家務事不要插手,意思就是不要當一回事。JN沒有能力跟理由去插手別的家務事,但是想給予評論。因為這種教育觀念可不是個案,你我周圍存在著相當多數這樣認為的人。沒有人應該很自然就知道要如何適當地管教小孩,所以做得不好能夠理解,但是千萬別失去學習的能力,學習如何在小孩前做好父母能做的事,父母對小孩沒有無限上綱的權力。

該藝人的FB貼文連結、後續回覆,以及蘋果新聞。
貼文 、 後續回覆 、 相關的蘋果新聞


2018.2.3 Idle遊戲與Excel,找到最小值項目的其他資訊

2018.2.3 Idle遊戲與Excel,找到最小值項目的其他資訊

Idle遊戲是一種讓時間去玩的遊戲。購買生產單位去生產金錢,然後再購買單位,越賺越多,享受投資所帶來的成就(?)。不過單位的價錢會隨著擁有數量越來越貴,產生邊際效應遞減。到底要如何投資才能最快速的累積財富?不僅是玩Idle遊戲的要思考的,也是生活中要思考的。是現實的話就會很複雜,但遊戲就相對簡單多了。JN常常思考怎麼樣才是最好的理財方式,真的沒有甚麼頭緒,於是從Idle遊戲分析起,也許簡單的分析會想到更棒的點子。

分析Idle遊戲很容易,用Excel就能把生產力、價格等各種數據,換算出最關心的數據:生產力單位價格。生產力單位價格,指一個生產力要用多少錢買,所以這個數值越低越好。把錢拿去買生產力單位價格最低的單位,很直觀地就是最划算的投資,但真的是如此嗎?

本次Excel分析時,JN要找出範圍中最小值的項目,發現函數只能找到範圍中的最小值,無法呈現同列的其他項目,此外,弄成表格找最小值需要排列,每次手動既麻煩且項目位置又會跑掉。經過一番嘗試,JN用了三種函數:1.SMALL、2.MATCH、3.INDEX,實現了呈現最小值同一列的項目。看了MSoffice教學第一時間不太明白,於是JN寫了一個以分析Idle遊戲的範例。有個範例應該會好懂許多。

範例EXCEL(dropbox) ※轉載須註明出處

分析結論:如何最快速賺到大錢?先選生產力單位價格最低的,但若有回本時間少於前項之購買秒數,就更優先買。


2018年2月1日 星期四

2018.2.1 標記為濫用,心得紀錄(純感想與流程)

2018.2.1 標記為濫用,心得紀錄(純感想與流程)


這是一件不太容易遇到的事情:「標記為濫用」。在別人家的大本營做不好的事情,又用別人家的搜尋引擎搜尋如何處理,又在別人家的部落格發這篇心得,也算久違之後難得有動力寫篇文章。

前情提要:JN編修了程式,這個程式是個報名系統。之前的報名系統,使用者有提及一個狀況:在尖峰時段,有部分人會遺漏掉回信或缺少資料。這個情況算是很常見的問題,當圖時有大量報名者送出,而大量回覆平行運算寫入,以至於同時讀寫到同一行(正常情況下是新送出的回覆會到新的最後一行),而最後只留下最新的一筆。

要解決這個問題,就要延遲寫入,避開多數回覆同時執行寫入。就JN所知,在有「佇列 queue」或「鎖 lock」兩種方式能處理這問題。然而沒有找到佇列指令,但是有發現鎖指令。於是在程式碼中加了鎖,就能達到非同步讀取。因為只有得到鎖的線程才能讀取,其他沒有鎖的就會等待直到拿到鎖。

然而,為了測試大量回覆送出是否會出現異常,JN一共用了五十筆送出,每個送出都上傳3MB大小的檔案。這次測試之後,就發現報名系統其實就是平行運算的問題。關鍵字就是「回覆缺失、大量短時間內」。之後JN把「鎖」寫進程式內,再以三十筆回覆測試之。
(JN所參考的寫法)

這次的結果,回覆都有被寫入資料表裡而沒有任何缺失,只是收到的順序不一定是照送出的順序。大功告成。就不再需要測試這種大量送出的狀況。

卻也釀成帳號「標記為濫用」。