DataMining--Python基础入门

科学计算发行版:Python(x,y),集合了诸多包。

一、Python使用入门

1、基本命令

(1)基本运算

*,**分别表示乘法和幂运算,可进行多重赋值:

In [1]: 3*4
Out[1]: 12

In [2]: 3**4
Out[2]: 81

In [3]: a,bb,ccc=2,'python',[2,3,4]

In [4]: a
Out[4]: 2

In [5]: bb
Out[5]: 'python'

In [6]: ccc
Out[6]: [2, 3, 4]

多重赋值可针对不同类型,如数值、序列、字符串等。

(2)循环与判断

range(a,b,c)得到序列,间隔为c,首项为a,最大值为b-1;range(a)表示从0到a-1:

In [7]: range(1,11,2)
Out[7]: [1, 3, 5, 7, 9]

In [8]: range(13)
Out[8]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

  循环和判断: 

#for循环
for i in range(11):
    a=a+i**2
print a
#while循环
i=0;a=2;
while i<11:
    a=a+i**2;
    i=i+1;
print(a)
#if 判断
s=0;
if s in range(2):
    print u's 在里面'    #u表示Unicode字符串
else:
    print u's 不在里面'

 u'字符串'表示Unicode字符串;

 (3)自编函数

In [48]: def fun1(x):
    ...:     return x*3
    ...: 
    ...: fun1(3)
Out[48]: 9

In [49]: def fun2(x=1,y=2):#这里给出默认参数
    ...:     return [x+y,x-y] #返回列表
    ...: 
    ...: fun2()  #返回默认值
Out[49]: [3, -1]

In [50]: fun2(2,3)
Out[50]: [5, -1]

In [51]: def fun3(x,y)    :
    ...:     return x*y,x^y   #双重返回。类似于多重赋值#
    ...: 
    ...: fun3(2,4)
Out[51]: (8, 6)

另一种简洁的方法:lambda 

In [57]: f1=lambda x:x*x-3*x
    ...: f1(5)
Out[57]: 10

In [58]: f2=lambda x,y,z:x+y,x*z,y**z
    ...: f2(1,3,2) #lambda中的表达式不能含有命令,而且只限一条表达式,无法得到结果
Traceback (most recent call last):

  File "<ipython-input-58-e75be43f2eb7>", line 1, in <module>
    f2=lambda x,y,z:x+y,x*z,y**z

NameError: name 'x' is not defined

 

 2、Python数据类型:列表,元组,字典,集合

(1)元组/列表

两者的基本操作都一样,只是元组不可以修改。

In [62]: a=[1,2,3,4,'python',[1,2,3]];b=(11,22,33,44,'python',[1,2,3])

In [63]: a
Out[63]: [1, 2, 3, 4, 'python', [1, 2, 3]]

In [64]: b
Out[64]: (11, 22, 33, 44, 'python', [1, 2, 3])

In [2]: a[0]=0;a #列表a的第一个元素被修改
Out[2]: [0, 2, 3, 4, 'python', [1, 2, 3]]

In [3]: b[0]=0;b #元组b无法修改
Traceback (most recent call last):

  File "<ipython-input-3-e3fc51a1d10f>", line 1, in <module>
    b[0]=0;b

TypeError: 'tuple' object does not support item assignment]

In [10]: list('python')        #列举出对象的每一个元素,字符串拆分为列表
Out[10]: ['p', 'y', 't', 'h', 'o', 'n']

In [11]: tuple((1,2,'python')) #拆分为元组
Out[11]: (1, 2, 'python')

 

另外列表还有很多的操作方法,详见《Python基础教程(第二版)》。

(2)字典

In [16]: a={'First':'zhang','Second':'qiang'}

In [17]: a
Out[17]: {'First': 'zhang', 'Second': 'qiang'}

In [18]: a['First']
Out[18]: 'zhang'

In [19]: a['Second']
Out[19]: 'qiang'

In [20]: dict([['No1',11],['No2',22]])
Out[20]: {'No1': 11, 'No2': 22}

In [21]: b=dict([['No1',11],['No2',22]])

In [22]: b['No1']
Out[22]: 11

 

相当于给每一个下标的位置取了个名字。

(3)集合

集合的特点是没有重复元素,且满足集合的基本运算:{}表示集合,里面的元素会自动去重

In [27]: {1,2,3,3,3,2,1,2,4,5,5,2,3,45}
Out[27]: {1, 2, 3, 4, 5, 45}

In [28]: a=set([1,2,3,3,3,2,1,2,4,5,5,2,3,45])

In [29]: b={1,2,55,66,2,1,55,66,77}

In [30]: a|b   #集合的并
Out[30]: {1, 2, 3, 4, 5, 45, 55, 66, 77}

In [31]: a&b  #集合的交
Out[31]: {1, 2}

In [32]: a-b  #差集
Out[32]: {3, 4, 5, 45}

In [33]: a^b  # a∪b-a∩b
Out[33]: {3, 4, 5, 45, 55, 66, 77}

 

(4)map()、reduce()、filter()函数

In [34]: a=[1,2,3,44,55]

In [35]: b=[i*2+1 for i in a]

In [36]: b
Out[36]: [3, 5, 7, 89, 111]

 

其中的i可以认为是每一个下标,对每一个元素进行操作,返回b;map()函数将命令逐一应用,属于循环运算

In [39]: b=map(lambda x:x**2+2,a);
    ...: list(b)#这是python3.0中要求的
Out[39]: [3, 6, 11, 1938, 3027]

 

reduce()函数用于递归运算:

In [48]: a=range(-1,9,2)

In [49]: reduce(lambda x,y:x+y,range(-1,9,2)) #前后累加
Out[49]: 15

In [50]: reduce(lambda x,y:x*y,range(-1,9,2)) #前后连乘
Out[50]: -105

In [51]: reduce(lambda x,y:x+2*y+x**2,range(-1,9,2)) #前后累加
Out[51]: 27736

 

filter()依据条件函数进行过滤:

In [58]: a=range(-1,9,2);a
Out[58]: [-1, 1, 3, 5, 7]

In [59]: filter(lambda x:x>0 and x<6,a)
Out[59]: [1, 3, 5]

#选取元素中满足条件的,
In [61]: [a[i] for i in range(len(a)) if a[i]<6 and a[i]>0 ]
Out[61]: [1, 3, 5]

 

(5)库函数的导入于使用

苦和库中的函数均可重命名

In [66]: import pandas as pa

In [67]: from math import sin as zx

In [68]: zx(1)
Out[68]: 0.8414709848078965

 

你可能感兴趣的:(DataMining--Python基础入门)