# pandas新增數據列(直接賦值、apply、assign、分條件賦值) # pandas在進行數據分析時,經常需要按照一定條件創建新的數據列,然后進行進一步分析 # 1 直接賦值 # 2 df.apply方法 # 3 df.assig方法 # 4 按條件選擇分組分別賦值 import pandas as pd # 0 讀取csv數據到dataframe df = pd.read_csv("beijing_tianqi_2018.csv") print(df.head()) # 1 直接賦值的方法 # 實例:清理溫度列,變成數字類型 # 替換掉溫度的后綴 df.loc[:,'bWendu'] = df['bWendu'].str.replace("℃","").astype('int32') df.loc[:,'yWendu'] = df['yWendu'].str.replace("℃","").astype('int32') # 實例:計算溫差 # 注意:df["bWendu"]其實是一個Series,后面的減法返回的是Series df.loc[:,"wencha"] = df["bWendu"] - df["yWendu"] print(df.head()) # 2 df.apply方法 # 實例:添加一列溫度類型: # 1 如果最高溫度大於33度就是高溫 # 2 如果最低溫度低於-10度就是低溫 # 3 否則就是常溫 def get_wendu_type(x): if x["bWendu"] > 33: return "高溫" if x["yWendu"] < -10: return "低溫" else: return "常溫" # 注意需要設置axis ==1 ,這是series的index是columns df.loc[:,"wendu_type"] = df.apply(get_wendu_type,axis=1) # 查看溫度類型的計數(高溫、低溫、常溫各有多少天) print(df["wendu_type"].value_counts()) # 3 df.assign方法 # 實例:將溫度從攝氏度變成華氏度 # 可以同時添加多個新的列 df.assign( yWendu_huashi = lambda x : x['yWendu']*9/5 +32, bWendu_huashi = lambda x : x['bWendu']*9/5 +32 ) print(df['yWendu_huashi']) # 4 按條件選擇分組分別進行賦值 # 按條件選擇數據,然后隨這部分數據賦值新列 # 實例:高溫溫差大於10度,則認為溫差大 # 先創建空列(這是第一種創建新列的方法) df['wencha_type'] = "" df.loc[df["bWendu"]-df["yWendu"] > 10,"wencha_type"] = "溫差大" df.loc[df["bWendu"]-df["yWendu"] <=10,"wencha_type"] = "溫差正常" df["wencha_type"].value_counts()
