DataFrame(8):DataFrame運算——基本統計函數


1、常用函數說明

在df中使用統計函數,其實很簡單,我們主要關注以下3點,就沒問題:

  • ① 了解每個函數的具體含義是什么;
  • ② 不管是Series還是DataFrame,默認都是自動忽略NaN值,進行運算的;
  • ③ DataFrame有行、列區分,因此在使用統計函數的時候,一般是結合axis=0或者axis=1參數對df中的哪一行、哪一列進行操作;

注意:axis的具體含義,在操作DataFrame時極其重要,因此不要死記硬背,理解原理后,就永遠忘記不了 。要記住不管是numpy還是pandas中,aixs的含義都是一致的。

2、sum、mean、count、max、min

這五個函數屬於最常用的幾個函數,在mysql中叫做“聚合函數”(只不過mean在mysql中叫做avg),我們以sum函數為例進行說明。

df = pd.read_excel(r"C:\Users\xxx\Desktop\test.xlsx",sheet_name=2)
display(df)

# 重置索引
df = df.set_index("name")
df.sum(axis=1)
df.sum(axis=0)
結果如下:

3、median、abs、mod、prod、var、std

# 我們就用一列來講述這幾個函數的用法
df = pd.DataFrame({"id":["00{}".format(i) for i in range(1,10)],
                   "score":[2,3,4,4,5,6,7,7,8]})
display(df)
# 求該列數據的中位數
df["score"].median(axis=0)
# 求該列數據的每個值除以3得到的余數
df["score"].mod(3,axis=0)
# 求該列數據的連乘積
display(2*3*4*4*5*6*7*7*8)
df["score"].prod(axis=0)
# 求該列數據的方差
x = df["score"].var(axis=0)
display(x)
# 求該列數據的標准差
y = df["score"].std(axis=0)
display(y)
# 標准差等於方差的開方
np.sqrt(x) == y

結果如下:

            

注意:這一組函數中,需要注意的是mod函數的用法,里面需要傳入一個值,作為除數。

4、argmax和idxmax、argmin和idxmin

argmax和idxmax是一組,用於返回一組數據中最大值的下標。argmin和idxmin是一組,用於返回一組數據中最小值的下標。但是當我們使用argmax和argmin的時候,會出現一個提示,告訴我們這個函數以后會被idxmax和idxmin代替,因此我們只需要掌握idxmax和idxmin的用法即可。

df = pd.DataFrame({"id":["00{}".format(i) for i in range(1,10)],
                   "score":[2,3,4,4,5,6,7,7,8]})
display(df)

df["score"].idxmax(axis=0)
df["score"].idxmin(axis=0)
結果如下:

5、unique:求一組數據中的唯一值

對於unique的使用,需要特別注意。unique函數是針對Series的操作,是針對於df的某一行,或者某一列進行操作,因此沒有axis參數。unique不僅可以針對數字去重,還可以針對字符串去重。

df = pd.DataFrame({"id":["00{}".format(i) for i in range(1,10)],
                   "score":[2,3,4,4,5,6,7,7,8]})
display(df)

df["score"].unique()

結果如下:

            

6、value_counts:求一組數據中每個值出現的次數

(很重要)

value_counts不僅可以統計一組數字中,不同值出現的次數,還可以統計一組字符串中,不同值出現的次數。

df = pd.DataFrame({"id":["00{}".format(i) for i in range(1,10)],
                   "eat_hand":["right","right","left","right","left","right","right","right","left"],
                   "score":[2,3,4,4,5,6,7,7,8]})
display(df)

df["score"].value_counts()

結果如下:

            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM