11 ,pd 高級 :空值補 0,去重,聚合函數,groupby ,pivot_table

1 ,空值,全部幹掉 :data = data.dropna(axis=0)

  1. 代碼
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 空值處理 : 全部去掉,刪除行,還剩下的數據 (714, 6)
    data = data.dropna(axis=0)
    print(data)

2 ,去重 : data[“Pclass”].to_frame().drop_duplicates()

  1. 目的 : 船艙等級有多少種
  2. 代碼 :
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 空值處理 : 全部去掉,刪除行,還剩下的數據 (714, 6)
    data = data.dropna(axis=0)
    # 船艙等級有多少種 :
    res = data["Pclass"].to_frame().drop_duplicates()
    print(res)
===============================
   Pclass
0       3
1       1
9       2

3 ,聚合,平均數 : data.pivot_table(index=“x”,values=“x”,aggfunc=np.mean)

  1. 目的 : 求男女生還率
  2. 代碼 :
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 空值處理 : 全部去掉,刪除行,還剩下的數據 (714, 6)
    data = data.dropna(axis=0)
    # 聚合函數 : 分組列,計算列,函數
    res = data.pivot_table(index="Sex",values="Survived",aggfunc=np.mean)
    print(res)
    print(type(res))
=====================================
        Survived
Sex             
female  0.754789
male    0.205298
<class 'pandas.core.frame.DataFrame'>
  1. 得到 : dataframe
  2. 取一個值 : 女性倖存率

4 ,聚合,結果取值 : res.loc[“female”][0]

  1. 目的 :
    從結果中把一個具體的元素取出來
  2. 代碼 :
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 空值處理 : 全部去掉,刪除行,還剩下的數據 (714, 6)
    data = data.dropna(axis=0)
    # 聚合函數 : 分組列,計算列,函數
    res = data.pivot_table(index="Sex",values="Survived",aggfunc=np.mean)
    print(res)
    print("=========================")
    res = res.loc["female"][0]
    print(res)
    print(type(res))
====================================
        Survived
Sex             
female  0.754789
male    0.205298
=========================
0.7547892720306514
<class 'numpy.float64'>

5 ,聚合,總數 :groupby

  1. 目的 : 每個等級的人數
  2. 精華代碼 :
data.groupby(by="Pclass").size()
  1. 代碼 :
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 空值處理 : 全部去掉,刪除行,還剩下的數據 (714, 6)
    data = data.dropna(axis=0)
    # 聚合計算
    res = data.groupby(by="Pclass").size()
    print(res)
=========================================================
Pclass
1    186
2    173
3    355
dtype: int64

6 ,groupby 中的 size() 和 count()

  1. 意義不同 :
    1 ,size : 一共幾行
    2 ,count : 不算 Nan ,幾行
  2. 作用對象不同 :
    1 ,size : 針對整體
    2 ,count : 針對每一列

7 ,聚合,總和 :pivot_table

  1. 目的 : 每個等級,船票總額
  2. 精華代碼 :
res = data.pivot_table(index="Pclass",values="Fare",aggfunc=[np.sum,np.mean])
  1. 代碼 :
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 聚合運算,每個等級的船票總額
    res = data.pivot_table(index="Pclass",values="Fare",aggfunc=[np.sum,np.mean])
    print(res)
===========================================
               sum       mean
              Fare       Fare
Pclass                       
1       18177.4125  84.154687
2        3801.8417  20.662183
3        6714.6951  13.675550

8 ,groupby 綜合練習 : data.groupby(by=“Pclass”).agg(gz)

  1. 目的 :
    1 ,不同船艙等級
    2 ,共幾人
    3 ,倖存率
    4 ,共花了多少錢
    5 ,平均船票單價
    6 ,做好之後,將列名改過來
  2. 全部代碼 :
if __name__ == '__main__':
    # 讀文件 csv :
    data = pd.read_csv("titanic_train.csv")
    # 我們需要的數據 :
    cols = ["PassengerId","Pclass","Fare","Survived","Sex","Age"]
    data = data[cols]
    # 計算規則
    gz = {"PassengerId":np.size,"Survived":np.mean,"Fare":np.sum}
    # 聚合運算
    res = data.groupby(by="Pclass").agg(gz)
    # 改列名
    res.rename(columns={"PassengerId":"all_people","Fare":"all_morney","Survived":"sur_people"},inplace=True)
    print(res)
===============================================
        all_morney  all_people  sur_people
Pclass                                    
1       18177.4125         216    0.629630
2        3801.8417         184    0.472826
3        6714.6951         491    0.242363

9 ,關於 pivot_table :

  1. 常用函數 :
np.size : 共幾個,算上空值
np.mean : 平均值
np.sum  : 總和
np.max  : 最大值
np.min  : 最小值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章