第二周的作業(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實現(xiàn)排序
x[np.argsort(x)] #升序
x[np.argsort(-x)]# 降序
x[::-1] #取從后向前(相反)的元素 個人感覺相當(dāng)于list中的reverse()