跳到主要內容

發表文章

Rust - 以 JSON 為資料來源建立 Polars DataFrame

緣起 在科技的蓬勃發展中,資料處理和分析變得愈發重要。Rust 語言的 Polars 框架為我們提供了一個強大的工具,讓資料操作變得更加容易且高效。這個框架支援以 JSON 格式匯入資料並建立 Dataframe,為我們提供了一個直觀且方便的方式來操作資料。 本文開始 本文的目的,為使用 JSON 為資料來源,在 Rust 中建立 Polars 的 Dataframe。在以下的文章裡,我們將在 Cargo.toml 中,使用如下的設定: [dependencies] polars = { version = "0.36.2", features = ["json"] } 撰文的當下,Polars 的最新版本為 0.36.2。參考 Polars 的 官方文件 ,它提供了以下的程式碼段落,以匯入 JSON 檔案內容: use polars :: prelude :: * ; let mut file = std :: fs :: File :: open ( "docs/data/path.json" ) . unwrap (); let df = JsonReader :: new ( & mut file ) . finish () . unwrap (); 到這裡,就能輕鬆的利用一個 JSON 檔案的內容,建立出 Dataframe 物件。 好了,故事結束,收工。 . . . . . 如果故事真的就這麼簡單,我想也就沒有撰寫這篇文章的必要了。 想想上面程式段落的例子,過程裡需要透過一個存在於檔案系統中的 JSON 檔案為媒介,儲存我們要處理的資料,再透過「JsonReader」讀入的 Dataframe 中處理。如果這些資料是從網路上取得(例如呼叫RESTful API),以字串變數的形式存在於系統之中,例如下面的內容: let msg = r#"[     {"id": 1, "name": "A", "age": 10},     {"id": 2, "name": "B", "age": 20} ]...

Rust - Polars 資料欄位型態轉換,從 str 變 Date

緣起 Polars 是一個以 Rust 語言開發的 「DataFrame」 新興套件,它可以同時在 Rust 及 Python 中使用。Polars 憑藉著 Rust 的執行速度為基礎,讓它在資料處理的領域中, 逐漸流行起來。 但正由於它還在發展初期,目前網路上的參考文章相對較少,中文的內容更是稀有;所以整理了一下這週末的一些研究心得,一來避免自己忘記,二來也在網路上與大家分享,希望慢慢的能讓 Rust 的中文資源可以越來越完整,有朝一日可以在華人世界中流行起來。 本文開始 本週研究的主題是 Polars 裡,對「DataFrame」某個「str」欄位,進行資料型別轉換為「Date」或「Datetime」。資料的轉換可以有多種方式,應該不只限於接下來提到的方法。 建立第一個資料集 為了開始這個操作,我們需要先建立起一個「DataFrame」。 let date = Series :: new ( "trans_date" , & [ "2023-05-01" , "2023-05-02" , "2023-05-03" , "2023-05-04" , "2023-05-05" , ]); let df = DataFrame :: new ( vec ! [ date ]); println ! ( " { } " , df . clone () . collect () ? );   執行後, 可以看到以下的結果:  shape: (5, 1) ┌────────────┐ │ trans_date │ │ ---        │ │ str        │ ╞════════════╡ │ 2023-05-01 │ │ 2023-05-02 │ │ 2023-05-03 │ │ 2023-05-04 │ │ 2023-05-05 │ └────────────┘ 從執行的結果中,我們可以清楚的看到,目前所建立的「DataFrame」,在「trans_date」的欄位中,...

iBus 在 Ubuntu 18.04 上的大易輸入法設定

這麼多年以來,我一直是大易輸入法的使用者,不管到了什麼平台上,我還是習慣這個輸入法的操作方式。 過去在 Linux 上,我一直使用 XCIM/GCIM 做為我的輸入工具,但隨著時間的流逝,這些工具慢慢的與新的 Linux 發行套件產生不相容的狀況,往往都需要做較大的調整與設定才能滿足我的需求。這樣的情況令我感到相當的困擾,同時也不符合經濟效益,甚至曾經想過改學其他的中文輸入法來取代,不過這個方式並沒有成功。 隨著使用的環境更新到了新版的 Ubuntu 18.04 後,系統全面改用 iBus 做為輸入法引擎,找了好多個大易輸入法的安裝方法,始終會面臨到一些問題,例如標點符號沒有辦法輸入等。最後我在 Ubuntu 正體中文討論區中,找到了如下的解決方法: 「 在 Ubuntu 18.04.1 的 IBus 上安裝大易輸入法 」==> 此文說明如何快速在 iBus 中安裝大易輸入法 「 為什麼有些字打不出來 」==> 此文說明如何排除部份文字/符號無法輸入的問題 時間有些久了,裡頭提到的一些欄位已經改名或是調整,但整體的修改方式並沒有什麼太大的改變。按照上頭的方式,目前我可以正常的使用大易輸入法字碼表所定義的標點符號了。

Linux 雙螢幕顯示設定

