Python数据处理、分析、可视化与数据化运营 (第二版) 课件 宋天龙 第1-4章 Python入门指南-数据探索和预处理_第1页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 宋天龙 第1-4章 Python入门指南-数据探索和预处理_第2页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 宋天龙 第1-4章 Python入门指南-数据探索和预处理_第3页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 宋天龙 第1-4章 Python入门指南-数据探索和预处理_第4页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 宋天龙 第1-4章 Python入门指南-数据探索和预处理_第5页
已阅读5页,还剩245页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python入门指南Python数据处理、分析、可视化与数据化运营(第二版)01本章学习目标掌握Python基本概念及其在数据分析中的应用理解并运用Anaconda和pip工具,构建Python开发环境熟悉主要Python数据分析工具,如Pandas、NumPy、Matplotlib等掌握JupyterNotebook的基本操作学会在JupyterNotebook环境下进行Python编程和互动学习1.1Python与数据分析Python的基本概念Python在数据分析中的作用使用Anaconda轻松安装Python环境使用pip管理第三方库1.1Python与数据分析Python是一种面向对象的解释性高级编程语言。1989年的圣诞节,荷兰人Guido开始编写Python语言的编译器。1991年,第一个Python编译器诞生,这标志着Python的第一个版本正式诞生。Python的基本概念1.1Python与数据分析(1)开源/免费。(2)可移植性:Windows、Linux、Mac等多平台运行。(3)丰富的第三方库:适用于数据库连接、数据科学计算、机器学习及深度学习等众多领域。(4)与其他语言集成:Python能够直接调用Java、C、C++、MATLAB、R等语言开发的应用程序或系统功能。Python语言的特点Python的基本概念1.1Python与数据分析(5)强大的学习交流和培训资源:作为全球最主流的编程语言之一,Python拥有丰富的社区支持、博客、论坛及培训教育资源。(6)高开发效率:Python语法简洁规范,有效提升开发效率。(7)简单易学:Python语法易于学习,适合编程初学者,大幅降低了数据分析的学习门槛。Python语言的特点Python的基本概念1.1Python与数据分析数据分析指通过处理和分析特定数据集,提取有价值信息、挖掘规律、得出有效结论和洞察的方法。这一过程在辅助决策、提供科学建议的实际应用中发挥重要作用。数据分析不仅限于传统统计方法,还包括机器学习、数据挖掘等与数据相关的多种方法和算法,应用于解决各行各业的问题。Python在数据分析中的作用数据分析的基本概念1.1Python与数据分析(1)数据清洗与准备(2)统计分析与数据建模(3)文本处理与自然语言处理(NLP)(4)深度学习与人工智能(5)大数据处理(6)数据可视化Python在数据分析中的作用Python在数据分析中的作用1.1Python与数据分析Python标准程序:官方发布的标准Python编程环境,包含Python解释器和核心功能、库、包,是Python编程的基础设施。Python第三方库:它们由社区和开发者创建,用于扩展Python在特定领域的功能,例如数据分析、科学计算、机器学习等场景功能增强。使用Anaconda轻松安装Python环境Python环境的构成1.1Python与数据分析手动安装:从官网下载Python标准程序,手动安装所需第三方库,这种方法虽灵活,但配置和管理库的依赖关系可能较为繁琐。使用Anaconda:Anaconda是一个集成Python环境,主要用于简化和加速数据科学、机器学习和科学计算的开发部署。核心特点:内置Python环境、丰富的三方库、依赖管理、跨平台支持、多种交互方式、环境隔离。使用Anaconda轻松安装Python环境安装Python环境的常见方法1.1Python与数据分析1.登录Anaconda官网下载对应系统和对应版本即可选择对应系统,找到下载链接2.运行安装程序,完成安装根据操作系统,打开下载的Anaconda安装程序,Windows为.exe文件,macOS和Linux为.sh文件。运行安装程序,安装过程中,跟随安装向导使用默认配置即可。使用Anaconda轻松安装Python环境使用Anaconda准备Python环境1.2如何准备Python程序环境pip是Python包管理工具,提供了对Python包的查找、下载、安装、更新、卸载等功能。conda是Anaconda的Python包管理工具,提供的功能与pip基本类似,区别仅在于仅适用于anaconda安装环境,pip则是通用任何环境。使用pip管理第三方库Anaconda管理第三方库的工具1.2如何准备Python程序环境#示例,安装结巴分词库使用pipinstalljieba#示例,安装特定版本的库则可以指定版本号pipinstalljieba==0.42.1安装库:使用命令pipinstall库名安装第三方库使用pip管理第三方库1.2如何准备Python程序环境#示例,更新结巴分词库pipinstall-Ujiebapipinstall--upgradejieba更新库:使用pipinstall-U库名或pipinstall--upgrade库名升级已安装的库使用pip管理第三方库1.2如何准备Python程序环境#示例,查看结巴分词库的版本、路径等信息使用pipshowjieba查看库:使用piplist查看所有已安装库,或pipshow库名查看特定库的详细信息使用pip管理第三方库1.2如何准备Python程序环境#示例,卸载结巴分词库pipuninstalljieba卸载库:使用pipuninstall库名从Python环境中卸载不再需要的库使用pip管理第三方库1.2Python数据分析工具数据分析的得力助手统计分析与建模工具文本处理与分析的利器走进深度学习与人工智能新潮的数据分析方法1.2Python数据分析工具Pandas是PythonDataAnalysisLibrary的简称主要应用于数据预处理、数据探索、特征工程、数据可视化。提供用于进行结构化数据分析的二维的表格。Pandas还提供了时间序列的功能,用于金融行业的数据分析。Anaconda默认已经安装了该包。数据分析的得力助手:Pandas、NumPy、MatplotlibPandas1.2Python数据分析工具NumPy是Python的数值计算库。核心价值点在于数学函数、运算符、广播、索引和切片功能等数据处理能力更加高效。在科学计算、线性代数、统计分析等领域应用较多。Anaconda默认已经安装了该包。数据分析的得力助手:Pandas、NumPy、MatplotlibNumPy1.2Python数据分析工具最受欢迎的数据可视化库之一。主要用于创建图表,也是其他很多数据可视化库的基础库它提供丰富的绘图选项,包括折线图、散点图、柱状图、饼图、3D图等。主要适用于数据探索、传达发现和生成专业图形报告。Anaconda默认已安装Matplotlib数据分析的得力助手:Pandas、NumPy、MatplotlibMatplotlib1.2Python数据分析工具数据挖掘和机器学习的主要库。它提供监督式学习和非监督式学习方法,包括回归、K近邻、贝叶斯、决策树、混合高斯模型、聚类、分类等算法。该库支持数据预处理、模型选择和评估,是全面的机器学习的工具库。Anaconda默认已安装sklearn。统计分析与建模工具:scikit-learn、Statsmodelsscikit-learn1.2Python数据分析工具统计建模和计量经济学工具包。它提供了描述性统计、统计模型估计、统计测试等功能。它集成了多种线性回归模型、广义线性模型、离散数据分布模型、时间序列分析模型等。Statsmodels是进行统计分析和建模的重要工具。Anaconda默认已安装Statsmodels。统计分析与建模工具:scikit-learn、StatsmodelsStatsmodels1.2Python数据分析工具专用于中文文本处理的Python库。它提供了分词、关键字提取、词性标注等自然语言处理功能。它支持精确模式、全模式和搜索引擎模式分词,适用于中文文本挖掘、自然语言处理和信息检索。jieba分词是处理中文文本的首选工具。Anaconda未集成jieba分词,可通过pipinstalljieba安装。文本处理与分析的利器:jieba分词、Gensimjieba分词1.2Python数据分析工具主题建模和文本分析的Python库。它支持文本主题建模,如LatentDirichletAllocation(LDA)和LatentSemanticAnalysis(LSA)。Gensim是大规模文本数据处理、文本聚类和信息检索的关键工具。Anaconda未集成Gensim,可通过pipinstallgensim安装。文本处理与分析的利器:jieba分词、GensimGensim1.2Python数据分析工具它是Google开发的开源机器学习框架。广泛应用于深度学习和神经网络。它提供灵活的计算图模型构建各类神经网络,如CNN、RNN、自动编码器等。TensorFlow具高度优化的计算性能和硬件加速支持,是大规模深度学习项目的首选框架。走进深度学习与人工智能:Tensorflow、pytorchTensorFlow1.2Python数据分析工具它由Facebook开发的深度学习框架。支持模型构建和修改,快速迭代实验。提供自动微分、模型并行处理、迁移学习等高级功能。PyTorch有活跃社区和丰富生态系统,包括扩展库、预训练模型等。该库在学术研究领域应用比较广泛。走进深度学习与人工智能:Tensorflow、pytorchPytorch1.2Python数据分析工具它是OpenAI提供的基于GPT技术的智能聊天机器人。ChatGPT允许用户以自然语言提出数据分析问题,然后生成相应的回答和建议。ChatGPT支持上传文件,自动进行数据分析和处理。新潮的数据分析方法:基于大语言模型的分析——ChatGPT、Auto-GPT、pandas-aiChatGPT1.2Python数据分析工具它是基于GPT技术(例如ChatGPT)的自主AI代理,能够根据用户设定的目标和规则进行决策和执行任务。Auto-GPT结合了AI的强大代码逻辑、文件处理和开发流程能力,以及与其他语言和服务的集成能力。它能自动完成特定任务,如根据用户用自然语言描述的数据分析目标,自动执行数据分析任务。新潮的数据分析方法:基于大语言模型的分析——ChatGPT、Auto-GPT、pandas-aiAuto-GPT1.2Python数据分析工具它是一个集成了GPT技术的Python库,专为增强pandasDataFrame的操作而设计。它允许用户使用ChatGPT风格的自然语言提示来执行pandasDataFrame上的各种操作。pandas-ai的优势在于简化数据处理流程,用户可以通过自然语言指令进行数据转换、查询、绘图等任务,而无需编写复杂的pandas代码。新潮的数据分析方法:基于大语言模型的分析——ChatGPT、Auto-GPT、pandas-aiPandas-ai1.3互动学习环境:JupyterNotebook启动JupyterJupyter的功能介绍Jupyter的常用操作技巧Jupyter的特殊命令个性化配置Jupyter1.3互动学习环境:JupyterNotebook(1)通过程序快捷入口启动(2)使用命令行启动(3)通过AnacondaNavigator启动启动Jupyter有3种方式启动JupyterNotebook1.3互动学习环境:JupyterNotebook启动Jupyter有3种方式启动JupyterNotebook1.3互动学习环境:JupyterNotebookJupyter的功能介绍主功能区:图中①展示的是File(文件,默认视图)功能区,这里可以查看并管理该空间下所有文件和目录文件和目录功能区:在图中②,用户可以在此区域对文件和目录进行新增、删除、移动、上传等操作。文件和目录列表:图中③展示了特定目录和文件,用户可以直接单击以查看文件详情。1.3互动学习环境:JupyterNotebookJupyter的常用操作技巧新建Python文件编辑Python文件保存与恢复导出文件单元格输入和输出单元格常用编辑功能执行Python程序1.3互动学习环境:JupyterNotebookJupyter的特殊命令魔术命令(MagicCommands)是IPython及其交互式计算环境JupyterNotebook中的一种特殊功能。它们是以百分号(%)为前缀的命令,这些命令覆盖了各种常用功能,如文件和目录操作、交互式数据可视化、性能分析、环境管理等。什么是魔术命令1.3互动学习环境:JupyterNotebookJupyter的特殊命令常用魔术命令%matplotlibinline:把matplotlib库的可视化结果%ls:查看当前目录下的文件或文件夹详细列表信息%cd:切换工作路径%run:执行特定Python文件。要中断程序,按Ctrl+C组合健%paste和%cpaste:粘贴在剪切板中的内容%pwd:查看当前Python工作路径和目录1.3互动学习环境:JupyterNotebook个性化配置Jupyter生成配置文件命令:jupyternotebook--generate-config完成之后,系统会有如下提示:Writingdefaultconfigto:C:\Users\Administrator\.jupyter\jupyter_notebook_config.py1.3互动学习环境:JupyterNotebook个性化配置Jupyter配置Jupyter工作目录示例,将Jupyter的默认工作目录更改为本书附件的根目录:(1)在配置文件(在上一步的jupyternotebook--generate-config命令输出的目录中看到)中找到“c.NotebookApp.notebook_dir=”这一行代码.(2)取消其前面的注释(即去掉“#”),并在其后设置具体的目录路径。Signature1.4首次尝试:编写并运行第一个的Python程序步骤1新建一个名为code的Python3文件步骤2输入如下代码:步骤3单击按钮,执行命令步骤4查看打印及保存结果print('helloworld')源码见配套资源:第1章/code.ipynbSignature任务实训:展示你的个性——打印出自己的名字基本背景:在Python中,print命令是一项基础且常用的操作,它用于将目标对象输出到调试窗口。训练要点:(1)掌握print函数的基本用法。(2)培养中文输入和英文输入字符串的习惯。提示:汉字输出需要中文输入法,而字符串符号则需要英文输入状态。实训要求:在Jupyter中新建一个Python3文件,在单元格中使用print方法打印输出你的中文名字。学习进步!Python数据处理、分析、可视化与数据化运营(第二版)Python基本语法02Python数据处理、分析、可视化与数据化运营(第二版)本章学习目标深入理解Python的基本特性和语法规则全面掌握Python的数据类型和结构,熟悉类型判断与转换方法熟练应用条件判断、循环、运算符等控制流程和逻辑处理复杂问题熟悉文本处理和正则表达式的关键技能,有效进行字符串操作和模式匹配熟练使用函数、类、高阶函数等实现代码模块化封装,提升代码重用性和维护性灵活应用Pandas库进行常见的数据处理和分析工作2.1Python基础Python解释器的作用声明编码:设置文件字符编码缩进与执行域:代码结构的重要性优雅换行:处理长语句的技巧注释的力量:单行和多行注释的应用命名与赋值:变量规则和赋值方法2.1Python基础Python解释器的作用含义:解释并执行Python文件的程序基本语法:使用#!引导Python解释器的具体路径语法位置:脚本的第一行#!/usr/bin/python2.1Python基础声明编码:设置文件字符编码含义:用于指定Python解释器读取文件时的编码规则基本语法:例如,声明中文编码可用语法位置:如果首行是Python解释器信息,那么编码就在第二行;否则编码应该在首行#coding=<encodingname>或者#-*-coding:<encodingname>-*-“#coding=utf-8”或“#-*-coding:utf-8-*-”。2.1Python基础缩进与执行域:代码结构的重要性用途:通过不同层次的缩进实现功能范围的界定基本语法:一般上,在Python中以4个英文空格为单位实现不同层级的缩进,且不同层级的缩进量必须相同示例(伪代码):如果a>5:#层级1

