python DataFrame常用描述性統計分析方法
文章目錄
- python DataFrame常用描述性統計分析方法
- sum() 求和
- mean() 求平均值
- max() 最大值 & min() 最小值
- median() 中位數
- mode() 眾數
- var() 方差
- std() 標準差
- quantile() 分位數
????????????
??????????? 個人簡介
🍹歡迎各路大佬來到小啾主頁指點??
?博客主頁:云雀編程小窩 🌹??
🌹??點贊 + 關注 + 收藏?
????
?? 感謝大家的支持:一起加油!共同進步! 🍹
sum() 求和
使用sum()方法對DataFrame物件求和,
其中**set_option(‘display.unicode.east_asian_width’, True)**可以使顯示的DataFrame值與列名對齊,
sum有axis引數,默認為0,表示對列求和
- 設定為1表示對行求和,
- 也可以設定 skipna引數,改引數默認為True,表示不考慮缺失值,如果是False則表示考慮缺失值,當存在缺失值時,則對應的結果表示為Nan,
- (布爾型別的引數值,當傳入為其它型別的值時,也解讀為該值的布林值)
這里對示例資料的行求和,然后生成一個新的列添加在資料中,
import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]
index = [1, 2, 3]
columns = ['語文', '數學', '英語']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("================================")
# 增加一列
df['總成績'] = df.sum(axis=1, skipna=1)
print(df)
程式運行結果如下:
mean() 求平均值
這里對生成資料的每一列求平均值,然后作為一個新的行增加給原資料,
通過示例可以看到,當原資料中存在空值時,計算均值時分子和分母都不計入該資料,即mean()求的是非空資料的平均值,
import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]
index = [1, 2, 3, 4]
columns = ['語文', '數學', '英語']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("================================")
new = df.mean()
# 增加一行資料(語文、數學和英語的平均值,忽略索引)
df = df.append(new, ignore_index=True)
print(df)
關于DataFrame的append()方法
DataFrame增添一行可以使用append()方法,設定引數,ignore_index=True可以忽略掉索引,
當在DataFrame后邊追加的物件為Series時,必須把ignore_index設為True,或者除非Serise有name屬性,
當追加多列時,設定ignore_index為True可以避免出現索引值重復的例外事件,
此外DataFrame的append()方法在未來的版本即將被取消,將由concat替代,
max() 最大值 & min() 最小值
import pandas as pd
data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]
index = [1, 2, 3]
columns = ['語文', '數學', '英語']
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("================================")
df_max = df.max()
print(df_max)
print("================================")
df_min = df.min()
print(df_min)
median() 中位數
import pandas as pd
data = [[110, 120, 110], [130, 130, 131], [115, 120, 130]]
columns = ['語文', '數學', '英語']
df = pd.DataFrame(data=data, columns=columns)
print(df)
print("================================")
print(df.median())
mode() 眾數
import pandas as pd
data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]
columns = ['語文', '數學', '英語']
df = pd.DataFrame(data=data, columns=columns)
print(df)
# 三科成績的眾數
print(df.mode())
# 每一行的眾數
print(df.mode(axis=1))
# “數學”的眾數
print(df['數學'].mode())
var() 方差
import pandas as pd
data = [[110, 113, 102, 105, 108], [118, 98, 119, 85, 118]]
index = ['小黑', '小白']
columns = ['物理1', '物理2', '物理3', '物理4', '物理5']
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)
print("========================================")
print(df.var(axis=1))
std() 標準差
import pandas as pd
data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]
columns = ['語文', '數學', '英語']
df = pd.DataFrame(data=data, columns=columns)
print(df)
print("=============================")
print(df.std())
quantile() 分位數
以35%分位數為例
import pandas as pd
# 創建DataFrame資料(數學成績)
data = [120, 89, 98, 78, 65, 102, 112, 56, 79, 45]
columns = ['數學']
df = pd.DataFrame(data=data, columns=columns)
print(df)
print("============================")
# 計算35%的分位數
x = df['數學'].quantile(0.35)
# 輸出淘汰學生
print(df[df['數學'] <= x])
關于其他資料型別,如Timestamp,也可以使用分位數quantile()方法,
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame({'A': [1, 2],
'B': [pd.Timestamp('2019'),
pd.Timestamp('2020')],
'C': [pd.Timedelta('1 days'),
pd.Timedelta('2 days')]})
print(df)
print("==============================")
print(df.quantile(0.5, numeric_only=False))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/439204.html
標籤:AI