导入pandas模块
import pandas as pd
from pandas import Series,DataFrame
读取.csv数据
data = pd.read_csv('ccf_offline_stage1_train.csv')
打印最后10行数据
print(data.tail(10))
打印前10行数据
print(data.head(10))
如何知道数据情况
print(data)
直接显示:[113640 rows x 6 columns]
添加一项
data['Probability']= 0.5
取得行数:
data.shape[0]
取得列数:
data.shape[1]
循环语句:
for i in range(5):
print(i)
生成随机数:(0到1之间)
import random
random.random()
保存文件
data.to_csv('b.csv',columns=['User_id','Coupon_id','Date_received','Probability'])
保存文件,不要索引,不要头
data.to_csv('b.csv',columns=['User_id','Coupon_id','Date_received','Probability'],index=False,header=False)
将某列赋值为随机数
for i in range(data.shape[0]):
data.iat[i,6]=random.random()
去掉NaN数据:
data.dropna(axis=0,how='any')#这一句data还是不会变化的
data2=data.dropna()#这样新生成个data2
发现数据居然是null,null和NaN是不一样的,所以不能使用dropna函数去除!
可以看一些统计数据:
data["Probability"].describe()
选择所有不是null的数据
data = data[data['Probability'] != "null"]
取出某几行:
d1 = data[1:4]
print(d1)
条件取出几行:
d1 = data[data.Merchant_id<100]
print(d1)
条件取出几列
#列的顺序可以变换
d1 = data[ ['Date','Merchant_id'] ]
print(d1)
将pandas数组转numpy数组的方法:
import numpy as np
d2 = np.array(d1)
print(d2)
或者:
d2 = d1.values
print(d2)
最后的输出结果:
[20160217 20160516 20160626 …, 20160512 20160322 20160321]
累计特定列各个值出现的次数
t = OffTrainP[['User_id']]
t['FUser1']=1#特征1
t = t.groupby('User_id').agg('sum').reset_index()#求和
将统计的次数作为新列加入
FUser = pd.merge(FUser,t,on=['User_id'],how='left')
根据条件给某列赋值赋值
df.loc[df['date']!="null",'labels']=1
强制转换类型
t['FUM4'] = t['FUM4'].astype(float)
ROC的AUC计算
temp = rf.predict(TestFeature)
fpr,tpr,thresholds = metrics.roc_curve(TestFlag, temp)
ACC[0] = metrics.auc(fpr, tpr)
将满就送和直接折扣区分出来:
原始数据:
Coupon_id Discount_rate temp
0 3 0.9 16
1 7 50:5 1
2 8 100:10 97
3 14 50:5 145
4 20 50:10 24
def GetCouponType(s):
t = s.find('.')
return t
test.Discount_rate = test.Discount_rate.astype(str)
test['CType'] = 0
test.CType = test.Discount_rate.apply(GetCouponType)
输出结果:
Coupon_id Discount_rate temp CType
0 3 0.9 16 1
1 7 50:5 1 -1
2 8 100:10 97 -1
3 14 50:5 145 -1
4 20 50:10 24 -1
将折扣直接取出作为特征:
test['Crate'] = 0
test.loc[test['CType']==1,'Crate'] = test.Discount_rate
计算折扣
def GetCrate(s):
s = s.split(':')
if(len(s)!=2):
return 0#不是满就送方式
a = (float)(s[0])
b = (float)(s[1])
return 1-(b/a)
test.loc[test['CType']!=1,'Crate'] = test.Discount_rate.apply(GetCrate)
同理,计算折扣起始金额
test['CStart'] = 0#起始折扣
def GetCStart(s):
s = s.split(':')
if(len(s)!=2):
return 0#不是满就送方式
a = (float)(s[0])
return a
test.loc[test['CType']!=1,'CStart'] = test.Discount_rate.apply(GetCStart)