写在前面
还记得上周我们学习的 Python 基本数据类型、运算符和变量吗? 掌握了这些基础知识,我们已经能够进行一些简单的数据操作了。 但是,在实际的数据分析工作中,仅仅掌握基本语法是远远不够的。 我们需要让程序能够 根据条件做出判断,重复执行某些操作,组织和复用代码,才能处理更复杂的数据分析任务。
再看一个典型的数据分析工作场景:
场景:客户分群分析
- 任务描述: 你需要根据客户的消费数据(消费金额、消费频次、最后一次消费时间等)将客户划分为不同的群体,例如“高价值客户”、“潜力客户”、“流失风险客户”等,以便制定针对性的营销策略。
- Excel 操作的局限:
- 条件判断复杂,公式嵌套难以维护。 客户分群规则往往比较复杂,需要根据多个条件进行判断,Excel 公式嵌套层层叠叠,不仅难以编写,而且后期维护和修改非常困难。
- 重复性操作繁琐,效率低下。 如果分群规则需要调整,或者需要对新的客户数据进行分群,就需要重复修改公式或手动操作,效率低下。
- 代码难以复用,功能扩展性差。 Excel 公式和操作很难复用,如果需要扩展分群功能,例如增加新的分群维度或指标,就需要从头开始重新设计。
如果使用 Python,又将如何高效实现客户分群?
- Python 代码流程控制,逻辑清晰,灵活易变:
- 条件判断语句 (if-elif-else) 清晰表达分群逻辑。 Python 的
if-elif-else
语句可以清晰地表达复杂的条件判断逻辑,根据不同的条件执行不同的代码分支,让分群规则一目了然,易于理解和修改。 - 循环语句 (for, while) 批量处理客户数据,高效自动化。 Python 的
for
和while
循环语句可以高效地遍历客户数据,批量进行分群计算,无需手动逐个处理,大大提高效率。 - 函数 (function) 封装分群逻辑,代码复用性高,易于扩展。 可以将分群逻辑封装成 Python 函数,实现代码的模块化和复用,相同的分群函数可以应用于不同的数据集,方便快捷,也易于扩展和维护。
- 条件判断语句 (if-elif-else) 清晰表达分群逻辑。 Python 的
要实现这些强大的功能,就需要掌握 Python 的流程控制语句、函数和模块。 本篇博客将带你学习这些关键的语法知识,让你能够编写更智能、更高效的 Python 代码,为后续更复杂的数据分析任务做好准备。
🚦 一、流程控制语句:让程序具备判断和循环能力
流程控制语句用于控制程序的执行流程,让程序能够根据条件选择不同的执行路径,或者重复执行某些代码块。 Python 中主要的流程控制语句包括:
1. 条件判断语句 (if-elif-else):让程序根据条件做选择
if-elif-else
语句用于根据条件判断的结果,选择执行不同的代码块。 其基本语法结构如下:
if 条件1:
# 条件1 为 True 时执行的代码块
elif 条件2:
# 条件1 为 False 且 条件2 为 True 时执行的代码块
elif 条件3:
# 条件1 和 条件2 为 False 且 条件3 为 True 时执行的代码块
... # 可以有多个 elif 分支
else:
# 所有条件都为 False 时执行的代码块 (可选)
语法要点:
if
、elif
、else
关键字: 用于标识条件判断语句的开始和分支。- 条件表达式:
if
和elif
后面跟的是条件表达式,其结果必须是布尔值 (True
或False
)。 可以使用比较运算符、逻辑运算符等构成条件表达式。 - 冒号
:
:if
、elif
、else
语句行尾必须以冒号:
结尾,表示代码块的开始。 - 代码块缩进:
if
、elif
、else
下面的代码块必须 缩进,通常使用 4 个空格或一个 Tab 键进行缩进。 Python 使用缩进来区分代码块的层次关系,缩进错误会导致语法错误。 elif
分支: 可以有零个或多个elif
分支,用于判断多个条件。else
分支:else
分支是可选的,用于处理所有条件都不满足的情况。 最多只能有一个else
分支,且必须位于所有elif
分支之后。
执行流程:
- 程序首先判断
if
后面的 条件1 是否为True
。 - 如果 条件1 为
True
,则执行if
下面的代码块,并跳过elif
和else
分支。 - 如果 条件1 为
False
,则继续判断第一个elif
后面的 条件2 是否为True
。 - 如果 条件2 为
True
,则执行该elif
下面的代码块,并跳过后续的elif
和else
分支。 - 如果 条件2 也为
False
,则继续判断下一个elif
的条件,以此类推。 - 如果所有
elif
的条件都为False
,且存在else
分支,则执行else
下面的代码块。 - 如果没有
elif
分支或else
分支,且所有条件都为False
,则不执行任何代码块,程序继续向下执行。
示例:根据成绩等级划分
score = 85
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'E'
print(f"成绩 {
score} 分,等级为 {
grade}