打印a>5#层级2否则:#层级1

打印a<5#层级22.1Python基础优雅换行:处理长语句的技巧print(‘这是一个条非常非常非常非常非常非常非常非常非常很长很长很长很长的语句’)#未断行print('这是一个条非常非常非常非常非常非常非常非常非常\很长很长很长很长的语句‘)#断行用途:为提高可读性,可将过长语句分为多行长度建议:一般每行长度不超过79或80个字符(注意:该长度不是必须的,只是建议值)用法:使用反斜杠\断行,示例:2.1Python基础注释的力量:单行和多行注释的应用用途:注释是编写代码时用于解释程序特定部分用途、功能或注意事项的文本除极简单的代码外,大部分程序都应包含注释。注释可分为单行注释和多行注释。2.1Python基础注释的力量:单行和多行注释的应用单行注释单行注释用于解释特定语句或行,使用#符号。例如:print('LearnPython')#打印输出字符串——这里是注释信息2.1Python基础注释的力量:单行和多行注释的应用多行注释多行注释适用于解释复杂功能或模块化代码,如函数、类。使用三个单引号'''或三个双引号"""包围注释内容。例如:'''这是多行注释第一行这是多行注释第二行'''print('LearnPython')2.1Python基础命名与赋值:变量规则和赋值方法命名规则(1)变量名可由字母、数字、下划线组成,但不能以数字开头。(2)变量名不得使用Python关键字,如if、while、enumerate、true等。(3)变量名区分大小写,如a=1和A=1代表不同变量。(4)推荐使用行业通用且有意义的变量名,以便理解其含义。2.1Python基础命名与赋值:变量规则和赋值方法变量赋值变量赋值使用等号=。左侧为变量名,右侧为赋予的值。任何对象都可赋值给变量,包括数字、字符串、日期、数组、矩阵等。例如:is_man=1is_woman=False2.2数据类型数字型数据:整数型、浮点型、布尔型和复数型字符串型数据:文本处理基础日期型数据:时间的表示与操作数据类型的多样性:判断与转换技巧2.2数据类型数字型数据:整数型、浮点型、布尔型和复数型Python的数字类型主要包括整数型、浮点型、布尔型和复数型。a1=2#整数型,等价于int(2)a2=2.1#浮点型,等价于float(2.1)a3=True#布尔型,等价于bool(1)a4=complex(1)#复数型其中,a1定义为整数型、a2为浮点型、a3为布尔型、a4为复数型。(1)整数型(a1)可包含正数、负数和0。(2)浮点型(a2)通常为双精度,取决于底层机器架构。(3)布尔型(a3)只包含True和False两种值,在计算时True视为1,False视为0。(4)复数型(a4)通常用complex方法创建,以一对双精度浮点数表示复数值,使用较少。2.2数据类型字符串型数据:文本处理基础字符串以字符为处理单位,而bytes类型以字节为单位。下面的a5和a6分别是字符串和bytes类型的实例。a5='字符串'#字符串a6=bytes('字符串','utf-8')#bytes(1)字符串(a5)由Unicode码位值组成,范围是U+0000至U+10FFFF,可表示各种字符,如中文、英文、标点符号等。字符串可通过单引号、双引号或三引号创建。例如,a5='字符串'、a5="字符串"、a5="""字符串"""和a5='''字符串'''是等价效果。(2)bytes类型(a6)可通过bytes()方法或前缀b加字符串创建,bytes方法可指定编码,如utf-8,而b''要求字符串必须是ASCII字符串。2.2数据类型日期型数据:时间的表示与操作日期数据不是Python内置类型,而是标准库time和datetime中的类型。此外,calendar库也可操作日期时间。由于日期在事务型数据中常见,这里介绍常用的日期类型,以datetime库为例。2.2数据类型日期型数据:时间的表示与操作1fromdatetimeimportdatetime2date_info=datetime.today().date().strftime('%Y-%m-%d')3time_info=datetime.today().time().strftime('%H:%M:%S')4Datetime_info=datetime.now().strftime('%Y-%m-%d%H:%M:%S')5Datetimestamp_info=datetime.now().strftime('%Y-%m-%d%H:%M:%S%f')6Datetimestamp_info2=datetime.now().timestamp()第1行导入datetime模块。代码2、3、4、5、6分别获取当前日期、时间、日期时间、两种时间戳格式。(1)Date:由代码2实现的日期,格式为YYYY-MM-DD。(2)Time:由代码3实现的时间,格式为HH:MM:SS。(3)Datetime:由代码4实现的日期时间,格式为YYYY-MM-DDHH:MM:SS。(4)Datetimestamp:代码5和6实现的时间戳,分别为日期时间毫秒级格式和Unix时间戳。2.2数据类型数据类型的多样性:判断与转换技巧判断数据类型可使用type或isinstance方法。(1)type(object)直接返回对象的类型。(2)isinstance(object,class_or_tuple)判断对象是否为指定类型或元组中的类型,返回布尔值。例如:数据类型的判断方法type(a5)#使用type方法判断类型,返回strisinstance(a5,(int,bytes))#使用isinstance方法判断类型是否为int或bytes类型,返回False2.2数据类型数据类型的多样性:判断与转换技巧字符串str和bytes类型相互转换str_to_bytes=str.encode(a5)#将字符串转换为bytes类型,默认utf-8编码bytes_to_str=bytes.decode(str_to_bytes)#将bytes解码为字符串,默认utf-8解码2.2数据类型数据类型的多样性:判断与转换技巧字符串str和数字Number类型相互转换a7='1'#定义一个必须能转换为数字的字符串对象str_to_int=int(a7)#使用int方法将字符串转换为整数型str_to_int=float(a7)#使用float方法将字符串转换为浮点型str_to_bool=bool(a7)#使用bool方法将字符串转换为浮点型str_to_complex=complex(a7)#使用complex方法将字符串转换为复数型字符串转换为数字类型的方法2.2数据类型数据类型的多样性:判断与转换技巧字符串str和数字Number类型相互转换int_to_str=str(str_to_int)#使用str方法转换为字符串型数字类型转换为字符串直接使用str方法即可,示例字符串与数字类型相互转换时需注意以下几点:(1)仅能将表示数字的字符串转换为数字类型。例如,字符串'12'可以转换为数字,而'abcd'则不可。(2)字符串转换为布尔型时,空字符串返回False,非空字符串返回True。2.2数据类型数据类型的多样性:判断与转换技巧字符串str与日期类型的相互转换datetime_to_str=datetime.now().strftime('%Y-%m-%d%H:%M:%S')#将当前日期时间格式化为字符串字符串与日期之间的转换涉及两个关键方法:strftime和strptime。strftime用于将日期格式化为字符串,而strptime则将字符串解析为日期对象。日期转字符串:使用datetime对象的strftime方法。这个方法根据给定的格式化字符串将日期对象转换为文本表示。例如:2.2数据类型数据类型的多样性:判断与转换技巧字符串str与日期类型的相互转换str_to_datetime=datetime.strptime(datetime_to_str,'%Y-%m-%d%H:%M:%S')#将字符串解析为日期对象字符串与日期之间的转换涉及两个关键方法:strftime和strptime。strftime用于将日期格式化为字符串,而strptime则将字符串解析为日期对象。字符串转日期:使用datetime模块的strptime方法。该方法根据指定的格式字符串将文本解析为日期对象。例如:2.3数据结构列表:有序数据的集合与推导式元组:不可变的数据集合与推导式字典:键值对的映射与推导式集合:独特元素的集合与推导式数据结构的转换与判断2.3数据结构列表:有序数据的集合与推导式列表是一个有序且可变的集合,允许包含多种数据类型。可变性指列表内元素可以更改,有序性意味着元素有固定的排列顺序。list_example1=[]list_example2=list()list_example3=[1,True,b'bytes',['a','b']]创建列表:使用中括号[]或list()方法2.3数据结构列表:有序数据的集合与推导式列表是一个有序且可变的集合,允许包含多种数据类型。可变性指列表内元素可以更改,有序性意味着元素有固定的排列顺序。values=[1,True,b'bytes',['a','b']]#列表包括4个元素,其中第4个元素为列表。values[3]#获取列表的第四个元素,结果为['a','b']values[-1]#获取列表的最后一个元素,结果为['a','b']values[:2]#获取列表前2个元素,结果为[1,True]values[-3:-1]#获取列表倒数第一个到倒数第3个元素,结果为[True,b'bytes']values[::2]#获取列表中从头开始的间隔1个取一个的元素,结果为[1,b'bytes']values[3][1]#获取列表中低4个元素的第二个值,结果为'b'获取元素:基于索引的元素访问2.3数据结构列表:有序数据的集合与推导式用途方法说明示例追加append(object)追加元素到列表,默认追加在最后,用于追加单个元素In:a=[1,2,3]In:a.append(4)In:aOut:[1,2,3,4]清空clear()清空整个列表In:a=[1,2,3]In:a.clear()In:aOut:[]复制copy()复制(拷贝)列表为新列表In:a=[1,2,3]In:b=a.copy()In:bOut:[1,2,3]列表操作2.3数据结构列表操作用途方法说明示例批量追加extend(iterable)将另外一份列表对象批量追加到列表中,用于列表的扩展In:a=[1,2,3]In:b=[4,5]In:a.extend(b)In:aOut:[1,2,3,4,5]查询值的索引index(value)查询从列表中某个值第一个匹配项的索引值In:a=[1,2,3]In:a.index(2)Out:1插入insert(index,object)将对象插入列表,与append不同的是可指定插入位置In:a=[1,2,3]In:a.insert(1,4)In:aOut:[1,4,2,3]列表操作2.3数据结构列表操作用途方法说明示例按索引删除元素pop(index=-1)移除列表中的一个(默认最后一个)元素,并且返回该元素的值。使用index值指定删除的位置In:a=[1,2,3]In:a.pop()Out:3In:aOut:[1,2]按值删除元素remove(value)移除列表中某个值的第一个匹配项In:a=[1,2,3]In:a.remove(1)In:aOut:[2,3]反转列表reverse()反转列表In:a=[1,2,3]In:a.reverse()In:aOut:[3,2,1]列表操作2.3数据结构列表操作用途方法说明示例排序列表sort(*,key=None,reverse=False)按列表元素大小排序,通过reverse参数可指定倒序排序In:a=[1,3,2]In:a.sort()In:aOut:[1,2,3]查看列表长度len(object)查看列表中有多少个对象In:a=[1,3,2]In:len(a)Out:3列表操作2.3数据结构列表:有序数据的集合与推导式列表推导式:列表推导式是Python中一种高效的数据处理方式,允许元素在列表内部直接进行计算。[i*2foriinrange(5)]#结果为[0,2,4,6,8]示例1:进行简单计算。以下示例从range(5)中取出每个i并乘以2并返回结果:defsum(n):returnn+n/2[sum(i)foriinrange(5)]#输出[0.0,1.5,3.0,4.5,6.0]示例2:结合函数计算。在列表推导式中应用该函数,对每个元素进行计算并返回结果2.3数据结构元组:不可变的数据集合与推导式元组是一种不可变的有序集合,可以包含任意类型的数据。与列表相比,元组的主要区别在于其不可变性。tuple_example1=()tuple_example2=tuple()#元组也支持嵌套tuple_example3=(1,True,b'bytes',('a','b'))创建元组:使用小括号()或tuple()函数2.3数据结构元组:不可变的数据集合与推导式用途方法说明示例计数count(value)查看元素的出现次数In:a=(1,2,2,2,3)In:a.count(2)Out:3查看索引index(value)查看特定值的第一次出现的索引位置In:a=(1,2,2,2,3)In:a.index(2)Out:1查看元组长度len(object)查看元组中有多少个对象In:a=(1,2,2,2,3)In:len(a)Out:5元组操作:由于元组的不可变性,它不支持像列表那样的编辑操作(如添加、删除、清空),仅支持查看操作。2.3数据结构元组:不可变的数据集合与推导式用途方法说明示例计数count(value)查看元素的出现次数In:a=(1,2,2,2,3)In:a.count(2)Out:3查看索引index(value)查看特定值的第一次出现的索引位置In:a=(1,2,2,2,3)In:a.index(2)Out:1元组操作:由于元组的不可变性,它不支持像列表那样的编辑操作(如添加、删除、清空),仅支持查看操作。2.3数据结构元组:不可变的数据集合与推导式事实上,元组没有直接的推导式。如果尝试使用与列表类似的推导式,得到的将是一个生成器对象,而非元组本身。例如,执行以下代码:a=(i*2foriinrange(5))#这是一个推导式tuple_result=tuple(a)#将生成器转换为元组查看a的类型(type(a)),会发现其类型是<generatorobject<genexpr>at0x0000000004766390>,这表明a是一个生成器对象,而不是元组。要将这个生成器对象转换为元组或列表,可以使用tuple或list函数。例如:2.3数据结构字典:键值对的映射与推导式字典是一个可变集合,以键值对(Key:Value)形式存储数据。例如,将'王守城'的语文成绩表示为:{'王守城':99}。dict_example1={1:'a'}

