亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        運用Python及Pandas庫分組統(tǒng)計“最值”記錄方法探討

        2021-12-24 08:02:14徐文昭
        內(nèi)蒙古科技與經(jīng)濟 2021年21期
        關(guān)鍵詞:程序方法

        徐文昭

        (四川建筑職業(yè)技術(shù)學院,四川 德陽 618000)

        近些年來,伴隨著網(wǎng)絡技術(shù)與云計算技術(shù)的蓬勃飛速發(fā)展,社會各個領(lǐng)域的數(shù)據(jù)匯聚到網(wǎng)絡中來,網(wǎng)絡數(shù)據(jù)時時刻刻呈現(xiàn)爆炸性增長,我們生活在數(shù)據(jù)的汪洋大海中,大數(shù)據(jù)時代已然到來。面對紛繁復雜、日益增長的海量數(shù)據(jù),能夠從中發(fā)現(xiàn)并挖掘有規(guī)律、有價值的信息——數(shù)據(jù)分析處理,顯得越來越重要。Python因其語法簡單精練、擁有巨大且活躍的科學計算社區(qū)、強大的通用編程能力、人工智能時代可作為通用語言及可對接其他語言等優(yōu)勢特性,成為數(shù)據(jù)分析處理的首要編程語言。作為Python一個重要的庫,Pandas是一款基于numpy、專門為了解決數(shù)據(jù)分析任務的工具,其間不僅納入了大量的庫和一些標準的數(shù)據(jù)模型,而且提供了高效操作大型數(shù)據(jù)集所需的工具,被廣泛應用到許多領(lǐng)域,包括經(jīng)濟、統(tǒng)計和分析等學術(shù)及商業(yè)領(lǐng)域。

        1 Pandas數(shù)據(jù)索引及切片概述

        Python的Pandas庫里有兩個非常重要的數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。其中,前者是一維的數(shù)據(jù)結(jié)構(gòu),后者是二維的、表格型的數(shù)據(jù)結(jié)構(gòu)。我們可以把文件里的數(shù)據(jù)讀入程序進行處理,處理過程中涉及索引及切片操作。這兩種數(shù)據(jù)類型的對象都支持索引及切片操作,DataFrame對象的元素可以通過索引和切片來訪問和修改,就像Python內(nèi)置的容器對象一樣。

        從表面上來看,因為Series類對象屬于一維數(shù)據(jù)結(jié)構(gòu),它使用索引和切片的方式與NumPy數(shù)組索引和切片非常類似,但Series的索引值不只是整數(shù)。但對于DataFrame來說,索引和切片的使用方式就與列表大不一樣了。DataFrame結(jié)構(gòu)不僅包含行索引,也包含列索引。其中,行索引是通過index屬性進行獲取的,列索引是通過columns屬性進行獲取的。DataFrame里每列數(shù)據(jù)都是一個Series對象,這樣,可以使用列索引進行獲取。其中有一種特別的索引——布爾型索引。布爾型索引指的是將一個其元素為布爾型數(shù)據(jù)的Series對象或DataFrame對象作為模板篩選數(shù)據(jù),返回與模板中元素值為True位置對應的元素。

        2 問題的提出

        在一張Excel表里,存儲著若干行數(shù)據(jù),分散記錄了各組員工工作的完成次數(shù)(具體如表1所示),現(xiàn)在要求分組統(tǒng)計篩選出各組完成次數(shù)最多的員工數(shù)據(jù)行。

        表1 各組員工工作完成的次數(shù)

        我們很可能不由自主地想到了Excel里的分類匯總以及數(shù)據(jù)透視功能?!胺诸悈R總”是對同類別的數(shù)據(jù)進行統(tǒng)計匯總,是將相同類別的數(shù)據(jù)放在一起,然后進行求和、最大(小)值、計數(shù)和求平均值等匯總運算,是數(shù)據(jù)分析的重要手段,但是,如果借助Excel本身自帶的分類匯總以及數(shù)據(jù)透視功能來解決本文提出的問題,是無法完成這個任務的,它們只能呈現(xiàn)出各個類別(分組)的統(tǒng)計值,沒法給出統(tǒng)計值所在數(shù)據(jù)行的完整數(shù)據(jù)信息。據(jù)此,我們探討采用Python的Pandas庫來實現(xiàn),可有兩種方法。

        3 運用程序解決問題方法探討

        Python的Pandas庫里有兩個非常重要的數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。其中,前者是一維的數(shù)據(jù)結(jié)構(gòu),后者是二維的、表格型的數(shù)據(jù)結(jié)構(gòu)??梢园褦?shù)據(jù)表數(shù)據(jù)讀入程序以DataFrame類型表示,然后據(jù)此可以進行分組聚合以及篩選,最后形成最終結(jié)果。筆者調(diào)試實驗程序是在Jupyter Notebook上進行的。Jupyter Notebook(交互式筆記本)是一個支持實時代碼、數(shù)學方程、可視化和Markdown的Web應用程序,它支持四十多種計算機編程語言,對于數(shù)據(jù)分析來說,這個Web應用程序最大的優(yōu)點是可以重現(xiàn)整個數(shù)據(jù)分析過程,并將說明文字、代碼、圖表、公式和結(jié)論都整合在一個文檔里面,用戶可以通過電子郵件(E-mail)、Dropbox、GitHub和Jupyter Notebook View將分析結(jié)果分享給其他人。

        3.1 方法一:運用循環(huán)結(jié)構(gòu)

        import pandas as pd # 導入pandas庫

        df = pd . read_excel ( ‘G : test1 . xlsx’) # 從存在盤上的Excel表讀取數(shù)據(jù)到程序,變量df的數(shù)據(jù)類型為DataFrame

        dm = df . groupby (‘組別’) . max ( ) #按照“組別”分組并聚合數(shù)據(jù),篩選出各組最大值

        dmax = pd . DataFrame ( ) # 新建一個DataFrame變量,以保存符合條件的行數(shù)據(jù)

        # 循環(huán)語句,以dm行索引“組別”和列索引“完成次數(shù)”與原始數(shù)據(jù)集df匹配,以篩選出符合條件的數(shù)據(jù)行

        foriindm . index:

        m = df [ ( df [‘組別’]==I ) & ( df [‘完成次數(shù)’] = = dm [‘完成次數(shù)’] [ i ] ) ]

        dmax = dmax . append ( m )

        dmax # 打印輸出結(jié)果數(shù)據(jù)集

        運行該程序,得到各組完成次數(shù)最多的員工信息,如表2所示。

        表2 各組完成次數(shù)最多的員工信息(方法一)

        3.2 方法二:運用transform ( )方法

        import pandas as pd #導入pandas庫

        df = pd . read _ excel (‘ G : test1 . xlsx ’) #從存在盤上的Excel表讀取數(shù)據(jù)到程序,df的數(shù)據(jù)類型為DataFrame

        dmax = df [df . groupby [‘組別’] . transform. max ( ) [‘完成次數(shù)’] = = df[‘完成次數(shù)’]]

        dmax #打印輸出結(jié)果數(shù)據(jù)集

        運行該程序,得到各組完成次數(shù)最多的員工信息,如表3所示。

        表3 各組完成次數(shù)最多的員工信息(方法二)

        可以看出,兩種方法運行程序得到的結(jié)果數(shù)據(jù)集是相同的,但相對方法一的程序,方法二里面的程序代碼非常短小精煉。該程序應用到了transform()方法。一般來說,在對數(shù)據(jù)集進行聚合運算的時候,返回的數(shù)據(jù)集的形狀(shape)與被分組數(shù)據(jù)集的形狀是不同的,也就是說,一般返回的數(shù)據(jù)集的數(shù)據(jù)行數(shù)量小于原來數(shù)據(jù)集的數(shù)據(jù)行數(shù)量。如果希望保持與原來的數(shù)據(jù)集形狀相同,那么可以通過transform()方法來實現(xiàn)。該方法的語法格式如下:

        transform ( func , * args , ** kwargs )

        上述方法中只有一個func參數(shù),表示操作pandas對象的函數(shù),比如,剛用到的max函數(shù)。transform()方法返回的結(jié)果有兩種:①可以在本組列上進行廣播的標量值(如max);②可以是與分組大小相同的結(jié)果數(shù)組。通過transform()方法操作分組時,transform()方法會把func函數(shù)應用到各個分組中,并且將結(jié)果放在適當?shù)奈恢?。如此,當進行篩選最值數(shù)據(jù)行時,不必使用循環(huán)遍歷,通過兩個等行數(shù)的數(shù)據(jù)集比較運算,得到等行數(shù)的新數(shù)據(jù)集,相應位置上的元素被賦予布爾類型的值,通過數(shù)據(jù)集的布爾索引,就獲得了最終的最值數(shù)據(jù)行形成的新數(shù)據(jù)集,這就是我們想要的結(jié)果集。

        4 結(jié)論

        數(shù)據(jù)處理分析是海量數(shù)據(jù)里尋找發(fā)現(xiàn)信息規(guī)律的重要手段。Pandas是一款基于numpy、專門為了解決數(shù)據(jù)分析任務的工具、作為Python的一個重要的庫,其間不僅納入了大量的庫和一些標準的數(shù)據(jù)模型,而且提供了高效操作大型數(shù)據(jù)集所需的工具,被廣泛應用到許多領(lǐng)域,包括經(jīng)濟、統(tǒng)計和分析等學術(shù)及商業(yè)領(lǐng)域。筆者通過使用Python的Pandas庫的編程方式對結(jié)合數(shù)據(jù)分組統(tǒng)計“最值”記錄問題進行了研究,得出了優(yōu)化的程序?qū)崿F(xiàn)方法。通過研究發(fā)現(xiàn),采用編程方式,運用具有專業(yè)的數(shù)據(jù)處理分析特長的Python語言及Pandas庫,能解決看似復雜的數(shù)據(jù)處理分析問題。我們應該重視一些看起來平凡無奇的方法,如transform()方法,如能被合理地運用,就可以減省大量程序代碼,讓程序更精煉強悍、運行起來效率更高。

        猜你喜歡
        程序方法
        學習方法
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        可能是方法不對
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        創(chuàng)衛(wèi)暗訪程序有待改進
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        无套中出丰满人妻无码| 日本一极品久久99精品| 日本一区二区三区一级片| 天堂资源中文网| 国产成人精品电影在线观看| av无码天一区二区一三区| 精品少妇白浆一二三区| 在线观看免费日韩精品| 亚洲国产精品第一区二区| 午夜tv视频免费国产区4| 精品自拍偷拍一区二区三区| 精品国产一区二区三区三| 欧美金发尤物大战黑人| 久久精品无码一区二区2020| 精品在线亚洲一区二区三区| 新婚少妇无套内谢国语播放| 麻豆一区二区99久久久久| 亚洲免费一区二区三区视频| 久久黄色精品内射胖女人| 人人妻人人澡人人爽国产一区| 亚洲狠狠婷婷综合久久| 欧美一级鲁丝片免费一区| 青青草视频在线观看网| 亚洲精品无码国产| 国产精品视频流白浆免费视频| 久久亚洲精品成人av观看| 日韩欧美中文字幕公布 | 日本一区二区三区高清在线视频| 无码福利写真片视频在线播放| 337p日本欧洲亚洲大胆色噜噜| 精品国产一区二区三区九一色| 无码人妻一区二区三区免费看 | 欧美日本日韩aⅴ在线视频| 看全色黄大黄大色免费久久| 国产日韩厂亚洲字幕中文| 在线亚洲+欧美+日本专区| av少妇偷窃癖在线观看| 国产91精品一区二区麻豆亚洲 | 国产AV高清精品久久| 精品国产一区二区三区av免费| 在线成人一区二区|