天池比赛中使用的一些python功能

导入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)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值