dict_example2=dict([(1,'a')])创建字典:使用大括号{}或dict()函数字典的键必须是不可变类型,如字符串或元组,而值可以是任意类型,包括字典本身,允许嵌套。例如dict_example3={'tony':98,'lucy':{'firstname':'li'}}2.3数据结构字典:键值对的映射与推导式字典是一个可变集合,以键值对(Key:Value)形式存储数据。例如,将'王守城'的语文成绩表示为:{'王守城':99}。values={'tony':98,'lucy':{'firstname':'li'}}#包含嵌套字典的字典values['tony']#获取字典中Key为tony的值,结果为98values['lucy']['firstname']#获取字典中Key为lucy的值,再从值中找到Key为firstname的值,结果为'li'values.get('tony')#使用字典的get方法获取Key为tony的值,结果为98values.keys()#使用字典的keys方法获取所有的key值,结果为dict_keys(['tony','lucy']),该类型可使用list转换为列表values.values()#使用字典的values方法获取values的值,结果为dict_values([98,{'firstname':'li'}]),该类型可使用list转换为列表values.items()#使用字典的items方法获取所有的键值对组合,结果为dict_items([('tony',98),('lucy',{'firstname':'li'})])获取元素:基于键,不同于列表或元组的索引访问2.3数据结构字典:键值对的映射与推导式用途方法说明示例删除所有元素clear()删除字典内所有元素In:a={'a':1,'b':2}In:a.clear()复制copy()复制字典对象In:a={'a':1,'b':2}In:b=a.copy()In:bOut:{'a':1,'b':2}查看索引setdefault(key,default=None)如果Key不存在与字典中,则设置默认值,与get方法类似In:a={'a':1,'b':2}In:a.setdefault('c',0)In:aOut:{'a':1,'b':2,'c':0}字典操作2.3数据结构字典:键值对的映射与推导式用途方法说明示例更新字典update(dict)将另一个字典中的信息按key更新到现有字典中In:a={'a':1,'b':2}In:b={'a':'fromb'}In:a.update(b)In:aOut:{'a':'fromb','b':2}删除对应的key的值pop(key,[default])删除字典给定键key所对应的值,返回值为被删除的值。如果key不存在,则返回default值。In:a={'a':1,'b':2}In:a.pop('a')Out:1In:aOut:{'b':2}字典操作2.3数据结构字典:键值对的映射与推导式字典推导式是一种高效快速创建和填充字典的方法。以下是一个字典推导式的示例:keys=(str(i*i)foriinrange(3))#通过元组推导式生成包含Value值的生成器values=[i+1foriinrange(3)]#列表推导式生成包含Key值的列表dict_final={k:vfork,vinzip(keys,values)}#通过字典推导式调用上述两个对象生成字典,其结果为:{'0':1,'1':2,'4':3}2.3数据结构集合:独特元素的集合与推导式集合是Python中的一个基本数据结构,特点是包含无序且唯一的元素。与其他数据结构相比,集合的主要特性是元素的不重复性。set_example1={1,2,3}set_example2=set([1,2,3])创建集合:使用大括号{}或set()函数2.3数据结构集合:独特元素的集合与推导式用途方法说明示例增加元素add(object)向集合内增加一个元素In:a={1,2,3}In:a.add(4)In:aOut:{1,2,3,4}移除所有元素clear()移除集合内的所有元素In:a={1,2,3}In:a.clear()In:aOut:set()复制集合copy()复制一个集合In:a={1,2,3}In:b=a.copy()In:bOut:{1,2,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例增加元素add(object)向集合内增加一个元素In:a={1,2,3}In:a.add(4)In:aOut:{1,2,3,4}移除所有元素clear()移除集合内的所有元素In:a={1,2,3}In:a.clear()In:aOut:set()复制集合copy()复制一个集合In:a={1,2,3}In:b=a.copy()In:bOut:{1,2,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例查找集合差异元素difference(set)查找两个集合的差异元素In:a={1,2,3}In:b={1,2}In:a.difference(b)Out:3删除相同元素difference_update(set)从一个集合上删除两个集合中的相同的元素In:a={1,2,3}In:b={2,4}In:a.difference_update(b)In:aOut:{1,3}删除元素discard(object)删除集合中的元素In:a={1,2,3}In:a.discard(2)In:aOut:{1,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例取交集intersection(set)取两个集合交集In:a={1,2,3}In:b={2,4}In:ersection(b)Out:{2}删除不同元素intersection_update(set)从一个集合上删除两个集合中的不相同的元素In:a={1,2,3}In:b={2,4}In:ersection_update(b)Out:{2}删除元素remove(object)元素必须在集合中In:a={1,2,3}In:a.remove(1)In:aOut:{2,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例取不重复集合symmetric_difference()返回两个集合中不重复的元素的集合In:a={1,2,3}In:b={2,4}In:a.symmetric_difference(b)Out:{1,3,4}删除重复元素并添加不重复元素symmetric_difference_update()删除两个集合中重复元素并将不重复元素添加到集合In:a={1,2,3}In:b={2,4}In:a.symmetric_difference_update(b)In:aOut:{1,3,4}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例取并集union(set)取两个集合的并集In:a={1,2,3}In:b={2,4}In:a.union(b)Out:{1,2,3,4}添加集合update(set)向一个集合中添加另一个集合In:a={1,2,3}In:b={2,4}In:a.update(b)In:aOut:{1,2,3,4}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式集合推导式的语法类似于列表推导式。例如:a={iforiinrange(5)}#a的值为{0,1,2,3,4}2.3数据结构数据结构的转换与判断判断数据结构可使用type或isinstance方法。(1)type(object)直接返回对象的类型。(2)isinstance(object,class_or_tuple)判断对象是否为指定类型或元组中的类型,返回布尔值。数据结构的判断方法2.3数据结构数据结构的转换与判断列表和元组之间的转换直接使用list或tuple函数。例如,定义列表a=['1','2','3'],使用tuple(a)可转换为元组('1','2','3')。列表和数组转换列表和元组可直接使用set函数转换为集合。例如,定义元组a=('1','2','1'),使用set(a)转换为集合得到{'1','2'}。注意:在转换过程中,集合会去除重复的元素。列表、元组和集合的转换2.4条件与判断单层条件判断:if语句的应用嵌套条件判断:多层if语句的构建逻辑操作:and、or的灵活运用多条件比较:链式比较、all和any的技巧条件的赋值:基于条件表达式的变量更新2.4条件与判断单层条件判断:if语句的应用单层条件判断使用if语句实现。初始条件使用if定义,中间的条件用elif(如果存在),最后的默认情形使用else。这种结构适用于简单的逻辑分支。a=1#定义一个变量对象ifa==0:#判断a是否为0,如果条件为真(为真的情况下返回结果True)

