91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas如何實現DataFrame運算、統計與排序操作

發布時間:2022-03-31 14:45:50 來源:億速云 閱讀:264 作者:小新 欄目:開發技術

這篇文章主要介紹Pandas如何實現DataFrame運算、統計與排序操作,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

由于DataFrame的數據結構中包含了多行、多列,所以DataFrame的計算與統計可以是用行數據或者用列數據。為了更方便我們的使用,Pandas為我們提供了常用的計算與統計方法:

操作方法操作方法
求和sum最大值max
求均值mean最小值min
求方差var標準差std
中位數median眾數mode
分位數quantile  

一.運算

接上文的例子,我們已經有了N個學生的數學、語文、英語的成績表,現在,我們要算出每個學生的總成績,那么我們就可以用以下的方法:

'''
行的求和以下演示兩種方法:
方法1:先把待求和的列數據刪選出來(剔除掉name列),然后使用sum函數求和
方法2:把待求和的列一個一個選出來然后使用運算符求和
兩種方法最后的結果為像原有的DataFrame中新增一列,數據為每行數據的求和
'''
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方法中我們傳入了參數1,代表的是我們使用的軸(axis)為行(對行數據進行求和),如果想要計算出每列的求和我們只用傳入0即可(sum函數默認參數為0,所以也可不傳):

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

Output:
chinese    312
math       276
english    309
dtype: int64

現在有了總成績,那么數學老師或者語文老師就會關心本班學生的數據平均分是多少,同樣的,我們可以非常快速的計算出來:

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

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

Output:
92.0

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

上述????只計算了數學的平均分,感興趣的小伙伴可以自行基礎出英語和語文的平均分哦~

二.統計

這個時候數學老師又有新的需求了,他想查看本班學生數學成績的最高分、最低分、中位數等統計數據,那么根本不慌,Pandas統統可以幫我們搞定:

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%分位數
Output:
0.3    87.2
0.4    89.6
0.5    92.0
Name: math, dtype: float64

df['math'].std() # math列的標準差
Output:12

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

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

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

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

我們也可以使用DataFrame的describe方法對DataFrame查看基本的統計情況:

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

三.排序

一般來講我們的成績表都是按照總分從高到低進行排序:

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方法對DataFrame進行排序,同時by參數傳入‘sum’指定按照‘sum’字段進行排序,ascending用來設置是降序(False)還是升序(True,默認值)排序。使用sort_values排序后默認會返回一個新的DataFrame對象,也就是說并不會影響原有的DataFrame對象,所以例子中我們才會把排序后的對象賦值給原有的DataFrame對象,如果不想排序后創建新的對象也是可以的,只需要傳入inplace=True即可(在原有的DataFrame基礎上修改):

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

細心的小伙伴可能會發現當我們進行排序后,如果DataFrame中的行數據有調整的話,其行的索引值是不會更改的,上述例子中因為我們用了默認的遞增數列索引,所以排序后看起來并不是很友好,不過不用擔心,我們還是可以重置索引值的:

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重設索引后我們的DataFrame對象的索引列確實被重置成了遞增的序列,同時也多了列名為index的一列數據。當然我們可以傳入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這樣就展示出了學生的排名情況:

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

以上是“Pandas如何實現DataFrame運算、統計與排序操作”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内丘县| 五指山市| 玉溪市| 尖扎县| 延吉市| 西吉县| 西宁市| 高雄市| 当阳市| 铁岭市| 鸡泽县| 定陶县| 泊头市| 禹州市| 乌拉特前旗| 广水市| 吉安县| 正安县| 盖州市| 滦平县| 洛浦县| 军事| 安达市| 富川| 霍林郭勒市| 田东县| 斗六市| 南投市| 德令哈市| 清水县| 淮南市| 永城市| 襄樊市| 乐业县| 永福县| 潢川县| 通山县| 绍兴县| 旬阳县| 来凤县| 南投市|