当前位置: 首页 > 后端技术 > Python

Python数据分析常用高阶函数

时间:2023-03-26 15:02:30 Python

作者|CDA数据分析师来源|CDA数据科学研究所mapmap(function,iterable,...)的第一个参数是函数的第二个参数,是一个可迭代对象(Lists、strings等)map返回对函数执行操作的结果可迭代对象中的每个元素。例如:deffun(x):returnx*3l=[0,1,2,3,4,5]l_m=map(fun,l)print(list(l_m))原来是[0,1,2,3,4,5]并且运行map后返回的结果为[0,3,6,9,12,15]相当于对可迭代对象中的每个元素进行*3操作,即方式我们给函数操作,然后返回一个值。这里需要注意的是,map()直接返回了一个的对象,我们需要使用list函数来释放里面的元素。同时,map函数的好朋友是lambda。Lambda匿名函数经常组合作为map的第一个参数。比如print(list(map(lambdax:x*3,l)))返回的结果还是[0,3,6,9,12,15]zipzip()将多个可迭代对象的元素组合成元组序列l=['a','b','c']n=[1,2,3]print(list(zip(l,n)))[('a',1),('b',2),('c',3)]类似于map,zip返回azip的元组迭代器对象,我们需要用list来释放它的元素filterfilter(function,sequence)第一个参数是afunction,第二个参数是一个可迭代对象,最后返回的是可迭代对象满足function请求的元素。因此也称为过滤。long=[1,2,3,4,5]list(filter(lambdax:x%2==0,long))#查找偶数。#filter函数返回的是迭代器,所以需要和list进行转换,释放元素。na_position:#{'first','last'},默认'last',默认缺失值在最后importpandasaspdimportnumpyasnpa=np.random.randint(low=0,high=100,size=(11,2))data=pd.DataFrame(a)data.apply(lambdax:x*10)[*data.columns]=["z1",'z2']||z1|z2||---:|----|----||0|16|13||1|57|0||2|36|16||3|76|86||4|88|64||5|12|24||6|86|59||7|28|61||8|44|29||9|56|91||10|5|4|data.sort_values(by="z1",ascending=False)||z1|z2||---:|----|----||4|88|64||6|86|59||3|76|86||1|570||9|56|91||8|44|29||2|36|16||7|28|61||0|16|13||4|data.sort_values(by="z2",ascending=False)||z1|z2||---:|----|----||9|56|91||3|76|86||4|88|64||7|28|61||6|86|59||8|44|29||5|12|24||2|36|16||0|16|13||10|5|4||1|57|0|导入randomrandom.seed=1234将熊猫导入为pdimportnumpyasnp#a=np.random.randint(low=0,high=100,size=(10,6))data=pd.DataFrame(a)data.apply(lambdax:x*10)[*data.columns]=["z1",'z2',"z3",'z4',"z5",'z6']data.sort_values(by=8,ascending=False,axis=1)||z3|z4|z1|z2|z5|z6||----:|------|------|------|------|------|-----||0|89|63|65|45|61|84||1|51|18|75|22|28|29||2|44|64|18|13|51|81||3|18|29|17|47|4|53||4|93|85|15|83|29|70||5|19|74|33|83|15|456|76|66|53|21|35|48||7|58|46|31|40|93|55||8|95|93|87|54|11|7||9|93|62|17|42|65|80|sortsort(key,reverse)这个是listkey的方法:是排序条件reverse:表示是否倒序,默认是从小到大,默认是Falsex=['mmm','mm','mm','m']x.sort(key=len)print(x)#out:['m','mm','mm','mmm']y=[3,2,8,0,1]y.sort(reverse=True)print(y)#[8,3,2,1,0]#True是倒序,False是正序sorted可以对所有可迭代对象进行排序并且不会改变原来可迭代对象的结构,而是生成一个新的数据。#sorted(L)返回排序后的L而不改变原来的LL=[('b',2),('a',100),('c',30),('d',48)]sorted(L,key=lambdax:x[1])#out:#[('b',2),('c',30),('d',48),('a',100)]排序(L,key=lambdax:x[0])#out:[('a',100),('b',2),('c',30),('d',48)]Enumerateenumerate是一个内置函数,它返回包含列表的索引和值的元组迭代器。当您需要在循环中获取可迭代对象的每个元素及其索引时,通常会使用此函数。示例代码:letters=['a','b','c','d','e']fori,letterinenumerate(letters):print(i,letter)返回的结果0a1b2c3d4eExerciseZipandEnumerateinPython[相关练习]使用zip编写一个for循环,创建一个字符串,指定每个点的标签和坐标,并将其附加到列表点。每个字符串应采用格式标签:x,y,z。例如,第一个坐标的字符串为F:23、677、4。