天池比赛中使用的一些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)
发布了85 篇原创文章 · 获赞 30 · 访问量 11万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览