利用pthon进行数据分析-基础语法

本文介绍了Python的基础语法,包括编译与解释的差异、变量与参数传递的特性。讲解了异常处理机制,展示了如何优雅地处理程序中的错误。接着深入探讨了Python中的模块和包的使用,以及如何控制警告信息。此外,文章还涵盖了基本数据结构,如列表、字符串、字典和集合的操作,并讨论了循环控制和函数的运用,包括匿名函数(lambda)。最后,文章提到了编码格式在Python中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础语法

编译和解释

编译和解释是程序执行的两种方式:

源代码:采用某种编程语言,人类可读
目标代码:计算机可直接执行,人类不可读
编译:源代码经过编译器一次性转换成目标代码的过程
解释:将源代码逐条转换成目标代码,同时逐条运行的过程,通过解释器
二者区别:编译一次性翻译文档翻译,解释类似于同声传译

1)静态语言使用编译执行的C和java
2)脚本语言php和python则是解释性语言

python变量和参数传递

a='STR'
b=a
print("b=",b,"id(b)=",id(b),"a=",a,"id(a)=",id(a))
a='FSESAF'
print("b=",b,"id(b)=",id(b),"a=",a,"id(a)=",id(a))

结果:
b= STR id(b)= 2855286173456 a= STR id(a)= 2855286173456
b= STR id(b)= 2855286173456 a= FSESAF id(a)= 2855286260880

a=[1,2,3,4,5]
b=a
print(b,id(b),a,id(a))
a.append(2)
print("b=",b,"id(b)=",id(b),"a=",a,"id(a)=",id(a))

结果:
b= [1, 2, 3, 4, 5] id(b)= 2855301964104 a= [1, 2, 3, 4, 5] id(a)= 2855301964104
b= [1, 2, 3, 4, 5, 2] id(b)= 2855301964104 a= [1, 2, 3, 4, 5, 2] id(a)= 2855301964104

对象分类概念包括
可变对象因为可变类型变量特性,直接在原对象上修改,因为此时形参和实参都是指向同一个对象,所以实参指向的对象自然就被修改了list, dict, set
不可变对象对象创建后对象的内容是不可以改变的,在函数中只要产生了新对象,内存引用地址都会发生改变bool, int, float, tuple, str, frozens

所以不可变对象修改内容,会创建新对象,可变对象则形参和实参都会改变
(a=a.append(2),会返回空值,因为,append这个操作是没有返回值的,即返回一个None)

异常处理

作用:异常机制可以使程序中的异常处理代码和正常业务代码分离,保证程序更加优雅,提升健壮性。
何时使用:异常情况无法穷举时,错误处理代码和业务实现代码混杂时,需要强大的机制进行异常处理
基本使用方法:
try:用来捕获异常,会触发异常的语句放到try后
except:后面接发生异常后需要执行的操作
①可以打印异常信息except Exception as error
②如果想捕获特定的异常 except XXX as error,其他异常会中断程序运行,用于发现未知异常
else:没有异常会执行else
finally:有无异常都会执行
在这里插入图片描述
在这里插入图片描述
except后面可以接多个异常

a=[1,3,4,5,0,'张',0]
for i in a:
    try:
        print(5/i)
    except (ZeroDivisionError,TypeError) as error:
        print('错误信息为{0}'.format(error))
        continue
    else:
        print('没有异常')

打印出现异常的行
traceback.print_exc()

输出结果是
Traceback (most recent call last):File "test_traceback.py", line 3, in <module>1/0ZeroDivisionError: integer division or modulo by zero
这样非常直观有利于调试。

模块和包

导入某个模块,执行时,该模块测试代码也会被调用
使用if name==‘main’:
只有当__name__属性是’main’时(在本模块调用时)才会调用测试函数,所以在调用函数前使用该方法

def wan(a,b):
    print(a+b)

if __name__=='__main__':
    print(wan(2,4))

模块导入
两种方式:

import test1 as 别名   --直接导入模块名,包含所有功能,调用功能需要模块.功能名
print(test1.wan(2,3))
from test1 import wan as 别名    --从模块导入特定功能,调用不需要写模块名
print(wan(2,3))


导入自建包需要设置为Sources Root
在这里插入图片描述
两种方法

import zhang.test2
zhang.test2.name(20,30)

有时候不希望每个成员都暴露出来,借用__all__变量,将变量设置成一个列表,只有列表中程序单元会暴露

#__init__.py需要引入all变量
__all__=['test2']
from zhang.test2 import name
name(20,30)

控制警告信息,过滤部分无意义警告

import warnings
warnings.filterwarnings('ignore')

基本语法

print
print函数默认隐藏end=‘\n’换行,如果不想换行设置为end=‘\t’
在这里插入图片描述
print函数默认隐藏sep=‘ ’,表示多个对象的分隔符号,修改为sep=‘+++’则替换为+++在这里插入图片描述
print加号实现对象连接,*实现对象的复制
在这里插入图片描述
print中\和很多字母都是转义字符,所以可以在对象前面加上r解决这种问题
在这里插入图片描述
print输出多个变量,采用.format方法
在这里插入图片描述
数学运算符
除法、取余、取整、指数
在这里插入图片描述
逻辑运算符
and运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字。
or运算符,只有所有值为0结果为0,否则结果为第一个非0数字。
0代表假,1代表真
在这里插入图片描述字符串
使用三引号可以换行‘’‘ ’‘’
切片a[开始位置下标:结束位置下标:步长],可以省略对应的参数
在这里插入图片描述
字符串查找、修改和判断
查找使用变量名.find(‘expr’,start,end),限定范围查找字符,后面范围可以省略,错误返回-1
在这里插入图片描述
也可以使用index(‘expr’,start,end),区别就是错误直接报错
在这里插入图片描述查找数据出现的次数变量.count(‘expr’,start,end)

