astr在python_python基础知识

学习python的第一步肯定是进行python数据分析环境的安装,我安装的是Anaconda,这是一个开源的python发行版本,里面包含180多个科学包,让我们上手就能做数据分析。

以下是最基础的python知识笔记,我用jupyter notebook写的,这是一个web应用,能让用户把代码、注释放在一个文档中。

我将文档以markdown(.md)格式导出到电脑里,再导入到知乎文档中。

数据类型

1.字符串string

#字符串定义

nameStr='Kiyan'

moneyStr='没钱'

#字符串合并

print('用+连接字符串:',nameStr+moneyStr)

用+连接字符串: Kiyan没钱

#用%s格式化字符串

str1='我是%s,你是%s'%('写的人','看的人')

print(str1)

我是写的人,你是看的人

2.数值number

#1.整型int:老王的儿子5岁

age=5

#2. 浮点型:老王身高1.83米

height=1.83

3.容器container

#容器操作分为增加、删除、查询、修改四种

3.1 列表list

#定义列表:小组成员

teamList=['Jack','Jess','Jeff','Bruce']

#使用中括号

print(teamList)

['Jack', 'Jess', 'Jeff', 'Bruce']

#列表长度

teamLen=len(teamList)

print(teamLen)

4

#1.容器操作:增加列表元素 (append)

teamList.append('David')

print('增加一个成员以后:',teamList)

teamLen=len(teamList)

print(teamLen)

增加一个成员以后: ['Jack', 'Jess', 'Jeff', 'Bruce', 'David']

5

#2.容器操作:删除列表元素 (del 列表序号)

del teamList[0]

#删除第一个元素

teamLen=len(teamList)

print(teamLen)

4

#3.容器操作:查询元素:使用下标索引来访问列表中的值,下标从0开始

member1=teamList[0]

print(member1)

Jess

#4.容器操作:修改元素: 直接指定要修改的元素序号

print('修改之前的第一个元素是:',teamList[0])

teamList[0]='Edward'

print('修改之后的第一个元素是:',teamList[0])

修改之前的第一个元素是: Jess

修改之后的第一个元素是: Edward

teamList

['Edward', 'Jeff', 'Bruce', 'David']

3.2集合set :一个没有重复元素的容器

#定义一个空的集合

fruitSets=set()

#1.使用update([])增加集合元素

fruitSets.update(['apple','peach','watermelon'])

print(fruitSets)

{'peach', 'apple', 'watermelon'}

#2.使用discard()删除集合元素

fruitSets.discard('apple')

print(fruitSets)

{'peach', 'watermelon'}

#3.查找元素,使用boolean来测试

txBool='peach' in fruitSets

print(txBool)

True

#4.修改元素

#先删除,再添加

fruitSets.discard('peach')

fruitSets.update(['orange'])

print(fruitSets)

{'orange', 'watermelon'}

3.3字典dictionary:键key与值value的映射关系

#每个键都是唯一的,类似于队列中的序号

#用大括号{}定义字典

studentDic={'001':'王小明','002':'黄大路','003':'吴彦祖','004':'彭于晏'}

#定义字典,excel学生数据储存

studentDic2={'001':['王小明',16,'一等奖学金'],

'002':['黄大路',17,'二等奖学金'],

'003':['吴彦祖',17,'三等奖学金'],

'004':['彭于晏',18,'特等奖学金']}

print(studentDic2)

{'001': ['王小明', 16, '一等奖学金'], '002': ['黄大路', 17, '二等奖学金'], '003': ['吴彦祖', 17, '三等奖学金'], '004': ['彭于晏', 18, '特等奖学金']}

#1.增加,直接定义一个新的数据

studentDic2['005']=['刘亦菲',16,'特等奖学金']

print(studentDic2)

{'001': ['王小明', 16, '一等奖学金'], '002': ['黄大路', 17, '二等奖学金'], '003': ['吴彦祖', 17, '三等奖学金'], '004': ['彭于晏', 18, '特等奖学金'], '005': ['刘亦菲', 16, '特等奖学金']}

#2. 删除 del

del studentDic2['005']

print(studentDic2)

{'001': ['王小明', 16, '一等奖学金'], '002': ['黄大路', 17, '二等奖学金'], '003': ['吴彦祖', 17, '三等奖学金'], '004': ['彭于晏', 18, '特等奖学金']}

#3.查询,根据学生编号

studentID1=studentDic2['001']

print(studentID1)

['王小明', 16, '一等奖学金']

#4. 修改,直接对编号里的数据进行替换

