python数据分析002—python基础语法

本文为在猴子老师社群中学习python数据分析的第二关任务,主要是学习python中的一些基础语法,并通过一些简单代码展示出来。
在这里插入图片描述

数据类型:字符串(String)¶

#案例1:定义字符串
nameStr='马云'
moneyStr2='有钱'
#字符串合并
print('用+将字符串合并:',nameStr+moneyStr2)+将字符串合并: 马云有钱

#案例2:用%s格式化字符串
str1='我叫 %s ,俺爹是 %s ' % ('王思聪', '王健林')
print(str1)
我叫 王思聪 ,俺爹是 王健林 
数据类型:数值(Number)

#1)整型:马云年龄50岁
age=50
#2)浮点型:我用马云的余额宝今天赚了3.53元
money=3.53
数据类型:容器-列表(List)

'''
容器:列表(List)
'''
#定义列表:病人姓名
nameList=['猴子','马云','王健林','马化腾']

#列表长度
nameLen=len(nameList)
print('列表长度:病人数目:',nameLen)
列表长度:病人数目: 4

#1)容器操作:增加
nameList.append('刘强东')
print('增加1个元素:',nameList)
增加1个元素: ['猴子', '马云', '王健林', '马化腾', '刘强东']

#2)容器操作:删除
del nameList[1]
print('删除第2个元素:',nameList)
删除第2个元素: ['猴子', '王健林', '马化腾', '刘强东']

#3)容器操作:查询:使用下标索引来访问列表中的值,下标从0开始
name1=nameList[0]
print('查询列表的第1个元素:',name1)
查询列表的第1个元素: 猴子

#4)容器操作:修改:直接指定下标的值
print('修改之前第1个元素是:',nameList[0])
nameList[0]='孙悟空'
print('修改之后第1个元素是:',nameList[0])
修改之前第1个元素是: 猴子
修改之后第1个元素是: 孙悟空

nameList
['孙悟空', '王健林', '马化腾', '刘强东']
数据类型:容器-集合(Sets)

'''
容器:集合(Sets)是一个没有重复元素的容器
'''
#定义集合:6家公司的股票
gafataSets={'腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊','亚马逊'}
print(gafataSets)
{'腾讯', '亚马逊', '苹果', '谷歌', 'Facebook', '阿里巴巴'}

#1)容器操作:增加
#定义一个空的集合
stockSets=set()
#使用update()增加元素
stockSets.update(['腾讯','阿里巴巴','京东'])
print(stockSets)
{'腾讯', '阿里巴巴', '京东'}

#2)容器操作:删除
stockSets.discard('京东')
print(stockSets)
{'腾讯', '阿里巴巴'}

#3)容器操作:查找
txBool='腾讯' in stockSets
print(txBool)
True