回頭看了一下 Blog 的更新日期,上一篇發文已經是三年以前。 最近手上剛好有一部新筆電安裝了 Linux 後,想透過 HDMI 界面來連接第二顆螢幕,可是卻怎麼樣也沒有辦法投放到第二顆螢幕上。寫下這篇文章作為紀錄。 我的配備如下: Intel 整合顯示晶片 Nvidia Geforce GTX-1050 顯示晶片 筆電內建 LCD 螢幕 外接 BenQ EL2200 螢幕 HDMI -> VGA 轉換器  透過 xrandr -q 指令來查詢目前的顯示狀況:  畫面中出現我的 HDMI 界面是處於 "disconnected" 的狀態,可是我明明就是把轉換器插在 HDMI 座上呀! 又透過了 nvidia-xconfig --query-gpu-info 查詢,我可以查到我的 Nvidia GPU 已經被驅動,同時連現在螢幕上。 到這裡為止,我查到的資料及問題解法,不外乎是要求安裝 GPU 驅動程式(我已經安裝了,所以可以透過 nvidia-xconfig 查到 GPU 的狀態),或是使用 xrandr 增加顯示模式,然後把訊號投放至螢幕上;但這些都沒有辦法真正解決我的問題,螢幕的指示燈處於無訊號的狀態,螢幕上空蕩蕩的漆黑一片。 因此,我改變思考的方向,將問題的調整為 XWindow 的設定問題,並著手尋找將系統設定為雙螢幕的可能。目前新版的 XWindow 已經可以透過自動偵測的方式完成設定,不需要預先準備 xorg.conf 這個設定檔。但是若要自行對 XWindow 進行配置,那勢必需要產生這個檔案。所幸目前的工具很方便,可以透過一些簡單的參數,產生一個基礎檔案;我們再利用這個檔案為基礎,調整為我們需要的配置。 我使用了以下的指令,完成設定檔的產出: Xorg -configure 這個指令只能在 Console 模式下執行,而且執行時需要把目前執行中的 XWindow 停止;完成後,會在執行者的目錄下,產生一個 xorg.conf.new 的檔案。把這個檔案移動到 /etc/X11/ 目錄下,並改名為 xorg.conf 。 nvidia-xconfig 它會參考剛剛的 xorg.conf ,並把 Nvidia 驅動程式相關的設定填入。需要有 root 權限。 ...

Error "Failed to open a session for the virtual machine..."

自從VirtualBox升級到5.0.0以後,我家裡桌機所安裝的VirtualBox就再也沒有正常啟動過,老是出現開啟工作階段錯誤的訊息,同時帶有如下的資訊: Result Code: E_FAIL (0x80004005) Component: MachineWrap Interface: IMachine {f30138d4-e5ea-4b3a-8858-a059de4c93fd} 經過好長一段時間的測試及了解,透過下面的討論串發現,竟然是防毒軟體造成!! Reference: https://forums.virtualbox.org/viewtopic.php?f=6&t=68869 真是太令人不解了,只好把平常不怎麼用的防毒軟體給移除;然後,祝我好運吧!!

Swatch MusiCall 校正

這幾天把多年前買的Swatch手錶翻了出來整理。坦白講,現在的我實在搞不清楚當初為何會買了這麼多錶?擺了這近二十年,雖然一直保存在不見天日的箱子裡,但很多材質還是老化了,一點都不保值,二手價就更不用說了。 可能是電路特性的關係,Swatch MusiCall錶在沒電了好些年之後,重新上電池會出現指針不準的現象,需要特別校正,才能正常使用。步驟如下: 按下控制鈕五秒,進入測試/校正模式; 拉出控制鈕,往上轉會移動時針,往下轉會移動分針; 把時/分根針都指向十二點鐘; 推回控制鈕重置完成; 重新設定時間。 重置後,手錶就能正常的操作及使用了。

潛水日誌 - 20140823

2014/08/23 #1 累積氣瓶:157 地點 東北角 潛點 93KM 方式 Shore Dive 潮汐 N/A 天候 晴 浪況 N/A 能見度 8M UP 流況 N/A 溫度 29C 水面間隔 00:00 入水時間 07:35 潛水時間 00:41 最大深度 14.5M 平均深度 N/A 入水殘壓 200 BAR 出水殘壓 N/A 濾心使用 N/A 氣源 AIR 沿90度出發,遇沙地後向左約30度可看到第一塊礁石。沿礁石前進,左側幾乎都是沙底。沿路可以發現另兩塊礁。最後一塊礁石的體積較大,高度約4-5M,繞行一圈約需10min左右。沿途遭遇有薯鰻、清潔蝦、機械蝦等。 回程時尋礁石回來,並轉240度回。若右側出現巨型岩石,代表接近右側之九孔池;若左側出現巨型岩石,代表接近左側之九孔池出水點。 同行者:小金、阿廖、萬芳 2014/08/23 #2 累積氣瓶:158 地點 東北角 潛點 93KM 方式 Shore Dive 潮汐 N/A 天候 晴 浪況 N/A 能見度 8M UP 流況 N/A 溫度 30C 水面間隔 01:35 入水時間 09:52 潛水時間 00:51 最大深度 14.1M 平均深度 N/A 入水殘壓 200 BAR 出水殘壓 N/A 濾心使用 N/A 氣源 AIR 嚐試依前述潛航方式回左側(前進方向)九孔池旁水面出水,成功。 同行者:小金、阿廖、萬芳