python數(shù)據(jù)分析系列1.5——map()&apply()&applymap()/sort()&sorted()&argsort()

第二周的作業(yè)是熟悉Python基礎(chǔ),了解pandas數(shù)據(jù)結(jié)構(gòu),這些資料網(wǎng)上很全,所以本文打算總結(jié)一些"長得很像"的函數(shù),關(guān)于概率分布將繼續(xù)在下一篇文章描述。

1.1 map函數(shù)
Python函數(shù)式編程中的map()函數(shù)是將func作用于seq中的每一個元素,并用一個列表給出返回值,可傳入多個seq。

#map(fun,seq[seq1,seq2])
list_a=list(map( lambda x: x%3, range(6)))
list_b= list(map( lambda x, y: x * y, [1, 2, 3], [4, 5, 6] ))
list_c=list(map( lambda x,y: ( x * y, x + y), [1, 2, 3], [4, 5, 6] ) )#將兩個list轉(zhuǎn)成元組

1.2 reduce函數(shù)
reduce函數(shù)即為化簡,它是這樣一個過程:每次迭代,將上一次的迭代結(jié)果(第一次時為init的元素,如沒有init則為seq的第一個元素)與下一個元素一同執(zhí)行一個二元的func函數(shù)。

#reduce( func, seq[, init] )
#使用reduce函數(shù)需要引入

from functools import reduce

n = 5
reduce_a=reduce(lambda x, y: x * y, range(1, n + 1))# 120 1*2*3*4*5

m = 2
n = 5
reduce_b= reduce( lambda x, y: x * y, range( 1, n + 1 ), m ) #240 2*1*2*3*4*5

1.3 filter函數(shù)
filter(fun,seq),返回fun為true的那些值

filter_a=list(filter(lambda x:x%2==0,range(10)))#返回偶數(shù)

1.4 apply函數(shù)
apply作用于DataFrame中的每一行/每一列


df1=pd.DataFrame(np.arange(20).reshape(5,4),columns=['A','B','C','D'])
df1.loc['apply_sum']=df1.apply(lambda x:x.sum(),axis=0)#縱向的
df1['total']=df1[['A','C']].apply(lambda x:x.sum(),axis=1)#橫向的

1.5 applymap函數(shù)
applymap 作用于DataFrame每個元素

df2=df1.applymap(lambda x:x+1)#每個元素+1

=================================================================

2.1 sort函數(shù)
sort()是python list內(nèi)置排序的方法,排序完改變原list的值

my_list = [3, 5, 1, 4, 2]
my_list.sort()
my_list #輸出[1, 2, 3, 4, 5]

2.2 sorted函數(shù)
排序不改變原有變量的數(shù)據(jù)結(jié)構(gòu),sorted(iterable[, cmp[, key[, reverse]]]),sorted()非常靈活,可以按照多種方式排序。

#sorted(iterable[, cmp[, key[, reverse]]])
my_list = [3, 5, 1, 4, 2]
print(sorted(my_list),my_list)# 返回[1, 2, 3, 4, 5] ,[3, 5, 1, 4, 2]

#1)可以用自定義的key可以來排序,用len函數(shù)作為key來排序
c =['CCC', 'bb', 'ffff', 'z']  
sorted(c,key=len)     #返回['z', 'bb', 'CCC', 'ffff']

#2)可以自定義函數(shù),作為排序
def lastchar(s): 
    return s[-1] 
e = ['abc','b','AAz','ef'] 
sorted(e,key = lastchar)      #返回['b', 'abc', 'ef', 'AAz']


#一種寫法
f = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}]     #列表中的元素為字典 
def age(s): 
    return s['age'] 
ff = sorted(f,key = age) #自定義函數(shù)按列表f中字典的age從小到大排序 返回[{'age': 20, 'name': 'abc'}, {'age': 25, 'name': 'ghi'}, {'age': 30, 'name': 'def'}] 
#另一種寫法   
f2 = sorted(f,key = lambda x:x['age'])    #lambda函數(shù)可以達(dá)到預(yù)期效果

2.3 argsort函數(shù)
argsort() 是numpy中的函數(shù),按照升序,返回索引的值

x = np.array([3, 1, 2])
np.argsort(x) #返回  array([1, 2, 0], dtype=int64)#升序排列 返回索引
np.argsort(-x) #降序 array([0, 2, 1], dtype=int64)

#另一種方式對array實(shí)現(xiàn)排序
x[np.argsort(x)] #升序
x[np.argsort(-x)]# 降序

x[::-1] #取從后向前(相反)的元素 個人感覺相當(dāng)于list中的reverse()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容