基于python的大数据分析基础
chapter 1 python 基础
1. 安装python
(略)
2. 语法基础
-
代码注释:
- 单行: #
- 多行: 三个单引号
-
缩进表示分层
-
语句断行:
使用
进行多行换行
-
print()的作用
-
字符串中引号的嵌套
3. 程序结构
-
运算符:
-
顺序结构
-
判断结构
-
循环结构
while
n=int(input("请输入结束的数")) i=1 su=0 while i<=0: su+=i i+=1 print("从1+到%d结果是:%d" %(n,su))
for
n =int(input("请输入结束的数")); i=0; fori in range(n+1): su+=i; print("从1加到%d的结果是" %(n,su))
-
异常
-
try...except 不同于别的语言的try..catch
try: print(1/0) except Exception as e: print("代码出现异常") print("继续运行")
-
try..except..finally
try: print("这里没有异常")
except Exception as e:
print("这句话不会输出")
finally:
print("必须执行的") -
-
try...except...finally
try: print("正常代码") except Exception as e: pirnt("这句话不会输出") else: print("这句话被输出") finally: print("无论如何都会执行的")
4.函数:
- 定义:
def 函数名 (参数):
函数体
return 返回值
-
参数结构:
-
传统参数传递
-
无参数传递:
def func(): pass
-
固定参数:
def func(x,y,z): pass
-
-
默认传递参数
def func(x,y="abc",z="bcd"): pass
-
未知参数个数
参数数量不固定,使用一个* 就可以了
def func(name,*args): for i in args: print(i) func("张三","李四","王五")
-
带键参数传递
def func(**kwargs): print(type(kwargs)) for i in kwargs: print(i,kwargs[i]) func(aa=1,bb=2,cc=3)
-
-
回调函数:
回调函数: 将函数作为参数传递给另一个函数中调用.
def func(fun,args): fun(args) def f1(x): print("这是f1",x) def f2(x): print("这是f2",x) func(f1,123)
-
函数递归与嵌套
-
函数递归
函数递归是指函数在函数体中直接或者间接的调用自身的现象,递归必须要有停止条件,否则就是一个死循环
''' 斐波那契 ''' def fib(n): if n>=2: return 1 else: return fib(n-1)+fib(n-2) for i in range(1,10): print("fib(%s)=%s" %(i,fib(i))
-
函数嵌套
函数嵌套指函数内部调用其他函数.
-
-
闭包
回调函数是将函数作为参数传递,而闭包是将函数作为返回值返回.
闭包可以延长变量的作用时间和作用域.
def say(word): def name(name): print(word,name) return name hi = say("你好") # 将hi变成name 函数 hi("小明")# 调用name函数
-
匿名函数lambda
python 允许使用lambda关键字定义一个匿名函数,所谓的匿名函数,指调用一次或者几次以后不再需要的函数.
#求两个数之和 定义函数 f(x,y) =x+y f = lambda x,y: x+y print(f(2,3))
- lambda 不能包含命令
- lambda表达式不能超过一个
-
关键字yield
yield
关键字,可以将函数执行的中间结果返回但不结束程序.
def func(n):
i=0;
while i<n:
yield i
i+=1
for i in func(10):
print(i)
5. 数据结构
-
列表:
列表的定义: 中括号,英文逗号做分隔,里面的数据可以是任意类型的
s=[1,2,4,"abc",{"age":23}] pirnt(type(s))
获取列表元素: 通过下标获取,从0开始 list[index]
list常用的函数:
list = [1,2,3] list.append(4) #将元素追加到list的尾部 print(list) list_new = [5,6,7] list.extend(list_new) # extend将一个列表追加到另一个列表 pirnt(list) list.insert(1,"a") #insert 插入到指定位置,第一个是位置编号,第二个参数是插入的元素 print(list) list.remove(1); #remove 是将列表中一个值为1的元素移除 pirnt(list); list.clear() #清空列表 list.index(1) #返回第一个值为1的索引位置,如果不存在1,就会报错 list.count() #返回列表的长度 list.reverse() #列表反向 liset.sort() #数组从小到大排序,翻转的话.list.sort(reverse=True) list.copy() #返回列表的副本
-
元组:(tuple)
元素和列表相似,用括号定义,元祖一旦定义就不会更改
tuple.count() #tuple一共有多少个元素 tuple.index(x) #第一个x元素出现的位置
-
集合(set):
集合不能保存重复的数据,它具有排重的功能.set中的元素的位置是无序的,所以不能像 列表一样通过索引进行获取数据.
集合操作:
-
字典(dict):
键值对结构.可类比php的数组和js的json
d = {'age':12,"name":"张三"}
操作:
d = {'age':12,"name":"张三"} #定义字典 dc = d.copy #复制字典 dc.clear() #字典清楚 d.items() #获取字典列表 d.keys() #获取字典的key列表 d.values() # 获取字典的value列表 d.pop("age") #将key为age的项删除
6. 常用的三个函数
-
map
遍历序列,对序列中的每一个元素进行操作,最终获取新的序列
li=[111,22,33] new_list = map(lambda a:a+100,li) a =list(new_list) print(a)
map用于遍历,数组,然后通过跌代器进行对每一个元素进行操作操作后返回
-
filter
fileter是筛选,满足func条件的会留下来
list = [11,22,33] new_list = filter(lambda x:x>22,list) print(new_list)
-
reduce
累计函数,迭代所有元素并进行累计
from functools import reduce # 从functool模块导入reduce函数 list = [11,22,33,44] value = reduce(lambda arg1,arg2:arg1+arg2,list) print(value)
7,面向对象编程基础
- 类
- 类和实例
- 数据封装:
- 私有方法和私有变量: