whystea1
更改順序 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)