字符串替换函数变量.replace(‘原来’,‘替换对象’,N),n代表替换的次数
在这里插入图片描述
分割函数变量名.split(‘标识符’,N),最终输出列表list
在这里插入图片描述
字符串连接,使用‘连接符号’.join(变量名)
在这里插入图片描述
列表

使用index查询列表中元素位置,使用count统计元素数量,使用len()统计元素数量
在这里插入图片描述
append会在末尾增加一个元素,extend可以在末尾增加多个元素,inser(下标、数据)在任意位置插入
列表中可以插入列表,通过a[n][m]查找数据
在这里插入图片描述

三种方法
①del 变量名[] 删除某个位置字段
②变量名.pop(N),删除后,返回被删除的字段
③变量名.remove(‘模糊字符’)删除第一个匹配的元素
在这里插入图片描述

三种方法
①直接变量名[n] 重新赋值
②变量名.reverse()列表整个倒序
③列表重新进行排序变量名.sort() 降序为sort.(reverse=True)
④列表复制变量名.copy()
在这里插入图片描述
copy会生成新的地址在这里插入图片描述
序列封包和拆包
序列:指的是包含多项数据的数据结构,序列的多个数据项按顺序排列,通过索引来访问成员
序列封包:将多个值封装成元组
在这里插入图片描述
序列解包:将序列直接赋值给多个变量,需要保证元素数量和变量个数相等
在这里插入图片描述

条件语句
在这里插入图片描述
三目运算 先执行if true 返回前面的,false返回后面的
在这里插入图片描述
字典与集合
字典dict():增删
clear()会清空字典
在这里插入图片描述
字典:查
在这里插入图片描述
也可以使用字典.get()方法,没有查到自定义返回值
在这里插入图片描述
字典.items()则返回元组
在这里插入图片描述
字典数据的遍历
在这里插入图片描述
集合set()特点
集合不可修改,自动对数据进行去重,不支持下标
在这里插入图片描述
集合增加数据,方法两种.add (单个元素) .update(序列) 序列为列表字符元组
在这里插入图片描述
集合删除数据
不存在这个数据remove会报错,discard则不会
在这里插入图片描述在这里插入图片描述
使用in判断是否存在该元素
在这里插入图片描述元组列表字典字符串集合总结
有序序列:可以进行下标和切片操作,如字符串、列表、元组
无序序列:如集合和字典
可变序列:元素可以进行增删查改,不生成新的id地址例如字典列表集合
不可变序列:修改后生成新的id地址,例如字符串元组整型浮点型
1、字符串:不能修改的字符序列。除了不能修改,可把字符串当成列表一样处理。
2、列表:我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。
3、元组:用来存放不能被轻易修改的数据,例如身份证号
4、字典:是除列表外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
5、集合:目的就是去重复

for循环
break和continue
break会直接跳出for循环,continue则会跳过本次,继续下一次
在这里插入图片描述
for+else组合,属于for循环中,执行完跳到else
在这里插入图片描述
enumerate,返回序列的索引和数据
在这里插入图片描述
推导式,使代码化简,for,if组合
列表推导式生成偶数
生成符合后缀要求的列表

list=[i for i in os.listdir('/data/sdc/data_2016_2017/') if i.endwith('.csc')]
#str.endwith(str)  endwith常用来判断文件类型

在这里插入图片描述两个列表形成字典
在这里插入图片描述
提取字典中的数据
在这里插入图片描述
while循环
在这里插入图片描述
函数
函数说明文档,在def下面用三个引号添加解释说明,使用help打印
在这里插入图片描述
静态参数:可以直接形参带上实参就可以不考虑顺序
在这里插入图片描述
可变参数:*args和**knargs
示例待定

return列表、元组、字典接收一个参数就是整体返回,同等数量的实参就是所有值逐一返回拆包
在这里插入图片描述
lambda匿名函数
函数格式为:lambda 形参:表达式
没有形参

def name():
	return 630
等价于(lambda:630)()

一个参数

def name(a):
	return a
等价于(lambda x:x)(520

两个参数

def(a,b):
	return a+b
等价于(lambda a,b:a+b)()

高阶函数
就是以函数作为参数,返回也是函数,传入abs取绝对值函数
外置高阶函数:
在这里插入图片描述
内置高阶函数:
①filter(函数名,可迭代对象) 作用:过滤序列中不符合条件的元素
函数名为None,将为true的筛选出来
在这里插入图片描述
函数名不为空,会将序列中每个元素进行计算
在这里插入图片描述
②map(函数名,可迭代对象) 作用:对可迭代对象中每个元素进行函数计算

在这里插入图片描述

③reduce(函数(x,y),可迭代对象)
在这里插入图片描述
上一个计算结果和下一个元素按照函数规则计算
1/2/3/4=1/24

编码格式
open文件时默认为utf-8编码格式

import _locale
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值