print('a=0')#打印a=0else:#如果a不为0print('a!=0')#打印a!=02.4条件与判断嵌套条件判断:多层if语句的构建复杂逻辑可能需要嵌套条件判断。在任何if、elif或else块内,都可以包含另一个if条件判断。这样可以处理更复杂的情况。示例如下:a=1#定义了一个变量对象a=1ifa==0:#判断a是否为0,如果条件为真(为真的情况下返回结果True)

print('a=0')#打印a=0elifa>0:#判断a是否大于0,如果条件为真

ifa<=5:#判断a是否小于等于5,如果条件为真

print('a>0且a<=5')#打印a>0且a<=5else:#判断a大于5,如果条件为真

print('a>5')#打印a>5else:#其他情况下

print('a<0')#打印a<02.4条件与判断逻辑操作:and、or的灵活运用在条件判断中,可以使用and和or来组合多个条件。and要求所有条件同时满足,or只需任一条件满足。例如,将条件“a>0”和“a<=5”结合,可以写成:a=1#定义了一个变量对象a=1ifa==0:#判断a是否为0,如果条件为真(为真的情况下返回结果True)

print('a=0')#打印a=0elifa>0anda<=5:#判断a大于0且a小于等于5,如果条件为真

print('a>0且a<=5')#打印a>0且a<=5elifa>5:#判断a大于5,如果条件为真

