隨著互聯網的快速發(fā)展,大數據時代的到來,數據資源的處理成了各行各業(yè)都面臨的熱點問題。除了通過特別專業(yè)、特別特別昂貴、特別特別特別復雜的分析平臺來處理特別 x4 海量的數據外,我們還常常會遇到 Excel(xls,xlsx)文件這樣手邊能夠即時獲得的數據文件。使用 Excel 記錄、處理和交換數據,是因為這個軟件的簡單方便,而如果又需要通過一堆外部調用來進行后續(xù)的分析處理,那就會顯得十分笨拙?,F在我們就來分享一下如果通過輕量級地使用集算器來分析處理 Excel 形式的數據來源。
在簡陽等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都做網站、成都網站制作 網站設計制作定制設計,公司網站建設,企業(yè)網站建設,品牌網站建設,成都全網營銷,外貿網站建設,簡陽網站建設費用合理。
最近,中美貿易戰(zhàn)愈演愈烈,我們也來蹭一下熱度,用一些公開獲得的中美兩國的經濟指標做個簡單對比,模擬一下實戰(zhàn)的場景,找一下掌上觀文,了如指掌,一切盡在掌握的感覺……
下面是我們用到的基礎數據文件 Indicators.xlsx,其中,每個工作表是一個國家的各項指標:
接下來,我們打開集算器了,寫下第一行腳本:
| =file(“Indicators.xlsx”) | =A1.xlsopen() |
然后我們把腳本文件保存到和 Indicators.xlsx 數據文件一個目錄下,以方便引用相對路徑,名稱就叫 indicators.dfx。
說明一下,”=”開頭的格子稱為“計算格”,其中的表達式的計算結果會自動賦予單元格,后面的腳本中就可以用單元格名稱(A1、C25 等等)來直接使用了。同時,這里用到了兩個函數。第一個是 file()函數,返回一個文件對象。參數”Indicators.xlsx”是文件名,因為這里寫的是相對路徑,所以會在 indicators.dfx 文件的同級目錄查找。第二個是 xlsopen() 函數,把文件對象 A1 當做一個 Excel 工作簿對象打開。
集算器的好處是可以隨時進行測試,我們就來看一下現在的狀態(tài),點擊“執(zhí)行”圖標后,結果如下:
在右側面板,可以看到 Excel 文件被顯示為一個表格,除去最左側的序號列,第一列是工作表名稱,第二列和第三列分別是工作表的行列數。這三個字段構成了一個數據結構。若干條具有這個數據結構的記錄組成了一個有序的集合,我們稱之為“序表”。如果有序集合中不是具有相同數據結構的記錄,而只是一般的一些數據成員,那么我們就稱之為“序列”,所以說,序表是一種特殊的序列。集算器對于序列和序表提供了大量的函數,能夠支持各種復雜運算,因此,這兩種數據對象在集算器中會經常遇到。
接下來,我們就要讀取工作表的內容了,先看腳本:
| =B1.xlsimport@t() |
xlsimport() 函數是從工作簿對象 B1 中導入一個工作表。這里用到了 @t 選項,這個選項會把首行內容作為標題而不是數據(這是 Excel 表格常見的樣子)。選項需要寫在函數名后,以 @開頭,多個選項只需要寫一個 @,例如 @tx。這里我們沒有使用參數,所以函數會默認導入第一個工作表的全部內容。再點下“執(zhí)行”看看結果,如下:
可以看到第一個工作表的內容導入成了一個序表。不過這里我們會遇到第一個問題,每個經濟指標 Indicator 包括兩行,第二行是指標更新的時間,是我們不關心的內容。集算器的序表要解決這類問題非常簡單,加一個選出函數就可以了:
| =B1.xlsimport@t().select(Indicator!=null) |
select() 是選出函數,參數 Indicator!=null 是選出條件,也就是根據 Indicator 列是不是空來決定是不是選擇這一行內容,還是執(zhí)行看下效果:
篩選無效(不感興趣)數據的的問題已經解決,繼續(xù)研究發(fā)現每個指標中的 Last 是我們需要關心的,因此我們希望只導入 Indicator 和 Last 字段。腳本調整如下:
| =B1.xlsimport@t(Indicator,Last).select(Indicator!=null) |
這里用到了 xlsimport() 函數的選出字段參數,”Indicator,Last”就是希望選出的字段名(逗號分隔)。接下來專門導入中國的數據:
| =B1.xlsimport@t(Indicator,Last;”China”).select(Indicator!=null) |
這里參數又增加了一個”China”,指定了要導入的工作表名稱,與前面的字段參數用”;”隔開。(還可以指定導入的開始行和結束行,因為例子中沒有用到就不介紹了,有興趣的話可以參考教程文檔試驗一下。)執(zhí)行后就可以看到中國的指標了:
現在開始進行簡單的比較,把兩個表根據 Indicator 連接起來:
| =A2.join(Indicator,B2:Indicator,Last:’China’) |
這里使用到了 join() 函數,用單元格 A2 的字段 Indicator 匹配單元格 B2 的鍵 Indicator,找到相應記錄后拼上 B2 的 Last 字段,并使用字段名’China’拼到 A2 序表中,如下圖:
然后把美國的 Last 更名為 US:
| =A2.join(Indicator,B2:Indicator,Last:’China’).rename(Last:’United States’) |
這里的 rename() 函數用來修改序表的字段名,每個字段修改用”:”映射,Last 是曾用名,’United States’為新字段名:
前面提到過,集算器對于序列和序表提供了很多函數進行計算,用起來十分方便。這里我們就利用 sort 函數,把中美指標按照差距大小進行排序:
| =A3.sort@z(abs(‘United States’-‘China’)) |
這里用到了 sort()函數進行排序,@z 選項用來使結果降序排列。參數是用做排序依據的表達式,這里用美中指標進行了簡單的差值,然后用 abs() 函數計算絕對值。結果如下:
至此,需要的數據已經整理好了。為了以后可以重復使用,我們把這個比較結果添加到工作簿的一個新工作表’US vs China’中,并寫回到源文件中:
| >B1.xlsexport@t(A4;”US vs China”) | >A1.xlswrite(B1) |
前面提到過“=”開頭的是計算格,這里又遇到了一種”>”開頭的格子,我們稱之為“執(zhí)行格“。執(zhí)行格執(zhí)行后不會自動為單元格賦值。
這里用到的 xlsexport()函數用來把序表 A4 寫到工作簿對象 B1 中,”:”隔開的第二個參數是工作表名稱。這里同樣用到了選項,這里的 @t 表示需要導出標題行到工作表中。而 xlswrite() 函數則把工作簿對象 B1 寫出到文件對象 A1。
最后,我們打開 excel 文件查看一下最終結果:
簡單的幾行腳本,Excel 文件多個工作表的導入、連接、排序、導出等功能就輕松實現了。這還只是揭開了集算器的一角,還有更多的功能等待著我們去探索和應用。
完整腳本參考如下:
A | B | |
---|---|---|
1 | =file(“Indicators.xlsx”) | =A1.xlsopen() |
2 | =B1.xlsimport@t(Indicator,Last).select(Indicator!=null) | =B1.xlsimport@t(Indicator,Last;”China”).select(Indicator!=null) |
3 | =A2.join(Indicator,B2:Indicator,Last:’China’).rename(Last:’United States’) | |
4 | =A3.sort@z(abs(‘United States’-‘China’)) | |
5 | >B1.xlsexport@t(A4;”US vs China”) | >A1.xlswrite(B1) |
當前題目:簡單幾行程序輕松分析Excel
本文地址:http://jinyejixie.com/article36/ipihsg.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站排名、品牌網站設計、微信小程序、網站建設、靜態(tài)網站、自適應網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