pandas 数据归一化以及行删除例程的方法
如下所示:
#coding:utf8 importpandasaspd importnumpyasnp frompandasimportSeries,DataFrame #如果有id列,则需先删除id列再进行对应操作,最后再补上 #统计的时候不需要用到id列,删除的时候需要考虑 #deleterow defrow_del(df,num_percent,label_len=0): #printlist(df.count(axis=1)) col_num=len(list(list(df.values)[1]))-label_len#-1为考虑带标签 ifcol_num<0: print'Error' #printint(col_num*num_percent) returndf.dropna(axis=0,how='any',thresh=int(col_num*num_percent)) #如果有字符串类型,则报错 #datanormalization-1to1 #label_col:不需考虑的类标,可以为字符串或字符串列表 #数值类型统一到float64 defdata_normalization(df,label_col=[]): lab_len=len(label_col) printlabel_col iflab_len>0: df_temp=df.drop(label_col,axis=1) df_lab=df[label_col] printdf_lab else: df_temp=df max_val=list(df_temp.max(axis=0)) min_val=list(df_temp.min(axis=0)) mean_val=list((df_temp.max(axis=0)+df_temp.min(axis=0))/2) nan_values=df_temp.isnull().values row_num=len(list(df_temp.values)) col_num=len(list(df_temp.values)[1]) forrninrange(row_num): #data_values_r=list(data_values[rn]) nan_values_r=list(nan_values[rn]) forcninrange(col_num): ifnan_values_r[cn]==False: df_temp.values[rn][cn]=2*(df_temp.values[rn][cn]-mean_val[cn])/(max_val[cn]-min_val[cn]) else: print'Wrong' forindex,labinenumerate(label_col): df_temp.insert(index,lab,df_lab[lab]) returndf_temp #创建一个带有缺失值的数据框: df=pd.DataFrame(np.random.randn(5,3),index=list('abcde'),columns=['one','two','three']) df.ix[1,:-1]=np.nan df.ix[1:-1,2]=np.nan df.ix[0,0]=int(1) df.ix[2,2]='abc' #查看一下数据内容: print'\ndf1' printdf printrow_del(df,0.8) print'-------------------------' df=data_normalization(df,['two','three']) printdf printdf.dtypes print(type(df.ix[2,2]))
以上这篇pandas数据归一化以及行删除例程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。