最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas實(shí)現(xiàn)DataFrame的簡(jiǎn)單運(yùn)算、統(tǒng)計(jì)與排序

 更新時(shí)間:2022年03月31日 11:53:08   作者:Jackson_Wang  
本文主要介紹了Pandas實(shí)現(xiàn)DataFrame的簡(jiǎn)單運(yùn)算、統(tǒng)計(jì)與排序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在前面的章節(jié)中,我們討論了Series的計(jì)算方法與Pandas的自動(dòng)對(duì)齊功能。不光是Series,DataFrame也是支持運(yùn)算的,而且還是經(jīng)常被使用的功能之一。

由于DataFrame的數(shù)據(jù)結(jié)構(gòu)中包含了多行、多列,所以DataFrame的計(jì)算與統(tǒng)計(jì)可以是用行數(shù)據(jù)或者用列數(shù)據(jù)。為了更方便我們的使用,Pandas為我們提供了常用的計(jì)算與統(tǒng)計(jì)方法:

操作方法操作方法
求和sum最大值max
求均值mean最小值min
求方差var標(biāo)準(zhǔn)差std
中位數(shù)median眾數(shù)mode
分位數(shù)quantile  

一.運(yùn)算

接上文的例子,我們已經(jīng)有了N個(gè)學(xué)生的數(shù)學(xué)、語(yǔ)文、英語(yǔ)的成績(jī)表,現(xiàn)在,我們要算出每個(gè)學(xué)生的總成績(jī),那么我們就可以用以下的方法:

'''
行的求和以下演示兩種方法:
方法1:先把待求和的列數(shù)據(jù)刪選出來(lái)(剔除掉name列),然后使用sum函數(shù)求和
方法2:把待求和的列一個(gè)一個(gè)選出來(lái)然后使用運(yùn)算符求和
兩種方法最后的結(jié)果為像原有的DataFrame中新增一列,數(shù)據(jù)為每行數(shù)據(jù)的求和
'''
df['sum'] = df[['chinese', 'math', 'english']].sum(1)	#方法1

df['sum'] = df['chinese'] + df['math'] + df['english']	#方法2

Output:
        name  chinese  english  math  sum
0   XiaoMing       99      100    80  279
1      LiHua      102       79    92  273
2  HanMeiNei      111      130   104  345

在sum方法中我們傳入了參數(shù)1,代表的是我們使用的軸(axis)為行(對(duì)行數(shù)據(jù)進(jìn)行求和),如果想要計(jì)算出每列的求和我們只用傳入0即可(sum函數(shù)默認(rèn)參數(shù)為0,所以也可不傳):

df[['chinese', 'math', 'english']].sum(0)

Output:
chinese    312
math       276
english    309
dtype: int64

現(xiàn)在有了總成績(jī),那么數(shù)學(xué)老師或者語(yǔ)文老師就會(huì)關(guān)心本班學(xué)生的數(shù)據(jù)平均分是多少,同樣的,我們可以非??焖俚挠?jì)算出來(lái):

df['math'].mean()		#方法一:直接使用Pandas提供的mean求均值方法

df['math'].sum() / df.shape[0]	#方法二:使用求和方法算出總和后除以總?cè)藬?shù)(行數(shù))

Output:
92.0

本??中使用了DataFrame的shape方法,這個(gè)方法是用來(lái)顯示DataFrame的行數(shù)和列數(shù)的,行數(shù)為0,列數(shù)1。需要注意的是輸出的列數(shù)值是不含索引列的。

上述??只計(jì)算了數(shù)學(xué)的平均分,感興趣的小伙伴可以自行基礎(chǔ)出英語(yǔ)和語(yǔ)文的平均分哦~

二.統(tǒng)計(jì)

這個(gè)時(shí)候數(shù)學(xué)老師又有新的需求了,他想查看本班學(xué)生數(shù)學(xué)成績(jī)的最高分、最低分、中位數(shù)等統(tǒng)計(jì)數(shù)據(jù),那么根本不慌,Pandas統(tǒng)統(tǒng)可以幫我們搞定:

df['math'].min()  # math列的最小值
Output:80

df['math'].max()  # math列的最大值
Output:104

df['math'].quantile([0.3, 0.4, 0.5])  # math列的30%、40%、50%分位數(shù)
Output:
0.3    87.2
0.4    89.6
0.5    92.0
Name: math, dtype: float64