print('修改之前:',studentDic2['001'])

studentDic2['001']=['王小明',16,'特等奖学金']

print('修改之后:',studentDic2['001'])

修改之前: ['王小明', 16, '一等奖学金']

修改之后: ['王小明', 16, '特等奖学金']

3.4 元祖

只能查询,不能修改. 使用()来定义

4.布尔类型Boolean

age=10

if age==10:

print('判断条件为true')

else:

print('判断条件为false')

判断条件为true

5. 空值类型None

#None的第一个字母必须是大写,python是对大小写很敏感的

age=None

if age==None:

print('年龄是空值')

else:

print('年龄不是空值')

年龄是空值

条件判断

#边界条件判断

#值比较: [,==,>=,<=,!=]

passengerNum=53

if passengerNum >50 :

print('长途大巴超载')

else:

print('长途大巴没有超载')

#逻辑比较 [and,in,not]

nameList=['小黄','小红','小兰']

if '小兰' in nameList:

print('名单中有小兰的名字')

else:

print('名单中没有小兰的名字')

长途大巴超载

名单中有小兰的名字

#多个条件判断

day=int(input('输入今天是周几,按enter得到应该锻炼什么部位'))

if day==1:

print('今天是周一,练胸')

elif day==3:

print('今天是周三,练腿')

elif day==5:

print('今天是周五,练背')

else:

print('今天做有氧运动')

输入今天是周几,按enter得到应该锻炼什么部位3

今天是周三,练腿

如何使用循环loop来批量处理数据

数羊

#重复性工作

print('一只羊')

print('两只羊')

print('三只羊')

一只羊

两只羊

三只羊

#数羊

sheepList=['一只羊','两只羊','三只羊']

#循环

for i in sheepList:

print(i)

#冒号后面反应条件需要加空格,不能与条件句并排,否则会报错-->IndentationError: expected an indented block

一只羊

两只羊

三只羊

清洗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)

{'谷歌': 'GOOG', '亚马逊': 'AMZN', 'Facebook': 'FB', '苹果': 'AAPL', '阿里巴巴': 'BABA', '腾讯': '0700'}

#使用continue关键字跳出当前循环

for key,value in gafataDict.items():

#加了items()才可以遍历字典,不加会遍历列表

if(key=='苹果'):

continue

print('当前公司:',key,',当前股票代码:',value)

#当key为苹果时,直接跳到下一个循环

当前公司: 谷歌 ,当前股票代码: GOOG

当前公司: 亚马逊 ,当前股票代码: AMZN

当前公司: Facebook ,当前股票代码: FB

当前公司: 阿里巴巴 ,当前股票代码: BABA

当前公司: 腾讯 ,当前股票代码: 0700

#使用break关键字跳出整个循环

for key,value in gafataDict.items():

if(key=='苹果'):

break

print('当前工资:',key,'当前股票代码:',value)

#苹果是第四个轮到的,所以只显示三个结果

当前工资: 谷歌 当前股票代码: GOOG

当前工资: 亚马逊 当前股票代码: AMZN

当前工资: Facebook 当前股票代码: FB

函数

#如何定义函数?

def multiple(x,y):

z=x*y

return z

函数的三个功能:定义函数.输入,输出

#使用函数

a=3

b=4

c=multiple(x=a,y=b)

print('a与b相乘=',c)

a与b相乘= 12

函数参数:不可变数类型

字符串String、数字Number,元祖这3种是不可变数据类型,其他的都是可变数据类型. 参数传递的是复制的数据,无法赋值

#定义函数

def changeStr(a):

a='大王'

b='小王'

print('调用函数前,b的值',b)

changeStr(a=b)

print('调用函数后,b的值',b)

调用函数前,b的值 小王

调用函数后,b的值 小王

函数参数:可变数据类型

#定义函:改变列表的值

def changeList(inputList):

inputList.append('奶茶妹妹')

'''使用函数参数是可变数据类型:传递的是该变量的引用地址'''

nameList=['马云','刘强东']

print('调用函数之前的值:',nameList)

changeList(inputList=nameList)

print('调用函数之后的值:',nameList)

调用函数之前的值: ['马云', '刘强东']

调用函数之后的值: ['马云', '刘强东', '奶茶妹妹']

变量作用域

Python的作用域一共有2种:全局作用域,局部作用域。

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。

#变量作用域

def test():

aStr='hello,world!'

print(aStr)

#aStr是定义在函数test()里的,所以在外部访问的时候,显示aStr变量没有被定义,导致无法访问.

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in