print('a>5')#打印a>5else:#其他情况下

print('a<0')#打印a<02.4条件与判断多条件比较:链式比较、all和any的技巧链式比较链式比较允许进行一系列的比较操作。例如:表达式a>0anda<=5可以被简化为0<a<=52.4条件与判断多条件比较:链式比较、all和any的技巧all和any的应用当涉及多个条件判断时,使用多个and或or可能显得冗长。此时,all和any函数提供了更简洁的解决方案:(1)all:当所有条件都为真时返回True,否则返回False。例如,all((a>0,b<2,c==8))检查所有条件是否同时满足。(2)any:只要有一个条件为真即返回True,全部为假时返回False。例如,any((a>0,b<2,c==8))检查是否至少有一个条件满足。2.4条件与判断条件的赋值:基于条件表达式的变量更新条件赋值是一种在赋值过程中同时进行条件判断的方法,适用于赋值逻辑较为复杂的情况。它使用条件表达式(三元运算符)来决定赋值内容。例如:a=1#创建变量a=1b=aifa>1else0#根据a的值做判断,当a>1时为b赋值1;否则b赋值02.5循环与控制流程for循环与条件表达式的搭配while循环与条件的判断循环嵌套:处理复杂问题无限循环:正确使用与避免死循环控制循环:break和continue的使用2.5循环与控制流程for循环与条件表达式的搭配for循环用于遍历序列对象,如列表、元组、字典等。例如:foriin[1,2,3]:#从列表[1,2,3]中循环取出每个值print(i)#打印输出对应值for循环经常与条件表达式结合使用以实现复杂功能。例如:foriin[1,2,3]:#从列表[1,2,3]中循环取出每个值

