从项目代码中学习python的更多应用

从项目代码中学习python的更多应用

在kaggle的一些大赛中,kernel这部分是最有意思的,很多大神将自己的感悟发表出来供大家参考,也会贴上一些代码供大家学习。纯粹的学习python语法未免有些单调,因此在参考别人的项目代码过程中一边理解别人的算法,一边学习python语法就是一个更有趣的学习过程啦。这里我将自己的学习成果整理下来以供以后回看。
一般项目中给出的数据都是csv格式的,采用pandas库读取出来的数据就是dataFrame类型,因此,关于这种类型的学习就更多一些。
1.对Series,dataFrame数据类型的apply方法。
例如:
train=pd.read_csv(‘f:/python/titanic/resources/train.csv’)
train[‘Name_length’] = train[‘Name’].apply(len)
就是对 train[‘Name’] 这个series类型中的每一个数据使用len()函数。
这个方法的好处是快速对index下的参数进行操作,例如这里的取其长度。也可以自己构造函数,例如:dataset[‘IsAlone’]=dataset[‘FamilySize’].apply(lambda x: 1 if x==1 else 0)
2.fillna方法用于缺省值的代替
作用:当数据中存在NaN缺失值时,我们可以用其他数值替代NaN.
例如:frame.fillna(0) 用0代替frame中的NaN
3.pandas.qcut()
按照series中数值出现的频率来划分区域,按照频率同等来划分区域。
例如:a=Series([1,2,3,4,5,6,7,9]), pd.qcut(a,4)
输出:
0 (0.999, 2.75]
1 (0.999, 2.75]
2 (2.75, 4.5]
3 (2.75, 4.5]
4 (4.5, 6.25]
5 (4.5, 6.25]
6 (6.25, 9.0]
7 (6.25, 9.0]
也就是将a中的数分成4份,确保每个区间出现的频率相同。
相似的有pandas.cut()
a=Series([1,2,3,4,5,6,7,9]), pd.cut(a,4)
输出:
0 (0.992, 3.0]
1 (0.992, 3.0]
2 (0.992, 3.0]
3 (3.0, 5.0]
4 (3.0, 5.0]
5 (5.0, 7.0]
6 (5.0, 7.0]
7 (7.0, 9.0]
也是分成四份,但确保的是区间大小相同。
4.pandas.mean(): 计算均值
pandas.std(): 计算标准偏差
5.numpy中的操作
np.isnan(dataset[‘Age’]):将dataset[‘Age’]转换为布尔值,是NaN的为真True
等价于dataset[‘Agte’].isnull()
6.pandas.astype(int):将数据类型改成整数型。
7.SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a DataFrame
报错:显示正在dataframe的一个切片副本上设置数值。
从字面意思就可以看出,原本我们的操作意图可能是对DataFrame进行操作,可是实际的代码是先取出DataFrame的一个切片进行复制之后,在这个副本上进行操作。因此并不能确定最终的结果是修改了DataFrame的一个副本还是仅仅修改了一个临时变量(即切片副本)。
如何修改:按照DataFrame的位置信息index索引来设置该值。例如使用loc
举例:dataset[‘Age’][np.isnan(dataset[‘Age’])] = age_null_random_list 报错 SettingWithCopyWarning
修改为:dataset.loc[np.isnan(dataset[‘Age’]),’Age’] = age_null_random_list 就不会报错啦
8.将train与test放在一起之后,full_data = [train, test],对full_data的操作可以改变train和test
9.Series.ravel(): 将多维数组降为一维,例如本来是Series类型的变量可以变成一维的ndarray

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值