刷题知识点随记

本文内容主要来自牛客网

VLOOKUP的使用方法
VLOOKUP(要查找的值,查找的区域,查找区域返回的列,查找模式)
第4个参数,查找模式:0表示精确匹配,1表示模糊匹配
比如查询当前用户id的性别:
VLOOKUP(用户id,A2:C6,性别,1)

P(AB)=P(A)*P(B|A)=P(B)*P(A|B)
2P(AB)=P(A)*P(B|A)+P(B)*P(A|B)
P(AB)=(P(A)*P(B|A)+P(B)*P(A|B))/2
由于:P(B|A)<=1,P(A|B)<=1
所以:P(A)*P(B|A)+P(B)*P(A|B)<=P(A)+P(B)
因此:P(AB)<=(P(A)+P(B))/2

having的使用条件是分组后筛选,也就是先分组,再having,即用在group by之后

在EXCEL输入以零开头的文本型数字时需在输入的数据前面加`

散点图可以用来刻画两个变量 之间是否具有相关关系

二项分布的期望E(X)=np,均值D(X)=np(1-p)

泊松分布中期望和均值都为λ

正态分布:正态分布具有集中性和对称性;正态分布的均值和方差能够决定正态分布的位置和形态;标准正态分布的均值为0,方差为1

常用的最优模型选择方法是:增加正则化项;交叉验证;增加罚项

反映数据离散程度:方差、标准差、极差

sum(a,b) 指的是a+b
sum(a:b) 才是a到b的所有值之和

假设一个元组在子查询1中出现m次,在子查询2中出现n次,该元组在“子查询1 Union ALL 子查询2”中出现m + n次。如果将union all改成union则就是1次
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序

抽样估计的优良标准应满足以下三个方面的条件:
1.无偏性。即要求所有可能样本指标的平均数(样本指标的数学期望)与被估计的总体参数之间没有偏差。虽然每一次的样本指标值和总体指标值之间都可能有误差,但在多次反复的估计中,所有抽样指标值的平均数应该等于所估计的总体指标值本身,即用样本指标去估计总体参数,平均说来是没有偏误的。
2.一致性。用统计量估计总体参数要求当样本的单位数充分大时,抽样指标也充分地靠近总体指标。就是说,随着样本单位数n的无限增加,统计量和未知的总体参数之差的绝对值小于任意小的数,它的概率也趋近于1,即实际上是几乎肯定的。
3.有效性。以统计量估计总体参数时,优良估计量的方差应该比其他估计量的方差小。例如用样本平均数或总体某一变量值来估计总体平均数,虽然两者都是无偏的,而且在每一次估计中,两种估计量和总体平均数都可能有离差,但样本平均数更靠近于总体平均数的周围,平均说来其离差比较小。所以对比说来,抽样平均数是更为有效的估计量。

主要的时间序列因素有以下四种:
(1)长期趋势(Seuclar trend)。它是事物在长时期内增减的变动趋势。
(2)季节变动(Seasonal vari-tion)。是在每期内重复出现的周期性变动。一般季节变动周期为12个月。通常农产品的季节变动大于工业产品,销费品大于生产资料,非耐用品大于耐用品。
(3)循环变动(Cyelical variction)。它是以期数为周期而重复出现的周期性变动。由于这种周期性变动的周期长短不规律,预测方法也无规律可循。一般在短期预测中把循环变动因素当作长期趋势的一部分,不单独分析。
(4)不规则变动(Irreglar variation)。指由各种复杂因素引起的,在时间序列曲线上形成很多微小波动性变动。这种变动也无规律可循,难以预测分析,在时间序列中,通常是采用移动平均法或指数平滑法,以消除被动的干扰。

三种常见的聚类算法:
(1) K-means聚类、K-中心点聚类、CLARANS算法,DIANA算法、BIRCH算法、Chameleon算法
(2) EM算法
(3) OPTICS算法、DBSCAN算法

substring(arg1, arg2, arg3), arg1:待处理字符串;arg2:截取开始下标(本题为1);arg3:截取字符串长度(从1开始到2再到0,共三个字符),所以为substring(‘109.120.59.63’,5,3) = 120

python中的标识符:
1)第一个字符必须是字母表中字母或下划线 _ 。
2)标识符的其他的部分由字母、数字和下划线组成。
3)标识符对大小写敏感。
4)不可以是python中的关键字,如False、True、None、class等。
注意:self不是python中的关键字。类中参数self也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。

Python切片不提示越界

dicts = {'one': 1, 'two': 2, 'three': 3}
dicts['four'] = 4
dicts['one'] = 6
print(dicts)

输出:{'one': 6, 'two': 2, 'three': 3, 'four': 4}
a = 100
b = 14
print(divmod(a, b))

输出:(7,2)

Python中的divmod() 函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。

字典是python中唯一的映射类型,阐述了键与键值之间的对应关系

one = (1, 2, 3)
two = ('a', 'b')
print(one+two)

输出:(1, 2, 3, 'a', 'b')

tuple不可以改变,但是可以用于相加

python中的enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
刷题知识点随记_第1张图片

find() 和 index() 方法都是返回元素第一次出现的索引,区别是:find() 找不到返回-1,而index()找不到会报错。

刷题知识点随记_第2张图片
strs.replace(‘a’, ’ * ‘, 2):将strs中的头2个(如果有)字符’a’替换为’*',2为最大替换次数

判断一个年份是否是闰年:
1.年份除以4取余等于0并且年份除以100取余不等于0
2.年份除以400取余等于0
以上两个条件满足一个,那么这个年份就是闰年。

strip()方法 删除string字符串开头和末尾的指定字符串
rstrip()方法 删除string字符串末尾的指定字符

python中的@ * .setter装饰器可以总结为两个作用:
对要存入的数据进行预处理
设置可读属性(不可修改)
注意:@ * .setter装饰器必须在@property装饰器的后面,且两个被修饰的函数的名称必须保持一致,* 即为函数名称。

strs = ['a', 'ab', 'abc', 'python']
y = filter(lambda s: len(s) > 2, strs)
tmp = list(map(lambda s: s.upper(), y))
print(tmp)

输出:['ABC', 'PYTHON']

filter(function, iterable) 其中function为判断函数,iterable为可迭代对象。通过function函数来对iterable可迭代对象进行筛选
filter(lambda s:len(s) > 2, strs) 则意为从strs中筛选出长度大于2的字符串,注意:这里Python2.7 返回的是列表,Python3.x 返回迭代器对象
map() 会根据提供的函数对指定序列做映射。
map(function, iterable, …) 其中function为函数,iterable为一个或多个可迭代对象,iterable每一个元素调用 function 函数,返回包含每次 function 函数返回值的新迭代对象
list(map(lambda s: s.upper(), y) 则意为将迭代对象y中所有的字母转换为大写并返回

# -*- coding:utf-8 -*-
def test(a, b, *args):
    print(a)
    print(b)
    print(args)
 
test(11, 22, 33, 44, 55, 66, 77, 88, 99)
输出:11 22 (33, 44, 55, 66, 77, 88, 99)

a,b 为位置参数,*args 为不定长度参数。
当 a,b 位置各传入一个值后,剩下的值被传入 *args,被放入一个元组中

import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a  # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
c = copy.copy(a)# 浅复制,只会拷贝父对象,不会拷贝父对象中的子对象,所以若a的子对象变则c变,但是父对象变c不会变
d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变也不变
a.append(5) # 改变父对象
a[4].append('c')  #改变父对象中的 ['a', 'b']子对象

a = = [1,2, 3, 4, [‘a’, ‘b’, ‘c’], 5]
b = = [1,2, 3, 4, [‘a’, ‘b’, ‘c’], 5]
c = = [1,2, 3, 4, [‘a’, ‘b’, ‘c’]]
d = = [1,2, 3, 4, [‘a’,‘b’]]

sets = {1, 2, 3, 4, 5}
print(sets[2])

运行会报错

python中集合set主要利用其唯一性,及并集|、交集&等操作,但不可以直接通过下标进行访问,必须访问时可以将其转换成list再访问

#实现输出1-10中的奇数
for i in range(1, 11):       
    if i % 2 == 0:           
        continue     
    print(i)
 
break是终止循环的执行,continue是结束本次循环,又返回到开头运行
strs = 'I like python and java'
one = strs.find('n')
print(one)  #12
two = strs.rfind('n')
print(two)   #15

find是从前往后找,返回成功匹配的第一个字符的位置索引
rfind也是从前往后找,但是返回最后一次成功匹配的字符的位置索引

nums = set([1,2,2,3,3,3,4])
print len(nums)  #4

set 类型的特性是会移除集合中重复的元素,因此变量 nums 实际上等于:
nums = {1, 2, 3, 4}
因此数据的长度为 4

python中凡是 "_ _ " 开头的变量,都是私有变量,私有变量继承需要定义同名变量,__ slots __是python类中的特殊变量,用于限制实例对象的属性,如 __ slots __=‘x’,‘y’,那么实例对象的属性就只能从这些里面找,因此它起的是限制效果而非自动获得

你可能感兴趣的