工作以后,发现各种日常琐事占据了你的空余时间,学习越来越困难。
这就要我们合理利用日常的时间,在繁杂的琐事中挤出碎片化的时间,每天学一点。
学Python之前,让我们先来问一问自己,为什么要学Python?
当然是因为,Python现在比较流行,学Python更有利于增加你的求职优势&职场竞争力。
在开始学习前,让我们写在世界通用的第一行Python代码:
print('Hello wolrd!')
1. 学习Python四个关键点
学习Python的四个关键点:数据,函数,条件判断,循环。
1.1数据
计算机可以处理数值、文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。
数据存放在变量里,并用等号赋值。
Python中的数据分为以下数据类型:
字符串,数字,容器,布尔,None。
数据类型:字符串(String)
Python中的字符串用单引号'或双引号"括起来,同时使用反斜杠转义特殊字符。
#案例1:定义字符串
nameStr='马云'
moneyStr2='有钱'
#字符串合并
print('用+将字符串合并:',nameStr+moneyStr2)
#案例2:用%s格式化字符串
str1='我叫 %s ,俺爹是 %s ' % ('王思聪', '王健林')
print(str1)
数据类型:数值(Number)
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型。
内置的 type() 函数可以用来查询变量所指的对象类型。
#案例1:整数类型int
age=50
print(age)
#案例2:浮点类型float
money=3.53
print(money)
数据类型:容器-列表(List)
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 []
和字符串一样,列表同样可以被索引和截取。
#定义列表:病人姓名
nameList=['猴子','马云','王健林','马化腾']
#列表长度
nameLen=len(nameList)
print('列表长度:病人数目:',nameLen)
#1)容器操作:增加
nameList.append('刘强东')
print('增加1个元素:',nameList)
#2)容器操作:删除
del nameList[1]
print('删除第2个元素:',nameList)
#3)容器操作:查询:使用下标索引来访问列表中的值,下标从0开始
name1=nameList[0]
print('查询列表的第1个元素:',name1)
print('修改之前第1个元素是:',nameList[0])
nameList[0]='孙悟空'
print('修改之后第1个元素是:',nameList[0])
nameList
数据类型:容器-集合(Sets)
'''容器:集合(Sets)是一个没有重复元素的容器'''
#定义集合:6家公司的股票
gafataSets={'腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊','亚马逊'}
print(gafataSets)
#定义一个空的集合
stockSets=set()
#使用update()增加元素
stockSets.update(['腾讯','阿里巴巴','京东'])
print(stockSets)
#2)容器操作:删除
stockSets.discard('京东')
print(stockSets)
#3)容器操作:查找
txBool='腾讯' in stockSets
print(txBool)
#4)容器操作:修改
#第1步:先删除
stockSets.discard('京东')
#第2步:再添加
stockSets.update(['京东'])
print(stockSets)
数据类型:容器-字典(Dictionary)
'''容器:字典(Dictionary)'''
#定义字典:病人编号和姓名的映射关系
patientDic={'001':'猴子','002':'马云','003':'王健林','004':'马化腾'}
#定义字典:excel病人数据存储
patientDic2={'001':['猴子',29,'1型糖尿病','较差'],
'002':['马云',34,'2型糖尿病','好转'],
'003':['王健林',28,'1型糖尿病','显著好转'],
'004':['马化腾',52,'2型糖尿病','好转']}
#1)容器操作:增加
patientDic2['005']=['王思聪',30,'1型糖尿病','好转']
print(patientDic2)
#2)容器操作:删除
del patientDic2['005']
#3)容器操作:查询,根据病人编号查询病人信息
valueList1=patientDic2['001']
print(valueList1)
#4)容器操作:修改
print('修改之前,病人信息:',patientDic2['001'])
patientDic2['001']=['猴子', 29, '1型糖尿病', '好转']
print('修改之后,病人信息:',patientDic2['001'])
print(patientDic2)
数据类型:布尔类型
age=10
if age==10:
print('判断条件是True')
else:
print('判断条件是False')
数据类型:空值None
age=None
if age==None:
print('年龄是空值')
else:
print('年龄不是空值')
其中,字符串,数字,元组是不可更改的对象。
容器,布尔,None,列表,集合,字典可更改。
1.2函数
函数是实现某个特定功能,可重复使用的代码块。
函数使用案例
'''定义函数
函数功能:两个数相加
输入:x,y是要相加的两个数
输出:两个数相加的和'''
def add(x,y):
z=x+y
return z
#使用函数
a=1
b=2
c=add(x=a,y=b)
print('1和2相加等于',c)
#定义函:改变数据的值
def changeInt(a):
a=a+1
'''使用函数
参数是不可变数据类型(字符串,元祖,数值):
传递的只是该数据类型的值(相当于复制一份)'''
b=1
print('调用函数之前b的值=',b)
changeInt(a=b)
print('调用函数之后b的值=',b)
#定义函:改变列表的值
def changeList(inputList):
inputList.append('奶茶妹妹')
'''使用函数
参数是可变数据类型:
传递的是该变量的引用地址'''
nameList=['马云','刘强东']
print('调用函数之前的值:',nameList)
changeList(inputList=nameList)
print('调用函数之后的值:',nameList)
#变量作用域
def test():
aStr='别理会他人闲言闲语,今日随他们,让他们说吧,你的机会将会到来,再来证明自己。'
#在函数外面,访问函数内的局部变量aStr
print(aStr)
1.3条件判断
条件判断案例
#《摔跤吧,爸爸》豆瓣评分
scoreNum=9.1
if scoreNum >=8 :
print('我要去看这部电影')
else:
print('电影太烂,不去看了')
'''边界条件:逻辑判断'''
#定义列表:病人姓名
nameList=['猴子','马云','王健林','马化腾']
if '猴子' not in nameList:
print('列表中没有叫猴子的病人')
else:
print('列表中有个叫猴子的病人')
'''多个条件判断'''
age=int(input('输出狗狗的年龄,按enter键获取对应人类的年龄:'))
if age < 0 :
print('狗狗年龄不能小于0')
elif age == 1:
print('相当于14岁的人')
elif age == 2 :
print('相当于22岁的人')
else:
human=22+(age-2)*5
print('对应人类年龄',human)
1.4循环
循环是指计算机在重复的做一件事情,批量处理数据,提高了工作效率。
如何使用循环批量处理数据?
案例1:每天吃饭
#重复性工作
print('吃第1次饭')
print('吃第2次饭')
print('吃第3次饭')
#容器:1天中吃第几次饭
eatList=['吃第1次饭','吃第2次饭','吃第3次饭']
#循环
for i in eatList:
print(i)
案例2:清洗GAFATA股票数据
'''定义字典:6家公司(GAFATA)的股票
key是公司名称,value是股票代码'''
gafataDict={'谷歌':'Goog','亚马逊':'aMZN','Facebook':'FB',
'苹果':'aapl','阿里巴巴':'BABA','腾讯':'0700'}
#将股票代码全部大写
for key,value in gafataDict.items():
#对股票代码转换成大写
newValue=value.upper()
#将转换后新的股票代码赋值给对应的key
gafataDict[key]=newValue
print(gafataDict)
continue用于跳出当前循环
for key,value in gafataDict.items():
if(key=='苹果'):
continue
print('当前公司:',key,',当前股票代码:',value)
break用于退出整个循环
#查找苹果公司的股票代码
number=0
for key,value in gafataDict.items():
number=number+1
if(key=='苹果'):
print('查找',key,'公司的股票代码是',value)
break
print('当前公司:',key,',当前股票代码:',value)
2.算法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法应该具备七种重要特征:
有穷性:指算法必须能在执行有限个步骤之后终止;
确切性:算法的每一步骤必须有确切的定义;
输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性);
高效性:执行速度快,占用资源少;
健壮性:对数据响应正确。
3.什么是模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
''''Python内置模块'''
#第1步:引入模块
import sys
#第2步:使用模块中的函数,属性
pathList=sys.path
print('Python 路径为:n', pathList)
'''使用conda命令安装包:conda install pandas
使用第三方模块:pandas
pandas是数据分析工具'''
#引入模块
import pandas as pd
#文件路径(在本地运行时替换成你自己的实际数据路径)
fileNameStr='C:houzi第2关零基础掌握人工智能核心语言Python数据病历数据.xlsx'
'''运行后会报错,报错信息是:ImportError: Install xlrd>=0.90 for Excel support
这时候要学会看报错信息,上面的报错信息意思是说:缺少读取Excel文件的包xlrd
这时候用conda命令安装就可以了,在conda中输入以下安装包的命令即可:
conda install xlrd'''
#读取excel文件里的数据
xl = pd.ExcelFile(fileNameStr)
'''Excel里面可以有多个工作表(Sheet)这里参入的参数值“Sheet1”,就是某个工作表的名称,而不是Excel的文件名。我们可以打开Excel文件,会看到工作表(Sheet)对应的名称,默认的工作表名称是“Sheet1”(注意大小写)你也可以修改这个工作表的名称,然后传入对应的名称,就会根据名称读取这个工作表里的数据了注意这个名称如果是英文,注意大小写,我一般喜欢从Excel中复制这个名称过来,以防错误'''
#获取指定工作表(Sheet)名称的数据
patientDf = xl.parse('Sheet1')
print(patientDf)
模块导入的几种方法:
4.数据结构
队列(queue)
队列就像你去外婆家吃饭排队,新来的人在队列尾部加入,叫做入队。取完票的人从队列首部离开队伍,叫出对。
#导入collections包
from collections import deque
#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','04','005'])
#入队:在队列尾部插入元素
queue.append('006')
print(queue)
#出队:在队列头部删除元素
queue.popleft()
print(queue)
栈(stack)
栈这种数据结构有像生活中的木桶。你往栈中加入新的元素,就是入栈,新的元素总是放在木桶的最上面。
#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
#入栈:在栈顶加入元素
stack.append('知乎专栏')
print(stack)
#出栈:将栈顶元素移除
stack.pop()
print(stack)
排序字典OrderedDict
'''OrderedDict:按照插入key的顺序,对字典排序'''
from collections import OrderedDict
#定义有序字典
gafataOdDict=OrderedDict({'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',
'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700'})
gafataOdDict
计算器Counter
'''计数器'''
from collections import Counter
cDict = Counter('有一种鸟是永远也关不住的,因为他们的羽毛太光亮了。羽毛太光亮')
cDict['亮']
#出现次数最多的3个词
cDict.most_common(3)