一.基础语法与核心概念
1.Lambda
匿名函数,语法简洁,用于创建简单的、一次性使用的函数,形式为 lambda 参数: 表达式 ,比如 lambda x: x * 2 可快速定义一个实现数值翻倍的函数,常配合 map、filter 等函数式编程工具使用。
2.迭代器
遍历可迭代对象(如列表、元组、字典等)元素的过程,可通过 for 循环实现,像 for item in list_data: ,也涉及迭代器(iterator )和生成器(generator )概念,生成器用 yield 关键字创建,能节省内存,按需生成数据 。
在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 __iter__() 和 __next__()。
for 循环实际上创建了一个迭代器对象,并为每个循环执行 next() 方法。
迭代器的创建方法
若要将某个类打造为迭代器,这个类必须实现 __iter__() 和 __next__() 这两个特殊方法,具体要求如下:(先熟练掌握面向对象编程)
__iter__() 方法:
其主要作用是对迭代器进行初始化。
该方法一定要返回迭代器对象自身。
__next__() 方法:
此方法的任务是返回序列里的下一个元素。
当序列中的元素全部返回完毕后,要抛出 StopIteration 异常。
所有类都有名为 __init__() 的函数,它允许您在创建对象时进行一些初始化。
__iter__() 方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。
__next__() 方法也允许您执行操作,并且必须返回序列中的下一个项目。
StopIteration 异常
next()语句过多,或者for循环太长,就写stoplteration停止异常处理。
在 __next__() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误。
当 self.a 大于 20 时,抛出 StopIteration 异常,告知迭代已经结束,这是 Python 迭代器停止迭代的标准方式。
3.多态
属于面向对象编程特性,不同类的对象对同一方法调用呈现不同行为,比如子类重写父类方法,调用时根据对象实际类型执行对应实现,让程序更灵活、可扩展 。
函数多态:一个可用于不同对象的 Python 函数的例子是 len() 函数。
类的多态
继承类多态
继承的类,即使是pass空的,也覆盖了pf()方法
4.作用域
指变量能被访问的代码范围,分局部作用域(函数内定义的变量,函数外一般无法访问 )、全局作用域(模块级定义的变量,模块内多数地方可访问 )等,理解它可避免变量名冲突,合理管理变量生命周期 。
局部作用域:在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。
全局作用域:在 Python 代码主体中创建的变量是全局变量,属于全局作用域。全局变量在任何范围(全局和局部)中可用。
命名变量:如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部)。
Global 关键字:如果您需要创建一个全局变量,但被卡在本地作用域内,则可以使用 global 关键字。global 关键字使变量成为全局变量。
5.Try Except
用于异常处理,try 块放可能出错的代码,except 块捕获并处理异常(如 except ValueError: 处理值错误异常 ),还可搭配 else(try 块无异常时执行 )、finally(无论有无异常都会执行,常用来做资源清理等 ),增强程序健壮性 。
try 块允许您测试代码块以查找错误。
except 块允许您处理错误。
finally 块允许您执行代码,无论 try 和 except 块的结果如何。
多个异常:您可以根据需要定义任意数量的 exception 块,例如,假如您要为特殊类型的错误执行特殊代码块。
二.数据结构与数据处理类
1.数组
通常可理解为列表(list ,如 [1, 2, 3] ,能动态增删元素 ),也有 array 模块的数组(更接近 C 语言数组,存储同类型数据,节省空间 ),用于有序存储、操作一组数据 。
2.JSON
json 模块用于处理 JSON 格式数据,json.dumps() 可将 Python 对象(如字典、列表 )转成 JSON 字符串,json.loads() 能把 JSON 字符串解析回 Python 对象,方便与其他系统进行数据交互,比如网络请求传输数据 。JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本。
Python 对象都可以转换为 JSON 字符串。
3.字符串格式化
多种方式实现,如 % 格式化(print("姓名:%s,年龄:%d" % ("张三", 20)) )、format 方法("姓名:{},年龄:{}".format("张三", 20) )、f - string(Python 3.6+ ,name = "张三"; age = 20; print(f"姓名:{name},年龄:{age}") ),用于按需求拼接、展示字符串内容 。
为了确保字符串按预期显示,我们可以使用 format() 方法对结果进行格式化。
三.面向对象编程类
1.类/对象
类是创建对象的蓝图,用 class 定义,包含属性(数据 )和方法(函数 ),对象是类的实例,通过 类名() 创建,如 class Person: def __init__(self, name): self.name = name; p = Person("张三") ,是面向对象编程的基础 。
在 Python 中,__init__() 是一个特殊的方法(也称为构造函数),用于在创建类的实例时初始化对象的属性。它是类定义中的核心组成部分,负责设置对象的初始状态。
核心作用
当你使用 ClassName() 创建一个对象时,Python 会自动调用 __init__() 方法,并将新创建的对象作为第一个参数(通常命名为 self)传入。通过 self,你可以为对象绑定属性(如姓名、年龄等),这些属性将在对象的整个生命周期内存在。
对象方法,对象也可以包含方法。对象中的方法是属于该对象的函数。
self 参数是对类的当前实例的引用,用于访问属于该类的变量。
2.继承
子类可继承父类的属性和方法,使用 class 子类名(父类名): 定义,子类能重写父类方法,也可扩展新功能,实现代码复用,比如 class Student(Person): ,让 Student 类复用 Person 类已有逻辑并定制自身特性 。
继承允许我们定义继承另一个类的所有方法和属性的类。
父类是继承的类,也称为基类。
子类是从另一个类继承的类,也称为派生类。
我们已经创建了一个子类,它继承了父类的属性和方法。当然子类也可以增加__init__函数。
每次使用类创建新对象时,都会自动调用 __init__() 函数。
在子类中添加一个与父类中的函数同名的方法,则将覆盖父方法的继承。
四.模块与工具类
1.模块
是包含 Python 定义和语句的文件(.py ),可通过 import 导入,如 import math 导入数学模块使用其函数(math.sqrt(4) 计算平方根 ),也可自定义模块并在其他脚本中导入,便于代码组织和复用 。
由于模块只能用.py文件后缀,所以我们使用pycharm来熟悉。
修改模块文件名,让其符合 Python 命名规范。Python 模块命名规范:
由字母、数字、下划线组成;
不能以数字开头;
一般采用小写字母,多个单词可用下划线连接(如 my_module.py )。
先创建模块文件,名字随意,我以abcd.py为例,然后写一个加法内置函数。
再新建一个文件,调用模块。
注释:如果使用模块中的函数时,请使用以下语法:
module_name.function_name
变量也可以调用,以下面的字典为例,as创建别名,方便调用
直接用别名方便调用
from导入模块部件和dir()函数列出模块所有函数
2.PIP
Python 的包管理工具,用于安装、升级、卸载第三方库,比如 pip install requests 安装 requests 库,pip list 查看已安装库列表,方便扩展 Python 功能,利用丰富的第三方资源 。
如果尚未安装 PIP,可以从此页面下载并安装:https://pypi.org/project/pip/
查找包:在 https://pypi.org/,您可以找到更多的包。
删除包:请使用 uninstall 命令来删除包。回复y同意删除
列出包:请使用 list 命令列出系统上安装的所有软件包。
3.命令输入
可通过 input() 函数实现,如 user_input = input("请输入内容:") ,获取用户在控制台的输入,用于交互性程序,让程序根据用户输入执行不同逻辑 。
Python 3.6 使用 input() 方法。Python 2.7 使用 raw_input() 方法。
五.特定功能类
1.日期
datetime 模块处理日期和时间,可创建日期对象(datetime.datetime(2025, 7, 2) )、格式化输出(dt.strftime("%Y-%m-%d %H:%M:%S") )、进行时间运算(如两个日期相减得到时间差 ),满足程序中对时间处理的需求 。
以下是整理后的日期时间格式化代码表格:
格式代码 | 含义描述 | 示例(英文/中文) |
---|---|---|
日期相关 | ||
%Y | 4 位年份 | 2023 |
%y | 2 位年份(00-99) | 23 |
%m | 2 位月份(01-12) | 05 |
%B | 完整月份名称(本地化) | May / 五月 |
%b | 缩写月份名称(本地化) | May / 五 |
%d | 2 位日期(01-31) | 08 |
%j | 年内天数(001-366) | 128 |
%U | 年内周数(周日为一周起点,00-53) | 18 |
%W | 年内周数(周一为一周起点,00-53) | 18 |
%w | 周内天数(0=周日,6=周六) | 1(表示周一) |
时间相关 | ||
%H | 24 小时制小时(00-23) | 14 |
%I | 12 小时制小时(01-12) | 02 |
%M | 2 位分钟(00-59) | 35 |
%S | 2 位秒数(00-59) | 42 |
%f | 微秒(000000-999999) | 123456 |
%p | 上/下午标识(本地化) | AM、PM / 上午、下午 |
日期时间组合 | ||
%c | 本地化日期时间 | Wed May 08 14:35:42 2023(英文) |
%x | 本地化日期 | 05/08/23(英文)、2023-05-08(中文) |
%X | 本地化时间 | 14:35:42 |
时区与其他 | ||
%Z | 时区名称(若存在) | UTC、CST |
%z | 时区偏移(±HHMM) | +0800(东八区) |
%% | 转义%符号 | % |
表格已按类别分组,并标注中英文示例差异。适用于Python的strftime
、strptime
等场景。
2.数学
math 模块提供众多数学相关函数,像三角函数(math.sin() )、对数函数(math.log() )、常数(math.pi )等,cmath 模块用于复数数学运算,助力进行数值计算相关任务 。
min() 和 max() 函数可用于查找可迭代对象中的最低或最高值。abs()绝对值。pow(x, y) 函数返回 x 的 y 次幂(xy)的值。
Python 的 math
模块提供了丰富的数学函数,用于执行基本和高级数学运算。这些函数涵盖三角函数、对数函数、幂运算、取整操作等。以下表格列出了 math
模块的所有方法(基于 Python 3.10 标准库),包括方法名称、描述、参数和返回值。每个描述中涉及的数学表达式已使用 $...$
格式包裹以确保清晰。
注意:
- 参数类型:
x
,y
等通常为浮点数(float
),但某些函数支持整数(int
)。 - 返回值类型:大多数方法返回
float
,但部分返回整数(int
)或元组。 - 对于可选参数,使用方括号
[]
表示,例如[base]
。 - 本表格按函数类别分组,便于查阅。
方法名称 | 描述 | 参数 | 返回值 |
---|---|---|---|
基本运算函数 | |||
math.sqrt(x) | 计算 $x$ 的平方根($x \geq 0$) | x: float | float |
math.pow(x, y) | 计算 $x$ 的 $y$ 次幂($x^y$) | x: float , y: float | float |
math.exp(x) | 计算 $e$ 的 $x$ 次幂($e^x$) | x: float | float |
math.expm1(x) | 计算 $e^x - 1$(用于小 $x$ 的高精度) | x: float | float |
math.log(x[, base]) | 计算对数(默认自然对数 $\ln(x)$;可选底数 $\log_{\text{base}}(x)$) | x: float , [base]: float | float |
math.log10(x) | 计算以 10 为底的对数($\log_{10}(x)$) | x: float | float |
math.log2(x) | 计算以 2 为底的对数($\log_{2}(x)$) | x: float | float |
math.log1p(x) | 计算 $\ln(1 + x)$(用于小 $x$ 的高精度) | x: float | float |
math.fabs(x) | 计算 $x$ 的绝对值($ | x | $) |
math.fmod(x, y) | 计算浮点数余数($x \mod y$) | x: float , y: float | float |
math.fsum(iterable) | 精确求和浮点数序列(减少累积误差) | iterable: iterable[float] | float |
math.prod(iterable, *, start=1) | 计算序列的乘积($\prod \text{iterable} \times \text{start}$,Python 3.8+) | iterable: iterable[float] , start: float = 1 | float |
math.hypot(*coordinates) | 计算欧几里得范数($\sqrt{\sum coordinates_i^2}$) | *coordinates: float | float |
math.dist(p, q) | 计算点 $p$ 和 $q$ 的欧几里得距离(Python 3.8+) | p: tuple[float, ...] , q: tuple[float, ...] | float |
三角函数(输入为弧度) | |||
math.sin(x) | 计算 $x$ 的正弦值($\sin(x)$) | x: float | float |
math.cos(x) | 计算 $x$ 的余弦值($\cos(x)$) | x: float | float |
math.tan(x) | 计算 $x$ 的正切值($\tan(x)$) | x: float | float |
math.asin(x) | 计算 $x$ 的反正弦值($\arcsin(x)$,$-1 \leq x \leq 1$) | x: float | float |
math.acos(x) | 计算 $x$ 的反余弦值($\arccos(x)$,$-1 \leq x \leq 1$) | x: float | float |
math.atan(x) | 计算 $x$ 的反正切值($\arctan(x)$) | x: float | float |
math.atan2(y, x) | 计算 $\arctan(y/x)$(考虑象限) | y: float , x: float | float |
双曲函数 | |||
math.sinh(x) | 计算 $x$ 的双曲正弦值($\sinh(x)$) | x: float | float |
math.cosh(x) | 计算 $x$ 的双曲余弦值($\cosh(x)$) | x: float | float |
math.tanh(x) | 计算 $x$ 的双曲正切值($\tanh(x)$) | x: float | float |
math.asinh(x) | 计算 $x$ 的反双曲正弦值($\text{arsinh}(x)$) | x: float | float |
math.acosh(x) | 计算 $x$ 的反双曲余弦值($\text{arcosh}(x)$,$x \geq 1$) | x: float | float |
math.atanh(x) | 计算 $x$ 的反双曲正切值($\text{artanh}(x)$,$-1 < x < 1$) | x: float | float |
角度和弧度转换 | |||
math.degrees(x) | 将弧度 $x$ 转换为角度 | x: float | float |
math.radians(x) | 将角度 $x$ 转换为弧度 | x: float | float |
取整和离散函数 | |||
math.ceil(x) | 向上取整(最小整数 $\geq x$) | x: float | int |
math.floor(x) | 向下取整(最大整数 $\leq x$) | x: float | int |
math.trunc(x) | 截断取整(向零取整) | x: float | int |
math.modf(x) | 返回 $x$ 的小数部分和整数部分(作为元组) | x: float | tuple[float, float] |
math.factorial(x) | 计算 $x$ 的阶乘($x!$,$x$ 为非负整数) | x: int | int |
math.gcd(a, b) | 计算 $a$ 和 $b$ 的最大公约数 | a: int , b: int | int |
math.isqrt(n) | 计算 $n$ 的整数平方根($\lfloor \sqrt{n} \rfloor$,Python 3.8+) | n: int | int |
math.comb(n, k) | 计算组合数 $\binom{n}{k}$(Python 3.8+) | n: int , k: int | int |
math.perm(n, k=None) | 计算排列数 $P(n, k)$($k$ 可选,默认 $k=n$,Python 3.8+) | n: int , [k]: int | int |
特殊函数 | |||
math.erf(x) | 计算误差函数 $\text{erf}(x)$ | x: float | float |
math.erfc(x) | 计算互补误差函数 $\text{erfc}(x) = 1 - \text{erf}(x)$ | x: float | float |
math.gamma(x) | 计算 Gamma 函数 $\Gamma(x)$ | x: float | float |
math.lgamma(x) | 计算 Gamma 函数绝对值的自然对数 $\ln( | \Gamma(x) | )$ |
浮点数操作和检查 | |||
math.frexp(x) | 将 $x$ 分解为尾数 $m$ 和指数 $e$($x = m \times 2^e$) | x: float | tuple[float, int] |
math.ldexp(x, i) | 计算 $x \times 2^i$ | x: float , i: int | float |
math.nextafter(x, y) | 返回 $x$ 向 $y$ 方向的下一个浮点数 | x: float , y: float | float |
math.remainder(x, y) | 计算 IEEE 754 余数($x - n \times y$,$n$ 为最接近整数,Python 3.7+) | x: float , y: float | float |
math.copysign(x, y) | 返回 $x$ 的绝对值,但符号与 $y$ 相同 | x: float , y: float | float |
math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) | 检查 $a$ 和 $b$ 是否接近(基于相对和绝对容差) | a: float , b: float , rel_tol: float , abs_tol: float | bool |
math.isfinite(x) | 检查 $x$ 是否为有限数(非无穷或 NaN) | x: float | bool |
math.isinf(x) | 检查 $x$ 是否为无穷大 | x: float | bool |
math.isnan(x) | 检查 $x$ 是否为 NaN(非数字) | x: float | bool |
3.RegEx
正则表达式借助 re 模块实现,用于字符串的模式匹配、查找、替换等操作,比如 re.search(r'\d+', "abc123def") 查找字符串中的数字,可高效处理复杂的文本筛选、校验场景,像验证邮箱格式、提取特定格式内容等 。
常见正则表达式元字符表格
元字符 | 描述 | 示例 |
---|---|---|
. | 匹配任意单个字符 | a.c 匹配 "abc", "a1c" |
^ | 匹配行首 | ^a 匹配 "a"开头的行 |
$ | 匹配行尾 | a$ 匹配 "a"结尾的行 |
* | 匹配0次或多次 | ab* 匹配 "a", "abbbb" |
+ | 匹配1次或多次 | ab+ 匹配 "ab", "abbb" |
? | 匹配0次或1次 | ab? 匹配 "a", "ab" |
\d | 匹配数字 | \d 匹配 "0"-"9" |
\w | 匹配字母数字下划线 | \w 匹配 "a-z","0-9","_" |
\s | 匹配空白字符 | \s 匹配空格,tab等 |
[] | 匹配括号内任一字符 | [abc] 匹配 "a","b","c" |
[^] | 不匹配括号内任一字符 | [^abc] 匹配非"a","b","c" |
` | ` | 或操作 |
() | 分组 | (ab)+ 匹配 "ab","abab" |
{n} | 匹配n次 | a{2} 匹配 "aa" |
{n,} | 匹配至少n次 | a{2,} 匹配 "aa","aaa" |
{n,m} | 匹配n到m次 | a{2,4} 匹配 "aa","aaa","aaaa" |
六.文件处理
1.文件打开
一、核心工具:open () 函数
open() 函数得给它两个关键信息:
文件名:就是你要操作的那个文件叫啥,比如 test.txt ,得确保 Python 能找到它(知道在哪个文件夹里,或者用正确路径)。
模式:决定以啥方式打开文件,不同方式能干不同事儿,就像你用不同工具打开盒子,有的只能看,有的能往里面加东西,有的会把原来东西清掉重新放 。
二、四种主要 “打开方式”(模式)
“r”(读取 - 默认)
就像你想打开一本书看内容,用这模式。文件得存在,不然 Python 就报错,说找不到文件。打开后,你能读里面的文字(内容),但不能直接改 。比如你打开小说文本,看看主角干了啥。
“a”(追加)
好比你有个日记本,想接着写点新事儿,用这模式。文件不存在的话,Python 会自动创建一个新的。打开后,新写的内容会加在文件原来内容的末尾,不会把之前写的覆盖掉 。像记每日心情,每天接着在后面写。
“w”(写入)
这就像你要重新写一篇作文,用新内容替换原来的。文件不存在会创建,要是文件本来有内容,打开后原来的内容会被清空,然后写入新东西 。比如你要整理新的旅行攻略,把旧的攻略内容全换成新的。
“x”(创建)
专门用来新建文件的,而且保证是全新的。如果要创建的文件已经存在了,Python 就报错,不让你创建,避免不小心把已有的文件覆盖掉 。就像你要新建一个独一无二的 “秘密笔记” 文件,确保之前没有重名的。
三、文本还是二进制?额外可选模式
“t”(文本 - 默认):平常处理文字内容,像小说、日记、代码文件这些,用这模式,Python 会把内容当作文本处理,能看懂文字啥意思 。
“b”(二进制):处理图片、音乐、视频这些文件时用。因为这些文件不是普通文字,是一堆二进制数据(电脑能懂的 0 和 1 组合),用这模式才能正确读写,不然就会乱套,读不出正常内容 。比如你想复制一张图片,就得用二进制模式打开它,再用二进制模式写入新文件 。
2.文件读取
先随便写一个文本文件。
读取文件。
3.文件写入\创建
写入已有文件:如需写入已有的文件,必须向 open()
函数添加参数:
"a"
- 追加 - 会追加到文件的末尾,"w"
- 写入 - 会覆盖任何已有的内容。
覆盖文件写文本。
创建新文件
如需在 Python 中创建新文件,请使用 open() 方法,并使用以下参数之一:
"x" - 创建 - 将创建一个文件,如果文件存在则返回错误
"a" - 追加 - 如果指定的文件不存在,将创建一个文件
"w" - 写入 - 如果指定的文件不存在,将创建一个文件
4.文件删除
删除文件:如需删除文件,必须导入 OS 模块,并运行其 os.remove() 函数:
七.四大标准库
1.NumPy
简介:NumPy(Numerical Python)是 Python 科学计算的基础库,提供了高性能的多维数组对象 ndarray ,以及大量用于对数组进行操作的函数。
核心功能:
强大的数组对象:ndarray 支持高效的存储和快速的数值计算,相比 Python 内置的列表,占用空间更小,计算速度更快。例如,在进行向量或矩阵运算时,ndarray 可以大幅提升计算效率。
丰富的数学函数:涵盖了三角函数、指数函数、对数函数等各种数学运算函数,能直接对数组进行操作,无需编写复杂的循环。
广播机制:使得不同形状的数组之间也能进行运算,大大简化了代码的编写。比如,一个标量可以和一个数组进行运算,数组中的每个元素都会与该标量进行相应的操作。
应用场景:广泛应用于机器学习、深度学习、数据分析、物理模拟等领域,是众多科学计算库的基础,像 SciPy、Pandas 等库都依赖于 NumPy 进行高效的数值计算。
以下是NumPy常用算法的分类表格整理:
数学运算
算法类别 | 具体函数示例 | 功能描述 |
---|---|---|
基础算术 | add() , subtract() , multiply() , divide() | 四则运算 |
指数对数 | exp() , log() , log10() | 指数与对数计算 |
三角函数 | sin() , cos() , tan() | 三角函数运算 |
统计计算
算法类别 | 具体函数示例 | 功能描述 |
---|---|---|
基础统计 | mean() , median() , std() | 均值/中位数/标准差 |
极值统计 | amin() , amax() , ptp() | 最小值/最大值/极差 |
百分位 | percentile() | 计算分位数 |
线性代数
算法类别 | 具体函数示例 | 功能描述 |
---|---|---|
矩阵操作 | dot() , matmul() | 矩阵乘法 |
分解运算 | linalg.svd() , linalg.qr() | 奇异值分解/QR分解 |
特征值 | linalg.eig() | 计算特征值与特征向量 |
数组操作
算法类别 | 具体函数示例 | 功能描述 |
---|---|---|
形状操作 | reshape() , transpose() | 改变数组形状 |
排序筛选 | sort() , argsort() | 排序与索引排序 |
集合操作 | unique() , intersect1d() | 唯一化/交集运算 |
表格内容基于NumPy官方文档功能分类整理,实际使用时需结合具体参数配置。
2.Pandas
简介:Pandas 是一个用于数据处理和分析的强大库,提供了数据结构 Series(一维数组)和 DataFrame(二维表格型数据结构),方便用户进行数据的清洗、转换、分析和可视化。
核心功能:
数据结构:Series 可以看作是带有标签的一维数组,常用于存储和处理一列数据;DataFrame 类似于 Excel 表格,能够方便地处理结构化数据,每一列可以是不同的数据类型。
数据读取与写入:支持读取多种格式的数据,如 CSV、Excel、SQL 数据库等,也能将处理后的数据写回这些格式。
数据清洗与处理:提供了丰富的函数用于处理缺失值、重复值,以及数据的分组、聚合、透视等操作。例如,使用 dropna() 方法可以快速删除包含缺失值的行或列。
时间序列分析:对于时间序列数据有很好的支持,能够方便地进行时间序列的重采样、频率转换等操作。
应用场景:在数据分析、数据挖掘、商业智能等领域被广泛使用,是处理结构化数据的首选工具,能够帮助用户快速地从大量数据中提取有价值的信息。
Pandas常用算法表格
算法类型 | 方法名 | 功能描述 | 示例代码片段 |
---|---|---|---|
数据清洗 | dropna() | 删除包含缺失值的行/列 | df.dropna(axis=0) |
fillna() | 填充缺失值 | df.fillna(value=0) | |
数据筛选 | loc[] | 标签索引选择 | df.loc[df['col'] > 10] |
iloc[] | 位置索引选择 | df.iloc[0:5, 1:3] | |
统计计算 | mean() | 计算平均值 | df['col'].mean() |
groupby() | 分组聚合 | df.groupby('key').sum() | |
排序 | sort_values() | 按值排序 | df.sort_values(by='col') |
合并 | merge() | 数据库风格的合并 | pd.merge(df1, df2, on='key') |
时间处理 | to_datetime() | 转换为时间格式 | pd.to_datetime(df['date']) |
机器学习相关算法
算法类型 | 方法名 | 应用场景 | 示例代码片段 |
---|---|---|---|
预处理 | StandardScaler() | 数据标准化 | from sklearn.preprocessing import StandardScaler |
分类 | train_test_split() | 数据集分割 | from sklearn.model_selection import train_test_split |
评估 | accuracy_score() | 分类准确率计算 | from sklearn.metrics import accuracy_score |
表格内容可直接复制使用,所有方法均为Pandas或与其紧密集成的sklearn方法。
3.SciPy
简介:SciPy 是基于 NumPy 构建的用于科学和工程计算的库,它在 NumPy 的基础上,提供了更高级的算法和工具,涵盖了优化、线性代数、积分、插值、特殊函数、信号处理等多个领域。
核心功能:
优化算法:包含了各种优化算法,如最小化、最大化问题的求解,可用于求解数学规划、机器学习中的参数优化等问题。
线性代数:扩展了 NumPy 的线性代数功能,提供了更丰富的矩阵分解、特征值计算等函数,适用于求解线性方程组、主成分分析等。
积分与插值:能够进行数值积分和插值计算,在科学研究和工程计算中,用于处理实验数据的拟合、函数的数值积分等。
信号处理:提供了滤波、频谱分析等信号处理工具,常用于音频、图像等信号的处理。
应用场景:在科学研究、工程设计、机器学习算法实现等场景中发挥着重要作用,帮助科研人员和工程师解决各种复杂的计算问题。
以下是Scipy中常用算法的分类表格(基于模块和功能整理):
优化算法(scipy.optimize)
算法名称 | 功能描述 | 典型函数 |
---|---|---|
BFGS | 拟牛顿法优化 | fmin_bfgs |
L-BFGS-B | 内存受限的BFGS | fmin_l_bfgs_b |
Nelder-Mead | 单纯形法 | fmin |
COBYLA | 约束优化 | fmin_cobyla |
Dual Annealing | 全局优化(模拟退火) | dual_annealing |
线性代数(scipy.linalg)
算法名称 | 功能描述 | 典型函数 |
---|---|---|
LU分解 | 矩阵分解 | lu |
QR分解 | 正交分解 | qr |
SVD | 奇异值分解 | svd |
特征值分解 | 对称矩阵分解 | eigh |
插值(scipy.interpolate)
算法名称 | 功能描述 | 典型函数 |
---|---|---|
线性插值 | 分段线性拟合 | interp1d |
样条插值 | 平滑曲线拟合 | UnivariateSpline |
RBF | 径向基函数插值 | Rbf |
信号处理(scipy.signal)
算法名称 | 功能描述 | 典型函数 |
---|---|---|
FIR滤波 | 有限脉冲响应滤波 | firwin |
IIR滤波 | 无限脉冲响应滤波 | iirfilter |
频谱分析 | 快速傅里叶变换 | spectrogram |
表格内容基于Scipy 1.11版本的核心功能整理,实际使用时需结合具体参数配置。
4.Matplotlib
简介:Matplotlib 是 Python 最常用的数据可视化库,它提供了一套和 MATLAB 类似的绘图 API ,能够创建各种高质量的静态、动态、交互式图表,如折线图、柱状图、散点图、饼图等。
核心功能:
基本绘图:通过简单的函数调用,就可以绘制各种常见的图表,并且可以对图表的颜色、线条样式、字体等进行详细的定制。例如,使用 plot() 函数绘制折线图,scatter() 函数绘制散点图。
多子图布局:支持在一个图形中创建多个子图,方便进行数据的对比和分析。
3D 绘图:除了 2D 绘图,还提供了一定的 3D 绘图功能,可以绘制三维曲面图、散点图等。
动画制作:可以创建动态的图表,用于展示数据的变化过程。
应用场景:在数据分析、数据报告、学术论文、商业展示等领域都有着广泛的应用,能够将数据以直观、美观的方式呈现出来,帮助用户更好地理解和传达数据中的信息 。
Matplotlib 常用算法及功能表格
算法/功能 | 描述 | 相关函数/类 |
---|---|---|
折线图 | 绘制连续数据点之间的连线,用于趋势分析。 | plt.plot() |
散点图 | 显示数据点的分布,适用于相关性分析。 | plt.scatter() |
柱状图 | 比较不同类别的数值大小,支持垂直或水平方向。 | plt.bar() , plt.barh() |
直方图 | 统计数据的频率分布,展示数据分布规律。 | plt.hist() |
饼图 | 展示各部分占整体的比例,适用于占比分析。 | plt.pie() |
箱线图 | 显示数据分散情况(四分位数、离群点等)。 | plt.boxplot() |
等高线图 | 用等高线表示三维数据的二维投影,常用于科学计算。 | plt.contour() , plt.contourf() |
3D绘图 | 绘制三维曲面、散点或线框图,需导入 mpl_toolkits.mplot3d 。 | Axes3D.plot_surface() , Axes3D.scatter() |
图像显示 | 加载和显示数组形式的图像数据(如 NumPy 数组)。 | plt.imshow() |
颜色映射 | 通过色条(colorbar)关联数据值与颜色。 | plt.colorbar() |
文本标注 | 在图形中添加文字说明或箭头标注。 | plt.text() , plt.annotate() |
子图布局 | 创建多子图网格,灵活排列图形。 | plt.subplots() , GridSpec |
坐标轴调整 | 设置坐标轴范围、刻度、标签或对数缩放。 | plt.xlim() , plt.xticks() , plt.xscale() |
图例与标题 | 添加图例区分数据系列,设置标题和坐标轴标签。 | plt.legend() , plt.title() , plt.xlabel() |
动画 | 生成动态变化的效果,需使用 FuncAnimation 类。 | animation.FuncAnimation() |
此表格覆盖了 Matplotlib 的核心绘图算法和功能,适用于大多数数据可视化场景。如需更高级的定制,可参考官方文档或结合 NumPy、Pandas 进行数据处理。