ifi<=2:#新增了对i的判断,当i<=2时执行下面的代码

print(i)#打印输出对应值2.5循环与控制流程while循环与条件的判断while循环基于条件来控制循环的执行。与for循环不同,它不直接迭代序列对象。例如:i=1#定义变量对象1whilei<=2:#使用while循环对i做判断,只有当i<=2时才执行下面的程序print("Good")#打印输出Goodi+=1#对i增加1,表达式也可以写为i=i+12.5循环与控制流程循环嵌套:处理复杂问题循环可嵌套使用,适合处理多层迭代对象。例如:nums=[[11],[21,22]]#定义了一个嵌套列表foriinnums:#外层循环,每次读取nums的一个元素(列表)为iforjini:#内层循环,读取i中的每个元素

print(j)#打印i中的每个元素2.5循环与控制流程无限循环:正确使用与避免死循环while循环可用于创建无限循环,适用于需要持续运行的任务。例如:whileTrue:#while后面的条件为True,意味着每次循环都会调用后面的代码

do_something_here#do_something_here为具体实现逻辑注意无限循环应谨慎使用,以防陷入没有退出条件的死循环。通常,应在while循环中设置明确的退出条件,以保证循环在满足特定情况时能够终止。这些条件可能包括达到某个数值阈值、找到特定字符串,或者满足特定状态等。2.5循环与控制流程控制循环:break和continue的使用根据特定条件来控制循环的继续或终止的两种方式:break和continueforiin[1,2,3,4]:#从列表[1,2,3,4]循环读取iifi<2:#判断当i<3结果为真时,执行下面代码print(i)#打印输出ielifi==2:#判断当i为3结果为真时,执行下面代码continue#略过此次循环,继续下一个循环操作else:#在其他情况下break#意味着终止整个循环不再继续执行break用于彻底结束整个循环过程并退出循环体continue则用于仅结束当前的循环迭代,随后继续执行循环的剩余部分2.6运算符算术运算符:数字计算的基础赋值运算符:简化变量赋值比较运算符:衡量数据大小逻辑运算符:处理复杂判断成员与身份:检验元素存在性和对象身份运算优先级:理解运算次序2.6运算符算术运算符:数字计算的基础运算符名称用途示例+加两个数字对象为相加;两个字符串对象为组合。In:'a'+'b'Out:'ab'-减用于单数字前面代表负数;两个数字对象表示相减。In:1–2Out:-1*乘两个数字对象相乘;单个对象重复多次。In:'a'*3Out:'aaa'/除两个数字对象相除In:1/2Out:0.5%取余返回除法的余数,也叫模运算In:1/2Out:1**幂运算返回x的y次幂In:2**4Out:16//取整返回除数向下取整的整数In:1//2Out:02.6运算符赋值运算符:简化变量赋值运算符名称用途示例=简单赋值最简单的赋值方法In:c=a+bIn:cOut:3+=加法赋值将一个对象加一个数字后再赋值In:a+=2#等价于a=a+2In:aOut:4-=减法赋值将一个对象减去一个数字后再赋值In:a-=2#等价于a=a-2In:aOut:0*=乘法赋值将一个对象乘一个数字后再赋值In:a*=2#等价于a=a*2In:aOut:42.6运算符赋值运算符:简化变量赋值运算符名称用途示例/=除法赋值将一个对象除一个数字后再赋值In:a/=2#等价于a=a/2In:aOut:1.0**=幂赋值将一个对象幂运算一个数字后再赋值In:a**=2#等价于a=a**2In:aOut:4//=取整赋值将一个对象取整赋值一个数字后再赋值In:a//=2#等价于a=a//2In:aOut:12.6运算符比较运算符:衡量数据大小运算符名称用途示例==等于比较两个对象是否相等In:a==bOut:False!=不等于比较两个对象是否不相等In:a!=bOut:True>和>=大于或大于等于比较a是否大于或大于等于In:a>=bOut:True<和<=小于或小于等于比较a是否小于或小于等于bIn:a<=bOut:False2.6运算符逻辑运算符:处理复杂判断运算符名称用途示例not非返回相反的逻辑值In:not(a==b)Out:Trueand且a和b同时为真的情况下返回True,否则为FalseIn:a==2andb==1Out:Trueor或a和b有一个为真的情况下返回True,否则为FalseIn:a==2orb==2Out:True2.6运算符成员与身份:检验元素存在性和对象身份运算符名称用途示例in在..中是否在指定序列对象中找到对象In:ainbOut:Truenotin不在…中是否在指定序列对象中找不到对象In:anotinbOut:False运算符名称用途示例is是比较两个对象是否指向同一个存储对象In:aisbOut:Falseisnot不是比较两个对象是否指向不同的存储对象In:aisnotbOut:True2.6运算符运算优先级:理解运算次序(1)算术运算符:幂运算符**(2)算术运算符:乘*、除/、取余%、取整//(3)算术运算符:加法+、减法-(4)比较运算符:小于等于<=、小于<、大于>、大于等于>=(5)比较运算符:等于==、不等于!=(6)赋值运算符:等于=、加等于+=、减等于-=、乘等于*=、除等于/=、幂等于**=、取整等于//=(7)身份运算符:是is、不是isnot(8)成员运算符:在in、不在notin(9)逻辑运算符:非not、且and、或or。除位运算符外,按优先级由高至低排列的运算符:2.7文本处理与正则表达式字符串格式化:控制信息输出字符串执行:动态生成与执行代码内置方法:处理字符串的常见操作正则表达式:强大的模式匹配工具2.7文本处理与正则表达式字符串格式化:控制信息输出字符串格式化的三种格式化方法:使用%格式化字符串使用str.format()格式化字符串使用f-strings格式化字符串2.7文本处理与正则表达式字符串格式化:控制信息输出使用%格式化字符串通过“format%values”的格式传值。“format”是包含%规则的字符串“values”是待插入的值。2.7文本处理与正则表达式字符串格式化:控制信息输出使用%格式化字符串print(‘mynameis%s,age%d,height%.2f,money%5.2e,satisfied%.2f%%’%(‘lucy’,33,183.5,1000000000.0,90.365))#打印输出mynameislucy,age33,height183.50,money1.00e+09,satisfied90.36%符号用途%s格式化为字符串%d格式化为整数%f格式化为浮点数%e格式化为科学计数法来表示浮点数%%格式化为百分号2.7文本处理与正则表达式字符串格式化:控制信息输出使用str.format()格式化字符串str.format方法通过在字符串中插入{}作为占位符,并结合str.format(values)中的值进行格式化。三种传参方式:位置索引传参默认位置传参关键字传参2.7文本处理与正则表达式字符串格式化:控制信息输出使用str.format()格式化字符串print('mynameis{name},age{age},height{height:.2f},money{money:5.2e},satisfied{percent:.2%}'.format(name='lucy',age=33,height=183.5,money=10000000.0,percent=0.90365))#输出结果:mynameislucy,age33,height183.50,money1.00e+07,satisfied90.36%示例:2.7文本处理与正则表达式字符串格式化:控制信息输出使用f-strings格式化字符串F-string方法允许在字符串前添加f字符以便在{}内直接插入变量。示例:name='lucy'#定义name变量age=33#定义age变量height=183.5#定义height变量money=10000000.0#定义money变量percent=0.90365#定义percent变量print(f'mynameis{name},age{age},height{height:.2f},money{money:5.2e},satisfied{percent:.2%}')#在字符串前

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论