#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)
{'001': ['猴子', 29, '1型糖尿病', '较差'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转'], '005': ['王思聪', 30, '1型糖尿病', '好转']}

#2)容器操作:删除
del patientDic2['005']

#3)容器操作:查询,根据病人编号查询病人信息
valueList1=patientDic2['001']
print(valueList1)
['猴子', 29, '1型糖尿病', '较差']

#4)容器操作:修改
print('修改之前,病人信息:',patientDic2['001'])
patientDic2['001']=['猴子', 29, '1型糖尿病', '好转']
print('修改之后,病人信息:',patientDic2['001'])
修改之前,病人信息: ['猴子', 29, '1型糖尿病', '较差']
修改之后,病人信息: ['猴子', 29, '1型糖尿病', '好转']

print(patientDic2)
{'001': ['猴子', 29, '1型糖尿病', '好转'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转']}
数据类型:布尔类型

age=10
if age==10:
    print('判断条件是True')
else:
    print('判断条件是False')
判断条件是True
数据类型:空值None

age=None
if age==None:
    print('年龄是空值')
else:
    print('年龄不是空值')
年龄是空值
条件判断案例


#《摔跤吧,爸爸》豆瓣评分
scoreNum=9.1if 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)
输出狗狗的年龄,按enter键获取对应人类的年龄:5
对应人类年龄 37
如何使用循环批量处理数据?
案例1:每天吃饭

#重复性工作
print('吃第1次饭')
print('吃第2次饭')
print('吃第3次饭')1次吃饭
第2次吃饭
第3次吃饭

#容器:1天中吃第几次饭
eatList=['吃第1次饭','吃第2次饭','吃第3次饭']
#循环
for i in eatList:
    print(i)
吃第1次饭
吃第2次饭
吃第3次饭
案例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)
{'谷歌': 'GOOG', '亚马逊': 'AMZN', 'Facebook': 'FB', '苹果': 'AAPL', '阿里巴巴': 'BABA', '腾讯': '0700'}
continue用于跳出当前循环

for key,value in gafataDict.items():
    if(key=='苹果'):
        continue
    print('当前公司:',key,',当前股票代码:',value)
当前公司: 腾讯 ,当前股票代码: HK:00700
当前公司: 阿里巴巴 ,当前股票代码: BABA
当前公司: 谷歌 ,当前股票代码: :GOOGLE
当前公司: Facebook ,当前股票代码: FB
当前公司: 亚马逊 ,当前股票代码: AMZN
break用于退出整个循环

#查找苹果公司的股票代码
number=0
for key,value in gafataDict.items():
    number=number+1
    if(key=='苹果'):
        print('查找',key,'公司的股票代码是',value)
        break
    print('当前公司:',key,',当前股票代码:',value)
当前公司: 腾讯 ,当前股票代码: HK:00700
当前公司: 阿里巴巴 ,当前股票代码: BABA
查找 苹果 公司的股票代码是 APPLE
函数使用案例
如何自定义函数?

'''
定义函数
函数功能:两个数相加
输入: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)
12相加等于 3
函数参数:不可变数据类型
字符串、数字,元祖这3种是不可变数据类型,其他的都是可变数据类型


#定义函:改变数据的值
def changeInt(a):
    a=a+1'''
使用函数
参数是不可变数据类型(字符串,元祖,数值):
传递的只是该数据类型的值(相当于复制一份)
'''
b=1
print('调用函数之前b的值=',b)
changeInt(a=b)    
print('调用函数之后b的值=',b)
调用函数之前b的值= 1
调用函数之后b的值= 1
函数参数:可变数据类型

#定义函:改变列表的值
def changeList(inputList):
    inputList.append('奶茶妹妹')'''
使用函数
参数是可变数据类型:
传递的是该变量的引用地址
'''
nameList=['马云','刘强东']
print('调用函数之前的值:',nameList)
changeList(inputList=nameList)    
print('调用函数之后的值:',nameList)
调用函数之前的值: ['马云', '刘强东']
调用函数之后的值: ['马云', '刘强东', '奶茶妹妹']
变量作用域
Python的作用域一共有2种:全局作用域,局部作用域。

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


#变量作用域
def test():
    aStr='别理会他人闲言闲语,今日随他们,让他们说吧,你的机会将会到来,再来证明自己。'#在函数外面,访问函数内的局部变量aStr
print(aStr)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-12-949a6b634728> in <module>()
      4 
      5 #在函数外面,访问函数内的局部变量aStr
----> 6 print(aStr)

NameError: name 'aStr' is not defined

Python内置模块使用

''''
Python内置模块
'''
#第1步:引入模块
import sys
#第2步:使用模块中的函数,属性
pathList=sys.path
print('Python 路径为:\n', pathList)
Python 路径为:
 ['', 'C:\\install\\Python\\Python27', 'C:\\install\\Python\\Python27\\Lib', 'C:\\install\\Python\\Python27\\Scripts', 'C:\\install\\Anaconda3\\python36.zip', 'C:\\install\\Anaconda3\\DLLs', 'C:\\install\\Anaconda3\\lib', 'C:\\install\\Anaconda3', 'C:\\install\\Anaconda3\\lib\\site-packages', 'C:\\install\\Anaconda3\\lib\\site-packages\\Babel-2.5.0-py3.6.egg', 'C:\\install\\Anaconda3\\lib\\site-packages\\win32', 'C:\\install\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\install\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\install\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\yang\\.ipython']
第三方模块使用

'''
使用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)
   病人编号   姓名  年龄  糖尿病类型    病情
0     1   猴子  29  1型糖尿病    较差
1     2   马云  34  2型糖尿病    好转
2     3  王健林  28  1型糖尿病  显著好转
3     4  马化腾  52  2型糖尿病    较差
介绍Python的collections包,了解常用的数据结构
官网使用操作文档:https://docs.python.org/2/tutorial/datastructures.html#more-on-lists

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


#导入collections包
from collections import deque

#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','04','005'])

#入队:在队列尾部插入元素
queue.append('006')

print(queue)
deque(['001', '002', '003', '04', '005', '006'])

#出队:在队列头部删除元素
queue.popleft()
'001'

print(queue)
deque(['002', '003', '04', '005', '006'])
栈(stack)
栈这种数据结构有点像像生活中的木桶。你往栈中加入新的元素,就是入栈,新的元素总是放在木桶的最上面。


#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
deque(['知乎动态', '知乎回答', '知乎文章'])

#入栈:在栈顶加入元素
stack.append('知乎专栏')

print(stack)
deque(['知乎动态', '知乎回答', '知乎文章', '知乎专栏'])

#出栈:将栈顶元素移除
stack.pop()
'知乎专栏'

print(stack)
deque(['知乎动态', '知乎回答', '知乎文章'])
排序字典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

#出现次数最多的3个词
cDict.most_common(3)
[('的', 2), ('羽', 2), ('毛', 2)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值