3 aStr='hello,world!'

4

----> 5 print(aStr)

NameError: name 'aStr' is not defined

模块

使用python内置模块

#第一步,引入模块

import sys

#第二步,使用模块中的函数.属性

pathList=sys.path

print('Python 路径为:', pathList)

Python 路径为: ['C:\\Users\\19940\\Downloads\\jupyter notebook\\第2关:零基础掌握人工智能核心语言Python', 'C:\\Users\\19940\\Anaconda3\\envs\\py3\\python37.zip', 'C:\\Users\\19940\\Anaconda3\\envs\\py3\\DLLs', 'C:\\Users\\19940\\Anaconda3\\envs\\py3\\lib', 'C:\\Users\\19940\\Anaconda3\\envs\\py3', '', 'C:\\Users\\19940\\Anaconda3\\envs\\py3\\lib\\site-packages', 'C:\\Users\\19940\\Anaconda3\\envs\\py3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\19940\\.ipython']

使用第三方模块

'''#第一步,在anaconda中进入python运行环境conda activate py3#第二步,使用conda指令安装模块conda install pandas'''

#第三步,引入模块并起个别名

import pandas as pd

#文件路径

#fileNameStr= 'C:\Users\19940\Downloads\jupyter notebook\第2关:零基础掌握人工智能核心语言Python\数据\病历数据.xlsx'

#在这一步,我显示的报错信息是SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

#原因是在字符串中,\是被动作转义字符来使用.所以我要改成C:/的格式

fileNameStr= 'C:/Users/19940/Downloads/jupyter notebook/第2关:零基础掌握人工智能核心语言Python/数据/病历数据.xlsx'

#读取excel文件里的数据

xl = pd.ExcelFile(fileNameStr)

'''Excel里面可以有多个工作表(Sheet)这里参入的参数值“Sheet1”,就是某个工作表的名称,而不是Excel的文件名。可以打开Excel文件,会看到工作表(Sheet)对应的名称,默认的工作表名称是“Sheet1”(注意大小写)也可以修改这个工作表的名称,然后传入对应的名称,就会根据名称读取这个工作表里的数据了注意这个名称如果是英文,注意大小写,一般从Excel中复制这个名称过来,以防错误'''

#获取指定工作表(Sheet)名称的数据

patientDf = xl.parse('Sheet1')

print(patientDf)

病人编号 姓名 年龄 糖尿病类型 病情

0 1 猴子 29 1型糖尿病 较差

1 2 马云 34 2型糖尿病 好转

2 3 王健林 28 1型糖尿病 显著好转

3 4 马化腾 52 2型糖尿病 较差

'''• 模块使用总结1 import 包名称2 import 包名称 as 别名3 from 包名称 import 函数名 #只import某一个函数'''

常用的数据结构

用list作为队列(queue)

队列就像你去餐厅吃饭排队,新来的人在队列尾部加入,叫做入队。取完票的人从队列首部离开队列,叫做出队

#导入collections包

from collections import deque

#定义队列:排队吃饭的人

queue=deque(['001','002','003','004','005'])

#入队:刚到的人拿号排队

queue.append('006')

print(queue)

#出队:删除排第一个的元素

queue.popleft()

print(queue)

deque(['001', '002', '003', '004', '005', '006'])

deque(['002', '003', '004', '005', '006'])

用list作为栈(stack)

栈这种数据结构有点像像生活中的木桶。我们往栈中加入新的元素,就是入栈,新的元素总是放在木桶的最上面。

#定义栈

stack= [1,2,3]

print(stack)

#入栈:在顶部增加元素

stack.append(4)

print(stack)

#出栈:删掉顶部元素

stack.pop()

print(stack)

[1, 2, 3]

[1, 2, 3, 4]

[1, 2, 3]

排序字典orderedDict

'''OrderedDict:按照插入key的顺序,对字典排序'''

from collections import OrderedDict

#定义有序字典

gafataOdDict=OrderedDict({'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',

'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700'})

gafataOdDict

OrderedDict([('谷歌', 'GOOG'),

('亚马逊', 'AMZN'),

('Facebook', 'FB'),

('苹果', 'AAPL'),

('阿里巴巴', 'BABA'),

('腾讯', '0700')])

计数器counter

from collections import Counter

cDict = Counter('海中月是天上月,眼前人是心上人。向来心是看客心,奈何人是剧中人')

#计数

cDict['月']

2

#出现最多的字

cDict.most_common(3)

[('是', 4), ('人', 4), ('心', 3)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值