1. 程式人生 > >Pandas自定義函式

Pandas自定義函式

(1)以年齡降序為索引排列資料

import pandas as pd

import numpy as np

titanic_survival = pd.read_csv(r".......檔案位置......")

new_titanic_survival = titanic_survival.sort_values(“Age”, ascending=False)     #按照年齡降序排列資料

結果如下圖:

(2)生成新的索引

titanic_reindexed = new_titanic_survival.reset_index(drop=Ture)     #(True)刪除舊的索引生成新的的索引,(False)新舊索引都存在

print(titanic_reindexed.loc[0:5])                     #檢視前六行

結果如下(可以與上圖進行對比):

 

(3)自定義函式

把第100行資料返回:

def hundredth_row(column):

        hundredth_item = column.loc[99]

        return hundredth_item

hundredth_row = titanic_survival.apply(hundredth_row)

print(hundredth)               

 

計算每一列的空行個數

def not_null_count(column):

        column_null = pd.isnull(column)

        null = column[column_null]

        return len(null)

column_null_count = titanic_survival.apply(not_null_count)  

print(column_null_count)

結果如下:

替換1,2,3為First Class,Second Class, Third Class

def which_class(row):

        pclass = row['Pclass']

        if   pd.isnull(pclass):

                   return  "Unknown"

         elif  pclass == "1":

                    return "First Class"

          elif  pclass  == "2":

                   return  "Second Class"

          elif pclass == "3":

                   return   "Third Class"

classes   = titanic_survival.apply(which_class)

print(classes)

結果為:

 

把年齡小於18的值返回True,否則返回False

def is_minor(row):

          if row["Age"] < 18:

                  return True

         else:

                  return False

minors = titanic_survival.apply(is_minor, axis =1)

print(minors)

 

判斷年齡,不存在返回“Unkonw”,小於18返回mnior,大雨18返回adult

def generate_age_lable(row):

         age = row["Age"]

         if pd.isnull(age):

                return  "Unknow"

         elif  age < 18:

               return "minor"

         else:

              return "adult"

age_lables = titanic_survival.apply(generate_age_lable,   axis = 1)

print(age_lables)

結果如下:

檢視不同年齡段的獲救比率:

titanic_survival["age_lables"]  =  age_lables

age_group_survival  = titanic_survival.pivot_table(index = "age_lables",  values = "survived")

print("age_group_survival")

結果如下:

可以看出,未成年獲救的概率很高