溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

妙用集算,掌上觀文

發(fā)布時(shí)間:2020-07-28 05:41:11 來源:網(wǎng)絡(luò) 閱讀:301 作者:raqsoft 欄目:大數(shù)據(jù)

隨著互聯(lián)網(wǎng)的快速發(fā)展,大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)資源的處理成了各行各業(yè)都面臨的熱點(diǎn)問題。除了通過特別專業(yè)、特別特別昂貴、特別特別特別復(fù)雜的分析平臺(tái)來處理特別x4海量的數(shù)據(jù)外,我們還常常會(huì)遇到Excel(xls,xlsx)文件這樣手邊能夠即時(shí)獲得的數(shù)據(jù)文件。使用Excel記錄、處理和交換數(shù)據(jù),是因?yàn)檫@個(gè)軟件的簡(jiǎn)單方便,而如果又需要通過一堆外部調(diào)用來進(jìn)行后續(xù)的分析處理,那就會(huì)顯得十分笨拙?,F(xiàn)在我們就來分享一下如果通過輕量級(jí)地使用集算器來分析處理Excel形式的數(shù)據(jù)來源。

最近,中美貿(mào)易戰(zhàn)愈演愈烈,我們也來蹭一下熱度,用一些公開獲得的中美兩國(guó)的經(jīng)濟(jì)指標(biāo)做個(gè)簡(jiǎn)單對(duì)比,模擬一下實(shí)戰(zhàn)的場(chǎng)景,找一下掌上觀文,了如指掌,一切盡在掌握的感覺……

下面是我們用到的基礎(chǔ)數(shù)據(jù)文件Indicators.xlsx,其中,每個(gè)工作表是一個(gè)國(guó)家的各項(xiàng)指標(biāo):

妙用集算,掌上觀文

接下來,我們打開集算器了,寫下第一行腳本:

=file(“Indicators.xlsx”)=A1.xlsopen()

然后我們把腳本文件保存到和Indicators.xlsx數(shù)據(jù)文件一個(gè)目錄下,以方便引用相對(duì)路徑,名稱就叫indicators.dfx。

說明一下,”=”開頭的格子稱為“計(jì)算格”,其中的表達(dá)式的計(jì)算結(jié)果會(huì)自動(dòng)賦予單元格,后面的腳本中就可以用單元格名稱(A1、C25等等)來直接使用了。同時(shí),這里用到了兩個(gè)函數(shù)。第一個(gè)是file()函數(shù),返回一個(gè)文件對(duì)象。參數(shù)”Indicators.xlsx”是文件名,因?yàn)檫@里寫的是相對(duì)路徑,所以會(huì)在indicators.dfx文件的同級(jí)目錄查找。第二個(gè)是xlsopen()函數(shù),把文件對(duì)象A1當(dāng)做一個(gè)Excel工作簿對(duì)象打開。

集算器的好處是可以隨時(shí)進(jìn)行測(cè)試,我們就來看一下現(xiàn)在的狀態(tài),點(diǎn)擊“執(zhí)行”圖標(biāo)后,結(jié)果如下:

妙用集算,掌上觀文

在右側(cè)面板,可以看到Excel文件被顯示為一個(gè)表格,除去最左側(cè)的序號(hào)列,第一列是工作表名稱,第二列和第三列分別是工作表的行列數(shù)。這三個(gè)字段構(gòu)成了一個(gè)數(shù)據(jù)結(jié)構(gòu)。若干條具有這個(gè)數(shù)據(jù)結(jié)構(gòu)的記錄組成了一個(gè)有序的集合,我們稱之為“序表”。如果有序集合中不是具有相同數(shù)據(jù)結(jié)構(gòu)的記錄,而只是一般的一些數(shù)據(jù)成員,那么我們就稱之為“序列”,所以說,序表是一種特殊的序列。集算器對(duì)于序列和序表提供了大量的函數(shù),能夠支持各種復(fù)雜運(yùn)算,因此,這兩種數(shù)據(jù)對(duì)象在集算器中會(huì)經(jīng)常遇到。

接下來,我們就要讀取工作表的內(nèi)容了,先看腳本:

=B1.xlsimport@t()

xlsimport()函數(shù)是從工作簿對(duì)象B1中導(dǎo)入一個(gè)工作表。這里用到了@t選項(xiàng),這個(gè)選項(xiàng)會(huì)把首行內(nèi)容作為標(biāo)題而不是數(shù)據(jù)(這是Excel表格常見的樣子)。選項(xiàng)需要寫在函數(shù)名后,以@開頭,多個(gè)選項(xiàng)只需要寫一個(gè)@,例如@tx。這里我們沒有使用參數(shù),所以函數(shù)會(huì)默認(rèn)導(dǎo)入第一個(gè)工作表的全部?jī)?nèi)容。再點(diǎn)下“執(zhí)行”看看結(jié)果,如下:

妙用集算,掌上觀文

可以看到第一個(gè)工作表的內(nèi)容導(dǎo)入成了一個(gè)序表。不過這里我們會(huì)遇到第一個(gè)問題,每個(gè)經(jīng)濟(jì)指標(biāo)Indicator包括兩行,第二行是指標(biāo)更新的時(shí)間,是我們不關(guān)心的內(nèi)容。集算器的序表要解決這類問題非常簡(jiǎn)單,加一個(gè)選出函數(shù)就可以了:

=B1.xlsimport@t().select(Indicator!=null)

select()是選出函數(shù),參數(shù)Indicator!=null是選出條件,也就是根據(jù)Indicator列是不是空來決定是不是選擇這一行內(nèi)容,還是執(zhí)行看下效果:

妙用集算,掌上觀文

篩選無效(不感興趣)數(shù)據(jù)的的問題已經(jīng)解決,繼續(xù)研究發(fā)現(xiàn)每個(gè)指標(biāo)中的Last是我們需要關(guān)心的,因此我們希望只導(dǎo)入Indicator和Last字段。腳本調(diào)整如下:

=B1.xlsimport@t(Indicator,Last).select(Indicator!=null)

妙用集算,掌上觀文

這里用到了xlsimport()函數(shù)的選出字段參數(shù),”Indicator,Last”就是希望選出的字段名(逗號(hào)分隔)。接下來專門導(dǎo)入中國(guó)的數(shù)據(jù):

=B1.xlsimport@t(Indicator,Last;”China”).select(Indicator!=null)

這里參數(shù)又增加了一個(gè)”China”,指定了要導(dǎo)入的工作表名稱,與前面的字段參數(shù)用”;”隔開。(還可以指定導(dǎo)入的開始行和結(jié)束行,因?yàn)槔又袥]有用到就不介紹了,有興趣的話可以參考教程文檔試驗(yàn)一下。)執(zhí)行后就可以看到中國(guó)的指標(biāo)了:

妙用集算,掌上觀文

現(xiàn)在開始進(jìn)行簡(jiǎn)單的比較,把兩個(gè)表根據(jù)Indicator連接起來:

=A2.join(Indicator,B2:Indicator,Last:’China’)

這里使用到了join()函數(shù),用單元格A2的字段Indicator匹配單元格B2的鍵Indicator,找到相應(yīng)記錄后拼上B2的Last字段,并使用字段名’China’拼到A2序表中,如下圖:

妙用集算,掌上觀文

然后把美國(guó)的Last更名為US:

=A2.join(Indicator,B2:Indicator,Last:’China’).rename(Last:’United States’)

這里的rename()函數(shù)用來修改序表的字段名,每個(gè)字段修改用”:”映射,Last是曾用名,’United States’為新字段名:

妙用集算,掌上觀文

前面提到過,集算器對(duì)于序列和序表提供了很多函數(shù)進(jìn)行計(jì)算,用起來十分方便。這里我們就利用sort函數(shù),把中美指標(biāo)按照差距大小進(jìn)行排序:

=A3.sort@z(abs(‘United States’-‘China’))

這里用到了sort()函數(shù)進(jìn)行排序,@z選項(xiàng)用來使結(jié)果降序排列。參數(shù)是用做排序依據(jù)的表達(dá)式,這里用美中指標(biāo)進(jìn)行了簡(jiǎn)單的差值,然后用abs()函數(shù)計(jì)算絕對(duì)值。結(jié)果如下:

妙用集算,掌上觀文

至此,需要的數(shù)據(jù)已經(jīng)整理好了。為了以后可以重復(fù)使用,我們把這個(gè)比較結(jié)果添加到工作簿的一個(gè)新工作表’US vs China’中,并寫回到源文件中:

>B1.xlsexport@t(A4;”US vs China”)>A1.xlswrite(B1)

前面提到過“=”開頭的是計(jì)算格,這里又遇到了一種”>”開頭的格子,我們稱之為“執(zhí)行格“。執(zhí)行格執(zhí)行后不會(huì)自動(dòng)為單元格賦值。

這里用到的xlsexport()函數(shù)用來把序表A4寫到工作簿對(duì)象B1中,”:”隔開的第二個(gè)參數(shù)是工作表名稱。這里同樣用到了選項(xiàng),這里的@t表示需要導(dǎo)出標(biāo)題行到工作表中。而xlswrite()函數(shù)則把工作簿對(duì)象B1寫出到文件對(duì)象A1。

妙用集算,掌上觀文

最后,我們打開excel文件查看一下最終結(jié)果:

妙用集算,掌上觀文

簡(jiǎn)單的幾行腳本,Excel文件多個(gè)工作表的導(dǎo)入、連接、排序、導(dǎo)出等功能就輕松實(shí)現(xiàn)了。這還只是揭開了集算器的一角,還有更多的功能等待著我們?nèi)ヌ剿骱蛻?yīng)用。

完整腳本參考如下:


                                                       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)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI