whystea1

xxxyyyxxxok發表於2024-07-28
更改順序 insert、pop df.insert(0,'a',df.pop('a')) 分組排序 df['班級Python成績排名'] = df.groupby('班級')['Python成績'].rank(method='min', ascending=False) 離散化 df['class']=df.cut(df['data'],q=2,label=['一類','二類']) df['class']=df.cut(df['data'],bins=[1,5,10],label=['一類','二類']) df['class']=df.qcut(df['data'],q=2,label=['一類','二類']) 分組-by的列不做index df.groupby(by=,groupkey=False) 預設為true 需驗證是透過groupkey 還是reset_index 缺失率 #列 #缺失率 df.isnull().mean() #缺失個數 df.isnull().sum() #缺失率高於0.8的列個數 (df.isnull().mean()>0.8).sum() #行 #缺失率 df.isnull().mean(axis=1) #缺失個數 df.isnull().sum(axis=1) #缺失率高於0.8的樣本個數 (df.isnull().mean(axis=1)>0.8).sum() 刪除缺失資料 #行 #刪除全部缺失的行記錄 df.dropna(how='all',inplace=Ture) #刪除存在缺失的行記錄 df.dropna(how='any',inplace=Ture) #刪除缺失率高於20%的行記錄 -缺失率高於20%不要 -完好資料高於80%的要 df.dropna(thresh=0.8*df.shape[1])) #刪除A和B列存在缺失的行記錄 df.dropna(subset=['A','B'],how='any') #列 axis=1 #刪除全部缺失的列記錄 df.dropna(how='all',inplace=Ture,axis=1) #刪除存在缺失的列記錄 df.dropna(how='any',inplace=Ture,axis=1) #刪除缺失率高於20%的列記錄 -缺失率高於20%不要 -完好資料高於80%的要 df.dropna(thresh=0.8*df.shape[0],axis=1) #刪除index為5、6、7存在缺失的列記錄 df.dropna(subset=[5,6,7],how='any',inplace=True) 參看資料分佈 df.hist() plt.tight_layout() plt.show() 更改資料型別 df['A']=df['A'].astype(float) 流程 去除缺失-> 缺失填補->去除異常->歸一化->挑選特徵/降維->離散化 設定資料格式 pd.set_option('display.precision', 2) df['A'] = df['A'].map('{:.2f}'.format) df = df.round(2) df_str = df.to_string(index=False)