python初学备用知识点

作用到数组的每个元素

Python关键字参数

 

这是Python函数可变参数 args及kwargs

*args表示任何多个无名参数,它是一个tuple

**kwargs表示关键字参数,它是一个dict

测试代码如下:

1

2

3

4

5

6

7

8

9

def foo(*args,**kwargs):

print 'args=',args

print 'kwargs=',kwargs

print '**********************'

if __name__=='__main__':

foo(1,2,3)

foo(a=1,b=2,c=3)

foo(1,2,3,a=1,b=2,c=3)

foo(1,'b','c',a=1,b='b',c='c')

执行结果如下:

1

2

3

4

5

6

7

8

9

10

11

12

args= (123)

kwargs= {}

**********************

args= ()

kwargs= {'a'1'c'3'b'2}

**********************

args= (123)

kwargs= {'a'1'c'3'b'2}

**********************

args= (1'b''c')

kwargs= {'a'1'c''c''b''b'}

**********************

python apply函数的用法

函数格式为:apply(func,*args,**kwargs)

用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数

解析:args是一个包含按照函数所需参数传递的位置参数的一个元组,是不是很拗口,意思就是,假如A函数的函数位置为 A(a=1,b=2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序
kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空

apply的返回值就是函数func函数的返回值

 

  1. def function(a,b):    
  2.     print(a,b)    
  3. apply(function,('good','better'))    
  4. apply(function,(2,3+6))    

输出结果:

('good', 'better')

(2, 9)

 

apply()

当想让方程作用在一维的向量上时,可以使用apply来完成

map()

map()只要是作用将函数作用于一个Series的每一个元素

默认为列

Python filter() 函数

语法

以下是 filter() 方法的语法:

filter(function, iterable)(function, iterable)

参数

  • function -- 判断函数。
  • iterable -- 可迭代对象。

返回值

返回列表。

 

python -- lambda表达式

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。

lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:

add = lambda x, y : x+y
add(1,2)  # 结果为3

Python axis

投票最高的答案揭示了问题的本质:

其实问题理解axis有问题,df.mean其实是在每一行上取所有列的均值,而不是保留每一列的均值。也许简单的来记就是axis=0代表往跨行(down),而axis=1代表跨列(across),作为方法动作的副词(译者注)

换句话说:

  • 使用0值表示沿着每一列或行标签\索引值向下执行方法
  • 使用1值表示沿着每一行或者列标签模向执行对应的方法

下图代表在DataFrame当中axis为0和1时分别代表的含义:

axis参数作用方向图示

另外,记住,Pandas保持了Numpy对关键字axis的用法,用法在Numpy库的词汇表当中有过解释:

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

所以问题当中第一个列子 df.mean(axis=1)代表沿着列水平方向计算均值,而第二个列子df.drop(name, axis=1) 代表将name对应的列标签(们)沿着水平的方向依次删掉。

******************************************************************************************************************

7月1号

Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

 

str = "-";seq = ("a", "b", "c"); # 字符串序列print str.join( seq );

以上实例输出结果如下:

a-b-c-b-c

 

pandas中的merge和concat类似,但主要是用于两组有key column的数据,统一索引的数据. 通常也被用在Database的处理当中.

  • 依照一组key合并
import pandas as pd

#定义资料集并打印出
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                             'A': ['A0', 'A1', 'A2', 'A3'],
                             'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                              'C': ['C0', 'C1', 'C2', 'C3'],
                              'D': ['D0', 'D1', 'D2', 'D3']})

print(left)
#    A   B key
# 0  A0  B0  K0
# 1  A1  B1  K1
# 2  A2  B2  K2
# 3  A3  B3  K3

print(right)
#    C   D key
# 0  C0  D0  K0
# 1  C1  D1  K1
# 2  C2  D2  K2
# 3  C3  D3  K3

#依据key column合并,并打印出
res = pd.merge(left, right, on='key')

print(res)
     A   B key   C   D
# 0  A0  B0  K0  C0  D0
# 1  A1  B1  K1  C1  D1
# 2  A2  B2  K2  C2  D2
# 3  A3  B3  K3  C3  D3

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
res1=pd.concat([left,right],join="outer")
print(res1)
     A    B    C    D key
0   A0   B0  NaN  NaN  K0
1   A1   B1  NaN  NaN  K1
2   A2   B2  NaN  NaN  K2
3   A3   B3  NaN  NaN  K3
0  NaN  NaN   C0   D0  K0
1  NaN  NaN   C1   D1  K1
2  NaN  NaN   C2   D2  K2
3  NaN  NaN   C3   D3  K3
res1=pd.concat([left,right],join="outer",axis=1)
print(res1)
    A   B key   C   D key
0  A0  B0  K0  C0  D0  K0
1  A1  B1  K1  C1  D1  K1
2  A2  B2  K2  C2  D2  K2
3  A3  B3  K3  C3  D3    

 

clipboard[11]

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值