df['math'].std() # math列的標(biāo)準(zhǔn)差
Output:12

df['math'].var() # math列的方差
Output:144

df['math'].mean() # math列的平均數(shù)
Output:92

df['math'].median() # math列的中位數(shù)
Output:92

df['math'].mode() # math列的眾數(shù),返回一個(gè)Series對(duì)象(有可能出現(xiàn)并列的情況,例子中眾數(shù)為1,所以都返回)
Output:
0     80
1     92
2    104
dtype: int64

我們也可以使用DataFrame的describe方法對(duì)DataFrame查看基本的統(tǒng)計(jì)情況:

df.describe()

Outprint:
          chinese     english   math         sum
count    3.000000    3.000000    3.0    3.000000
mean   104.000000  103.000000   92.0  299.000000
std      6.244998   25.632011   12.0   39.949969
min     99.000000   79.000000   80.0  273.000000
25%    100.500000   89.500000   86.0  276.000000
50%    102.000000  100.000000   92.0  279.000000
75%    106.500000  115.000000   98.0  312.000000
max    111.000000  130.000000  104.0  345.000000

三.排序

一般來(lái)講我們的成績(jī)表都是按照總分從高到低進(jìn)行排序:

df = df.sort_values(by='sum', ascending=False)


Output:
        name  chinese  english  math  sum
2  HanMeiNei      111      130   104  345
0   XiaoMing       99      100    80  279
1      LiHua      102       79    92  273

可以看到我們使用了sort_values方法對(duì)DataFrame進(jìn)行排序,同時(shí)by參數(shù)傳入‘sum’指定按照‘sum’字段進(jìn)行排序,ascending用來(lái)設(shè)置是降序(False)還是升序(True,默認(rèn)值)排序。使用sort_values排序后默認(rèn)會(huì)返回一個(gè)新的DataFrame對(duì)象,也就是說(shuō)并不會(huì)影響原有的DataFrame對(duì)象,所以例子中我們才會(huì)把排序后的對(duì)象賦值給原有的DataFrame對(duì)象,如果不想排序后創(chuàng)建新的對(duì)象也是可以的,只需要傳入inplace=True即可(在原有的DataFrame基礎(chǔ)上修改):

df.sort_values(by='sum', ascending=False, inplace=True)
print(df)

Output:
        name  chinese  english  math  sum
2  HanMeiNei      111      130   104  345
0   XiaoMing       99      100    80  279
1      LiHua      102       79    92  273

細(xì)心的小伙伴可能會(huì)發(fā)現(xiàn)當(dāng)我們進(jìn)行排序后,如果DataFrame中的行數(shù)據(jù)有調(diào)整的話,其行的索引值是不會(huì)更改的,上述例子中因?yàn)槲覀冇昧四J(rèn)的遞增數(shù)列索引,所以排序后看起來(lái)并不是很友好,不過(guò)不用擔(dān)心,我們還是可以重置索引值的:

df = df.sort_values(by='sum', ascending=False).reset_index()

Output:
   index       name  chinese  english  math  sum
0      2  HanMeiNei      111      130   104  345
1      0   XiaoMing       99      100    80  279
2      1      LiHua      102       79    92  273

使用reset_index重設(shè)索引后我們的DataFrame對(duì)象的索引列確實(shí)被重置成了遞增的序列,同時(shí)也多了列名為index的一列數(shù)據(jù)。當(dāng)然我們可以傳入drop=True將原有的索引列不插入到新的DataFrame中:

df = df.sort_values(by='sum', ascending=False).reset_index(drop=True)

        name  chinese  english  math  sum
0  HanMeiNei      111      130   104  345
1   XiaoMing       99      100    80  279
2      LiHua      102       79    92  273

為了更直觀的展示排名情況,我們可以索引值+1這樣就展示出了學(xué)生的排名情況:

df.index += 1

        name  chinese  english  math  sum
1  HanMeiNei      111      130   104  345
2   XiaoMing       99      100    80  279
3      LiHua      102       79    92  273

到此這篇關(guān)于Pandas實(shí)現(xiàn)DataFrame的簡(jiǎn)單運(yùn)算、統(tǒng)計(jì)與排序的文章就介紹到這了,更多相關(guān)Pandas DataFrame運(yùn)算統(tǒng)計(jì)與排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的閉包總結(jié)

    Python中的閉包總結(jié)

    這篇文章主要介紹了Python中的閉包總結(jié),本文講解了閉包的概念、為什么使用閉包、使用閉包實(shí)例等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • 詳解Python多線程Selenium跨瀏覽器測(cè)試

    詳解Python多線程Selenium跨瀏覽器測(cè)試

    本篇文章主要介紹了Python多線程Selenium跨瀏覽器測(cè)試,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Python實(shí)現(xiàn)的微信公眾號(hào)群發(fā)圖片與文本消息功能實(shí)例詳解

    Python實(shí)現(xiàn)的微信公眾號(hào)群發(fā)圖片與文本消息功能實(shí)例詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的微信公眾號(hào)群發(fā)圖片與文本消息功能,結(jié)合實(shí)例形式詳細(xì)分析了Python調(diào)用微信接口實(shí)現(xiàn)微信公眾號(hào)群發(fā)圖片與文本消息的具體操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • 詳解python3中zipfile模塊用法

    詳解python3中zipfile模塊用法

    本篇文章給大家分享了關(guān)于python3中zipfile模塊的詳細(xì)用法以及技術(shù)難點(diǎn)解析,有興趣的朋友跟著學(xué)習(xí)下吧。
    2018-06-06
  • Python中關(guān)于函數(shù)的具體用法范例以及介紹

    Python中關(guān)于函數(shù)的具體用法范例以及介紹

    函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)
    2021-09-09
  • Python編寫(xiě)判斷真實(shí)文件類型工具

    Python編寫(xiě)判斷真實(shí)文件類型工具

    常在河邊走,哪能不濕鞋,網(wǎng)上獲取的各種文件后綴真真假假,甚至一不小心就會(huì)中招,所以本文就來(lái)用Python編寫(xiě)一個(gè)判斷真實(shí)文件類型工具吧
    2025-01-01
  • Python PyAutoGUI模塊控制鼠標(biāo)和鍵盤(pán)實(shí)現(xiàn)自動(dòng)化任務(wù)詳解

    Python PyAutoGUI模塊控制鼠標(biāo)和鍵盤(pán)實(shí)現(xiàn)自動(dòng)化任務(wù)詳解

    這篇文章主要介紹了Python PyAutoGUI模塊控制鼠標(biāo)和鍵盤(pán)實(shí)現(xiàn)自動(dòng)化任務(wù),結(jié)合實(shí)例形式詳細(xì)分析了pyautogui模塊的安裝、導(dǎo)入以及針對(duì)鼠標(biāo)與鍵盤(pán)的各種常見(jiàn)響應(yīng)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-09-09
  • 用python的turtle模塊實(shí)現(xiàn)給女票畫(huà)個(gè)小心心

    用python的turtle模塊實(shí)現(xiàn)給女票畫(huà)個(gè)小心心

    今天小編就為大家分享一篇用python的turtle模塊實(shí)現(xiàn)給女票畫(huà)個(gè)小心心,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python中reduce()函數(shù)的語(yǔ)法參數(shù)與作用詳解

    Python中reduce()函數(shù)的語(yǔ)法參數(shù)與作用詳解

    這篇文章主要介紹了Python中reduce()函數(shù)的語(yǔ)法參數(shù)與作用詳解,reduce函數(shù)是通過(guò)函數(shù)對(duì)迭代器對(duì)象中的元素進(jìn)行遍歷操作,Python3.x中reduce函數(shù)已經(jīng)從內(nèi)置函數(shù)中取消了,轉(zhuǎn)而放在functools模塊中,需要的朋友可以參考下
    2023-08-08
  • Python入門教程(九)Python字符串介紹

    Python入門教程(九)Python字符串介紹

    這篇文章主要介紹了Python入門教程(九)Python字符串,Python是一門非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

景洪市| 花垣县| 独山县| 中西区| 赫章县| 米易县| 鄂尔多斯市| 罗源县| 芮城县| 那坡县| 句容市| 新源县| 新蔡县| 奉贤区| 固阳县| 龙山县| 花莲县| 田林县| 遂宁市| 盐山县| 桦川县| 新乡县| 南郑县| 洪洞县| 扬州市| 准格尔旗| 息烽县| 昂仁县| 柯坪县| 类乌齐县| 天峻县| 垦利县| 河南省| 安多县| 弥勒县| 华蓥市| 沂水县| 焉耆| 江源县| 平定县| 高唐县|