python的一些易错

1、python中axis=0 axis=1的理解

  • 1、根据官方的说法,1表示横轴,方向从左到右;0表示纵轴,方向从上到下。
    axis=1时,数组的变化是横向的,而体现出来的是列的增加或者减少。

  • 2、其实axis的重点在于方向,而不是行和列。具体到各种用法而言也是如此
    当axis=1时,如果是求平均,那么是从左到右横向求平均;如果是拼接,那么也是左右横向拼接;如果是drop,那么也是横向发生变化,体现为列的减少。

2、%%time 、%time

%%time打印整个单元格的壁时间,而%time只提供第一行的时间

  • 使用%%time或%time打印2个值:
    • 1.CPU时间
    • 2.壁厚时间

1.%%time
将会给出cell的代码运行一次所花费的时间。

%%time
li = []
for i in range(1000):
    li.append(i ** 2)

#输出    
Wall time: 0 ns

2.%time
将会给出当前行的代码运行一次所花费的时间。

%time [x for x in range(1000)]

Wall time: 0 ns
Out[22]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
12345

3.%timeit
使用Python的timeit模块,它将会执行一个语句100,000次(默认情况下),然后给出运行最快3次的平均值。

%%timeit
li = []
for i in range(1000):
    li.append(i ** 2)
    
321 µs ± 2.03 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

3、pd.read_csv()

pd.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)

1.filepath_or_buffer:(这是唯一一个必须有的参数,其它都是按需求选用的)
文件所在处的路径

import pandas as pd
data1 = pd.read_csv('rating.csv')
   1   258  5
0  2  4081  4
1  2   260  5
2  2  9296  5
3  2  2318  3
4  2    26  4
5  2   315  3
6  2    33  4
7  2   301  5

4、pandas中的 .isin()

**例如 a.isin(b) ,意思就是:b中有的元素在a中也有的有多少个

5.pd.merge()

在这里插入图片描述
在这里插入图片描述

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)

  • left: 拼接的左侧DataFrame对象

  • right: 拼接的右侧DataFrame对象

  • on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。

  • left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。

  • right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。

  • left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。

  • right_index: 与left_index功能相似。

  • how: One of ‘left’, ‘right’, ‘outer’, ‘inner’. 默认inner。inner是取交集,outer取并集。比如left:[‘A’,‘B’,‘C’];right[’'A,‘C’,‘D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。'outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。

  • sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。

  • suffixes: 用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。

  • copy: 始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。

  • indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键,则为left_only。

6、.iloc()

iloc[ : , : ] 前面的冒号就是取行数,后面的冒号是取列数,索引为左闭右开
这里train_feature = 10
在这里插入图片描述

5. KFold, StratifiedKFold,StratifiedShuffleSplit, GroupKFold区别以及Stratified Group KFold 实现

在机器学习,一般不能直接拿整个数据集取训练,而采用cross-validation方法来训练。增强随机性减小噪声等,来减少过拟合,从而有限的数据中获取学习到更全面的信息,让模型泛化能力强。在sklearn中,经常使用的有:KFold, StratifiedKFold,StratifiedShuffleSplit, GroupKFold。逐一解释使用区别,使用一个简单的df。(一般情况下, n_splits=5/10)

在这里插入图片描述

1. KFold 使用

在这里插入图片描述
在这里插入图片描述
注意划分后得到的是针对数据的索引。我们现在只关注其test index,可以发现每次划分得到的索引不是按照class对应的类别均匀划分的,如第一次[2,4,7]对应类别是1,1,0. 其实 train index也一样,2,0,1,2,2,0.这在很多时候是不满足要求的,因为我们很多时候希望每次划分得到的train dataset / valid dataset其中对应的target类别是均匀的。

  • random_state int,RandomState实例或无,默认=无
    当shuffle为True时,random_state会影响索引的顺序,从而控制每个类别的每个折叠的随机性。否则,保留random_state为None。为多个函数调用传递可重复输出的int值

2. StratifiedKFold使用

现在我们知道,KFold不能按照target类别来均匀划分,如果数据集必须按target类别来划分呢?那就要用到 StratifiedKFold。
在这里插入图片描述

3. GroupKFold使用

6、np.random.RandomState()

当给定一个数字作为参数传入时,他会生成一个随机数生成器,生成器.rand()即可获得随机数
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值