第一参加阿里天池举办的比赛,关于美年双高预测的比赛,成绩0.08。因为之前只学习过理论,没有具体做过项目,对python会一些,但对pandas基本从零开始。比赛初期基本copy大佬的数据处理部分的代码,后面再在此基础上修改。天池的比赛,比较贴近实际的项目,还是很有参与价值的。在这个比赛中,我也认识到了特征工程的重要性,特征决定了算法的上限,模型是无限接近上限的手段。所以特征工程非常重要,而pandas是数据处理重要模块。
1 读取存入文件:
train = pd.read_csv('../data/meinian_round1_train_20180408.csv', sep=',',encoding='gbk')
table_id_group.to_csv('../data/part_tabid_size.csv',encoding='utf-8')
第一参数:文件路径,注意用反斜杆,或者用双正斜杠。
2 DataFrame的创建:
字典创建:
data= {data = {'state':['Ohio', 'Ohio'],'year':[2000, 2001],'pop':[1.5,1.7]}
Train = pd.DataFrame(data, index=['2','3','4','5'])
series创建:
data = {'state':Series(['Ohio', 'Ohio']),'year':Series([2000, 2001]), 'pop':Series([1.5,1.7])}
Train= DataFrame(data,index=['2','3','4','5'])
3 DataFrame的行列索引:
行选择
data=Train.iloc[1:3]
data=Train.loc[1:3,['state']]
列选择
data = Train['state']
data = Train[Train.columns[1]]
4 DataFrame操作
拼接操作
part1_2 = pd.concat([data_part1,data_part2],axis=0)
axis =0 按行拼接,axis=1按列拼接
part1_2 = pd.DataFrame(part1_2).sort_values(by='vid',ascending=True).reset_index(drop=True)
part1_2.dropna(axis=0,how='all')
part1_2.dropna(axis=0,how='any')
part1_2.dropna(axis=0,thresh=1)
填充NAN的行列
part1_2.fillna({1:0,2:0.5})#第1列填充0,第2列填充0.5
part1_2.fillna(method='ffill')#用前1列的值替代当前NAN
分组
part1_2.groupby(['vid']).size().reset_index()