Pandas入門之函數應用和映射

數據分析時需要對數據進行復雜運算,定義函數運用到pandas每個元素上,有三種重要的映射方法:

  • map
  • apply
  • applymap
  • 排序

map映射

<code>obj = Series([3,2,5,3,-4])
obj.map(lambda x:x+2) #傳入匿名函數

def f(x):
return x+2
obj.map(f) #傳入自定義函數/<code>
  • map方法將傳入函數作用於每個Series元素上
<code>data = {
‘city’:[‘北京’,‘上海’,‘廣州’,‘深圳’],
‘temperature’:[30,32,,28,37]
}
def f(x):
return str(x)+‘度’
df = DataFrame(data)
df[‘temperature’] = df[‘temperature’].map(f) #對dataframe的series列映射f函數/<code>

apply映射

apply方法作用於DataFrame對象行或列上

<code>df = DataFrame(np.random.randn(3,3),columns=[‘a’,‘b’,‘c’])
df.apply(lambda x:x.max()-x.min()) #匿名函數作用於axis=0 垂直軸向上
df.apply(lambda x:x.max(),axis=1) #匿名函數作用於axis=1水平軸向上/<code>
  • 只能用於行或者列上,不能同時作用於每個元素

applymap映射

applymap方法應用於DataFrame對象的每個元素上

<code>df.applymap(lambda x:”%.2f” % x)/<code>

排序

排序的對象分為索引排序和數值排序,主要分為pandas和DataFrame兩種類型排序

<code>obj = Series([1,3,2,6],index=[‘b’,‘c’,’a’,’d’])
obj1 = obj.sort_index() #索引升序排列
obj1 = obj.sort_index(ascending=False) #對象降序排列

obj = obj.sort_values() #數值升序排序
obj = obj.sort_values(ascending=False) #數值降序排序/<code>
  • ascending = True表示升序,False表示降序,默認表示升序
  • 排序後的索引與數值是一一對應的
<code>df = DataFrame([[1,3,2,5],[2,1,4,3]], index=[‘win’, ‘mac’], columns=[‘a’, ‘b’, ‘c’, ‘d’])
df.sort_index(axis=0) #行索引排序
df.sort_index(axis=1) #列索引排序

df.sort_values(by=’a’) #a列數值排序,默認axis=0
df.sort_values(axis=1, by=’win’) #win行索引數值排序/<code>
  • axis=0表示選擇列索引,by後面只能是列索引默認axis為0
  • axis=1,by後邊只能是行索引


分享到:


相關文章: