散乱10

归一化数值:
方程中数字差值最大的属性对计算结果的影响最大,也就是说,每年获取的飞行常客里程数对于计算结果的影响将远远大于表2-3中其他两个特征— 玩视频游戏的和每周消费冰洪淋公升数— 的影响。而产生这种现象的唯一原因,仅仅是因为飞行常客里程数远大于其他特征值。但海伦认为这三种特征是同等重要的,因此作为三个等权重的特征之一,飞行常客里程数并不应该如此严重地影响到计算结果。
在处理这种不同取值范围的特征值时,我们通常采用的方法是将数值归一化,如将取值范围处理为0到1或者-1到1之间。下面的公式可以将任意取值范围的特征值转化为0到1区间内的值:
n e w V a l u e = (o l d V a l u e - m i n ) / (max-min)
虽然改变数值取值范围增加了分类器的复杂度,但为了得到准确结果,我们必须这样做。


python求当前日期30天前的日期:
import datetime
noww=datetime.datetime.now()
end_day=datetime.date(noww.year,noww.month,noww.day)
first_day_month=end_day-datetime.timedelta(days=30)

 

 

取DateFrame里某个时间段的数据:
visit_df=df1.set_index('操作日期')[str(first_day_month):str(end_day)]

 


查看某个文件夹里有哪些文件:
import os
os.listdir(r'E:\暂存\登录用户量化表20190114\简化版')

 


pd.Series.str.contains巧用正则表达式:
visit_df.户型[visit_df.户型.str.contains('[6-9]室|1[0-8]室',regex=True)]='6室以上'

 

 


合并两个表时,如果主键包含NA值时要注意:
pd.merge时两个聚合的表,如果合并主键都含有NA值会出错。

 

DataFrame删除列以及删除包含某列NA值的行:
zc_join_call.drop(['注册时间','用户id'],axis=1).dropna(subset=['客户信息'])

 


读取文件时,路径字符串换行:
df1=pd.read_excel('E:\\暂存\登录用户量化表20190114\\简化版\\2019年(5.1-6.18)-登录用户行为报表(简化版).xlsx')
换行后:
df1=pd.read_excel('E:\\暂存\登录用户量化表20190114\\简化版\\'
                  '2019年(5.1-6.18)-登录用户行为报表(简化版).xlsx')


DataFrame替换修改某些值:
#把“租售类型”的值统一修改为“买卖”与“租赁”
visit_df.租售类型.replace({'二手房':'买卖','租房':'租赁'},inplace=True)

 

DataFrame修改列名:
visit_df.rename(columns={'用户ID':'用户id','小区':'小区名称',\
                 '区域':'房源所在区域','板块':'房源所在板块',\
                 '户型':'房源户型','预算':'房源预算'},inplace=True)

 


DataFrame调整列的位置:
#调整列位置
order=['注册时间','用户id','手机号','楼盘名称','区域','板块','面积','户型',\
       '预算','租售类型','分类']

df_last=df_last[order]

 


#用户id统一小写
visit_df.用户id=visit_df.用户id.str.lower()

 


#用户id去除空格
visit_df.用户id=visit_df.用户id.str.strip()

 

 

返回groupby对象里每个分组的众数:
from scipy import stats
func_m1=lambda x:stats.mode(x)[0]#众数可能有多个,随机取一个
user_liulan_bk=visit_df.groupby('用户id').agg({'房源所在板块':func_m1})

 

 

以用户id分组后拼接每个用户id的浏览小区名称:
def collect_set(group):
    return set(group.values)#以集合的方式存储值,但不方便后期去重(因为set无法哈希)

def collect_tuple(group):
    return tuple(group.values)#以元组的形式存储,方便后期去重

visit_df_xq=visit_df_most[['用户id','小区名称']].drop_duplicates().\
groupby('用户id').agg(collect_tuple)

Out[18]: 
                                                           小区名称
用户id                                                           
u100000307                                               (怡福苑,)
u100001259                     (柳营新村, 洛东大楼(洛川东路494弄), 利丰苑, 永乐苑)
u100002018                                              (安天大厦,)
u100002849    (茗馨公寓, 民东公寓(民主东街87弄), 绿地清漪园(德华路79弄), 德华一村(德华路3...
u100003005                    (申华公寓(青艺路181弄), 顺馨佳园, 界龙花苑(60支弄))
u100003609                                              (宜川五村,)
u100003899                                  (淡水湾花园, 永业公寓, 汇龙新城)

 

 

DataFrame增加新列时,会自动传播到所有行:
visit_df_last['分类']='浏览'    
   

 

#删除空值及没有价格的记录
call_df_h.dropna(subset=['预算'],inplace=True)

call_df_h=call_df_h[~call_df_h.预算.isin(['无'])]

 


取某列最大值:
call_df_h.房源面积.max()

 

查看某列数据的数据类型:
call_df_f.客户信息.dtype

 


改变某列数据的数据类型(如转换为文本):
call_df_f.客户信息.astype('str')

 

批量替换掉某列的某些值,替换为空相当于删除:
df_last.面积=df_last.面积.replace('nan','')
df_last.预算=df_last.预算.replace('nan','')

 

对DataFrame进行条件筛选时,每个条件放在小括号内,多个条件间用“|”或“&”连接:
dfqy=denglu[(denglu.区域=='长宁区')|(denglu.区域=='闵行区')|(denglu.区域=='徐汇区')|(denglu.区域=='静安区')]

 


计算某列数据的唯一值个数:
len(dfqy.用户ID.unique())

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值