五天零基础入门Python,回头一看觉得匪夷所思。
如果没有猴子老师的Python入门课程,这一切根本不可能。
短短的五天里学到了和时间了不少东西,真真切切地体会了一把快速学习的酣畅淋漓,这五天都做了些什么?
一、准备工作
安装了两个重要工具:
Anaconda - 包管理器和环境管理
Jupyter notebook - 将数据分析的代码、图像和文档组合到一个web文件中
我用的是Mac的操作系统,每次安装程序的时候都很容易有各种奇怪的事情,可是这一次非常顺利,唯一遇到的问题是下面这个:
在Anaconda终端安装代码自动补全包,使用命令
conda install pyreadline
出现下面报错:
如果是这种情况,改为使用pip命令
pip install pyreadline
安装成功了!有时候conda和pip换着用可以解决问题。
有了这两个软件,就可以立即开始愉快地使用Python啦!
二、Python入门实操a
实际动手操作了Python最关键的和弦:数据、条件判断、循环、函数。
猴子老师的知乎入门课程边听边做脑图以及在Jupyter notebook里实际操作。
1、数据
数据类型包括字符串、数值、容器、布尔、None,其中容器数据类型包括列表、元祖、集合、字典。不可变的数据类型为:字符串、数值以及元祖。
字符串string:
#casestudy1:define string
nameStr='Jark Ma'
moneyStr=' has Money'
#combine strings
print('use + to combine strings:',nameStr+moneyStr)
数值number:
#1 Integer: Jark Ma is 50
age=50
#2 Floating:I use Jark Ma's Yuebao to earn 3.53 RMB
money=3.53
布尔boole:
age=10
if age==10:
print('判断条件是True')
else:
print('判断条件是False')
None:
age=None
if age==None:
print('age is 空值')
else:
print('age is not 空值')
容器 - 列表list
#define life: patient name
nameList=['猴子','马云','王健林','马化腾']#list number start from 0,1,2
列表操作
#1)容器操作:增加
nameList.append('刘强东')
print('add a element: ',nameList)
#2) 容器操作:删除
del nameList[1]
print('delete No.2 element:',nameList)
#3) 容器操作:查询:使用下标索引来访问列表中的值,下标从0开始
name1=nameList[0]
print('查询列表的第1个元素:',name1)
#4) 容器操作:修改:直接指定下标的值
print('before amendment No.1 element is ',nameList[0])
nameList[0]='孙悟空'
print('after amendment No.1 element is ',nameList[0])
容器 - 集合sets
'''Sets is a container that holds unique elements'''
#define Sets: 6 company stocks
gafataSets={'Tencent','Alibaba','Apple','Google','Facebook','Amazon','Amazon'}
print(gafataSets)
集合操作
#1)container:add
#zizi practice
stockSets1={'Tencent','Alibaba','Apple','Google','Facebook','Amazon'}
stockSets1.update(['JD'])#remember to use (['']) not ('')
print(stockSets1)
#2) container:delete
stockSets.discard('JD')
print(stockSets)
#3) container:search
txBool='Tencent' in stockSets
print(txBool)
#4) container:amend
#1 step1:delete
stockSets.discard('JD')
#2 step2:add
stockSets.update(['JDD'])
print(stockSets)
字典dictionary
#define dictionary:excel patient data entrance
patientDic1={'001':['Houzi',29,'1Diabetes','poor'],
'002':['JackMa',34,'2Diabetes','improving'],
'003':['Wang Jianlin',28,'1Diabetes','improve a lot'],
'004':['Ma Huateng',52,'2Diabetes','improving']}
字典操作
#1) container:add
patientDic1['005']=['Wang sicong',30,'2Diabetes','improving']
print(patientDic1)
#2) container:delete
del patientDic1['005']
#3) container: search, based on patient NO search for patient information
valueList1=patientDic1['001']
print(valueList1)
#4) container:amend
print('bafore amendment,patient information: ',patientDic1['001'])
patientDic1['001']=['Houzi',29,'1Diabetes','improving']
print('after amendment,patient information:',patientDic1['001'])
2、条件判断
'''多个条件判断'''
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)
3、循环
可以利用循环来批量处理数据。
#container:what's the order of meal per day
eatList=['have No.1 meal','have No.2 meal','have No.3 meal']
#loop
for i in eatList:
print(i)
continue用于跳出当前循环
for key,value in gafataDict.items():
if(key=='苹果'):
continue
print('company: ',key,',stock ID: ',value)
break用于退出整个循环
#查询苹果公司的股票代码
number=0
for key,value in gafataDict.items():
number=number+1
if(key=='苹果'):
print('search',key,'company stock ID',value)
break
print('company: ',key,'company stock ID:',value)
4、函数
'''定义函数函数功能:两个数相加输入:x,y是要相加的两个数输出:两个数相加的和'''
def add(x,y):#remember to write :
z=x+y
return z
这是我的测试:
# zizi1 - practice
def ADD(x,y):
c=x+y
return c
#x,y都是数值类型不可变函数,c定义的函数里并不改变原来x,y的值,定义因变量c
#因为有x,y,c所以要制定返回哪一个return c!这个必不可少
A=2
B=3
C=ADD(x=A,y=B)
print('2 add 3 equals to',C)
函数参数:不可变数据类型 字符串、数字、元祖这3种是不可变数据类型,其他的都是可变数据类型。
5、其他概念
变量作用域
Python的作用域一共有2种:全局作用域,局部作用域
定义在函数内部的变量拥有一个局部的作用域,定义在函数外的拥有全局作用域, 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
模块:
'''Python内置模块'''
#第1步:引入模块
import sys
#第2步:使用模块中的函数,属性
pathList=sys.path
print('Python路径为:\n',pathList)
第三方模块使用:
'''使用coonda命令安装包:conda install pandas使用第三方模块:pandaspanda是数据分析工具'''
#引入模块
import pandas as pd
#文件路径(在本地运行时日换成你自己的实际数据路径):找到目标文件--》右击选择get info
fileNameStr='/Users/escapingzizi/Desktop/SQL/SQL_猴子聊人物/数据分析(中级)(Python)/第2关:零基础掌握人工智能核心语言Python/数据/病历数据.xlsx'
#读取excel文件里的数据
x1 = pd.ExcelFile(fileNameStr)
#获取指定工作表sheet名称的数据
patientDf = x1.parse('Sheet1')
print(patientDf)
在这里要说一下对于mac用户因为没法显示文件存放的路径,所以在输入文件路径的时候要特别注意,可以用下面方法:
#获取文件的路径,我把文件放到notebook运行的环境中然后用下面的命名得出路径
os.path.dirname(os.path.abspath('病历数据.xlsx'))
在输入文件路径的时候注意别输错了。
三、Python入门实操b
这部分是关于数据结构的实操,数据结构在这里练习了:队列、栈、排序字典、计数器。
1、队列queue
队列就像你去餐厅外婆家吃饭排队,新来的人在队列尾部加入,叫做入队。
取完票的人从队列首部离开队列,叫做出队.
#导入collection包
from collections import deque
#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','004','005'])
#入队:在排队尾部插入元素
queue.append('006')
#出队:在队列头部删除元素
queue.popleft()
2、栈stack
栈这种数据结构有点像生活中的木桶。你往栈中加入新的元素,就是入栈,新的元素总是放在木桶的最上面。
#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
#入栈:在栈顶加入元素
stack.append('知乎专栏')
#出栈:将栈顶元素移除
stack.pop()
3、排序字典
字典定义的时候默认是无序的,如果要排序可以使用排序字典功能。
'''OrderedDict:按照插入key的顺序,对字典排序'''
from collections import OrderedDict
#定义有序字典
gafataodDict=OrderedDict({'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB','苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700'})
4、计数器
'''计数器'''
from collections import Counter
cDict = Counter('有一种鸟是永远也管不住的,因为他们的羽毛太光亮了.羽毛太光亮了。')
#出现次数最多的3个词
cDict.most_common(3)
答案是:[('的', 2), ('羽', 2), ('毛', 2)]
以上练习全部来自猴子老师推出的:《零基础掌握人工智能(AI)核心语言:Python》知乎live。