溫馨提示×

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

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

簡(jiǎn)單幾行程序輕松分析Excel

發(fā)布時(shí)間:2020-07-18 00:15:26 來(lái)源:網(wǎng)絡(luò) 閱讀:1071 作者:raqsoft 欄目:大數(shù)據(jù)

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

接下來(lái),我們打開(kāi)集算器了,寫(xiě)下第一行腳本:

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

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

在右側(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ù)成員,那么我們就稱之為“序列”,所以說(shuō),序表是一種特殊的序列。集算器對(duì)于序列和序表提供了大量的函數(shù),能夠支持各種復(fù)雜運(yùn)算,因此,這兩種數(shù)據(jù)對(duì)象在集算器中會(huì)經(jīng)常遇到。

接下來(lái),我們就要讀取工作表的內(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  表格常見(jiàn)的樣子)。選項(xiàng)需要寫(xiě)在函數(shù)名后,以 @開(kāi)頭,多個(gè)選項(xiàng)只需要寫(xiě)一個(gè) @,例如  @tx。這里我們沒(méi)有使用參數(shù),所以函數(shù)會(huì)默認(rèn)導(dǎo)入第一個(gè)工作表的全部?jī)?nèi)容。再點(diǎn)下“執(zhí)行”看看結(jié)果,如下:

簡(jiǎn)單幾行程序輕松分析Excel

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

篩選無(wú)效(不感興趣)數(shù)據(jù)的的問(wèn)題已經(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) |

簡(jiǎn)單幾行程序輕松分析Excel

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

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

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

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

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

簡(jiǎn)單幾行程序輕松分析Excel

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

簡(jiǎn)單幾行程序輕松分析Excel

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

完整腳本參考如下:


AB
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問(wèn)一下細(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