pandas的基本功能(一)
靈活的二進位制操作
-
體現在2個方面
-
支援一維和二維之間的廣播
-
支援缺失值資料處理
-
-
四則運算支援廣播
-
+add - sub *mul /div
-
divmod()分割槽和模運算(返回商和餘數2個結果)
-
案例:a,b=divmod(一維矩陣)
-
-
空值處理
-
矩陣中空值用NaN代替
-
NaN+值=NaN
-
np(numpy).nan表示空值
-
填充空值: fillna(value=值)
-
np.nan == np.nan 結果為False
-
如果a矩陣和b矩陣中有空值 那麼 a == b 結果:False
-
相同:a.equal(b )結果為:True.帶空的矩陣比較推薦使用equal
-
-
-
組合
-
從df2中把df1的資料不全
-
df1.combine_first(df2)
-
-
連線
-
連線二維矩陣
-
df1.concat(df2,axis=0/1)
-
-
連線一維矩陣
-
pd.concat([df1,df2])
-
-
一維二維通用
-
df1.append(df2)
-
-
-
-
統計
-
所有統計函式都支援行或列~~~
-
sum(0/1) mean(0/1)
-
-
統計函式
功能 描述 count
非NA觀測數量 sum
價值總和 mean
價值的平均值 mad
平均絕對偏差 median
算術值的中值 min
最低限度 max
最大值 mode
模式 abs
絕對值 prod
價值的產物 std
貝塞爾校正的樣本標準偏差 var
無偏差 sem
平均值的標準誤差 skew
樣本偏斜(第3時刻) kurt
樣本峰度(第4個時刻) quantile
樣本分位數(值為%) cumsum
累計金額 cumprod
累積產品 cummax
累積最大值 cummin
累積最小值
-
-
統計函式,統計的時候自動跳過空值
-
len(陣列)獲取行數,包括Nan所在的行~~~count(不包括)
-
include
-
#可以指定摘要統計的東西
矩陣.describe(include=['object'])
矩陣.describe(include=['number'])
-
-
最大最小索引
-
最大數和最小數對應的索引位置
-
最大 矩陣.idxmax(axis=0/1)
-
最小 矩陣 .idxmin(axis=0/1)
-
-
-
最常出現值模式
-
a.value_counts() 統計一維陣列中每個元素出現的次數
-
a.mode()統計陣列中出現次數最多的值
-
-
分段/面元
-
cut和qcut
-
共同點
-
都可以分為好多份 pd.cut/qcut(df,4) qcut 是對等的 cut 是隨機的
-
-
不同點
-
pd.cut(df,[陣列]) qcut不支援
-
-
語法 pd.cut(df,[切點列表],right=True/False)
-
示列
#分2組 大於18的為成年,小於18的為未成年,統計個數
a = pd.Series([4,5,5,2,3,1,8,9,3,15,6,45,56,1,56,2,20,4,5,2,1,8,18,1,82,20,25,20,20,12,13,14])
b = pd.cut(a,[0,18,100],labels=['未成年','成年'],right=False)
b.value_counts() -
-
-
-
為矩陣新增處理函式/支援多個函式
-
鏈式寫法
-
(df.pipe(函式名,引數).pipe(函式名,引數).......)
-
-
apply
-
df.apply(函式名,axis=0/1) 為當前行或列新增處理函式
-
示列
#12.判斷年齡是否成年: 18歲以上成年 #成年和未成年獲救比例
"""
1.判斷是否成年
2.
"""
def age_old(b):
c = b['Age']
if c > 18:
return '成年'
elif c < 18:
return '未成年'
else:
return '空值'
#建立新列
df['chegnnian'] = df.apply(age_old,axis=1)
#設定全家的漢子顯示
plt.rcParams['font.size'] = 15
h_j = df.groupby(by=['Survived','chegnnian']).size()
plt.pie(h_j,labels=['成年未獲救','未成年未獲救','空值未獲救','成年獲救','未成年獲救','空值獲救'],shadow=True,autopct='%1.1f%%')
plt.axis('equal') #設定圓的形狀 正圓
plt.show() -
-
-
map
-
df.applymap == df.map()
-
示列
#10. 以下肉類資料來源,food都轉換為小寫,新增一個動物列,而且字串都是小寫
data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon','Pastrami', 'corned beef', 'Bacon','pastrami', 'honey ham', 'nova lox'],
'price': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
data['food'].str.lower()
#新列: 動物列
animal = { 'bacon': 'Pig', 'pulled pork': 'pIg', 'pastrami': 'cOw', 'corned beef': 'Co', 'honey Ham': 'pig', 'nova lox': 'Salmon' }
x = data['food'].map(animal)
data['animal'] = x
data -
-
-
-
-