尼恩:LLM大模型学习圣经PDF的起源
《Python学习圣经:从0到1精通Python,打好AI基础》 《LLM大模型学习圣经:从0到1吃透Transformer技术底座》 《LangChain学习圣经:从0到1精通LLM大模型应用开发的基础框架》 《LLM大模型学习圣经:从0到1精通RAG架构,基于LLM+RAG构建生产级企业知识库》 《SpringCloud + Python 混合微服务架构,打造AI分布式业务应用的技术底层》 《LLM大模型学习圣经:从0到1吃透大模型的顶级架构》
本文目录
- 尼恩:LLM大模型学习圣经PDF的起源
- 本文目录
- 第一部分:基础入门
- 第一章:Python简介
- 1.1 Python的历史与特点
- 1.1.1 Python的历史
- 1.1.2 Python的主要特点
- 1.2 Python的应用领域
- 1.2.1 Web开发
-常用框架和工具
-示例代码
- 1.2.2 数据分析
-常用库和工具
-示例代码
- 1.2.3 人工智能与机器学习
-常用库和工具
-示例代码
- 1.2.4 自动化脚本
-常用库和工具
-示例代码
- 1.2.5 其他应用领域
- 1.3 如何安装Python
- 1.3.1 Windows系统安装
- 1.3.2 macOS系统安装
- 1.3.3 Linux系统安装
- 1.4 Python环境配置
- 1.4.1 Python版本管理(pyenv)
-1.4.1.1 版本管理的概念和作用
-1.4.1.2 安装和使用pyenv
- 1.4.2 虚拟环境管理(virtualenv, venv)
-1.4.2.1 虚拟环境的概念和作用
-1.4.2.2 使用venv创建虚拟环境
-1.4.2.3 使用virtualenv创建虚拟环境
- 1.4.3 Anaconda的安装与配置
-1.4.3.1 Anaconda的概念和作用
-1.4.3.2 安装Anaconda
-1.4.3.3 使用conda管理虚拟环境和包
- 1.5 IDE选择和配置
- 1.5.1 PyCharm安装与基本配置
-1.5.1.1 安装PyCharm
-1.5.1.2 配置Python解释器
-1.5.1.3 基本配置和使用
- 1.5.2 VS Code安装与基本配置
-1.5.2.1 安装VS Code
-1.5.2.2 安装Python扩展
-1.5.2.3 配置Python解释器
-1.5.2.4 创建并运行Python文件
- 1.5.3 其他常用IDE介绍
-1.5.3.1 Jupyter Notebook
-1.5.3.2 其他IDE
- 第2章:Python基础语法
- 2.1 第一个Python程序
- 编写和运行第一个Python程序
- 2.2 数据类型
- 2.2.1 数字(整数、浮点数、复数)
-整数(int)
-浮点数(float)
-复数(complex)
- 2.2.2 字符串
- 2.2.3 列表
- 2.2.4 元组
- 2.2.5 字典
- 2.2.6 集合
- 2.3 变量与常量
- 2.3.1 变量的定义与使用
-定义变量
-使用变量
-变量命名规则
- 2.3.2 常量的定义与约定
-定义常量
-使用常量
-常量命名约定
- 2.4 运算符
- 2.4.1 算术运算符
- 2.4.2 比较运算符
- 2.4.3 逻辑运算符
- 2.4.4 赋值运算符
- 2.4.5 位运算符
- 2.4.6 运算符优先级
- 2.5 控制结构
- 2.5.1 条件语句(if, elif, else)
-if 语句
-if...else 语句
-if...elif...else 语句
-嵌套条件语句
-条件表达式(三元运算符)
- 2.5.2 循环语句(for, while)
-for 循环
-while 循环
-嵌套循环
- 2.5.3 循环控制(break, continue, pass)
- 2.6 函数基础
- 2.6.1 函数的定义与调用
-定义一个简单的函数
-调用函数
-带参数的函数
-带返回值的函数
- 2.6.2 函数参数
- 2.6.3 函数返回值
- 2.6.4 函数文档字符串
- 第3章:模块与包
- 3.1 标准库的使用
- 3.2 第三方库的安装与使用
- 3.2.1 pip的使用
- 3.2.2 常用第三方库安装示例
- 3.3 自定义模块与包
- 3.4 常用第三方库介绍
- 第4章:文件与异常处理
- 4.1 文件读写操作
- 4.1.1 读文件
- 4.1.2 写文件
- 4.1.3 文件模式
- 4.2 文件和目录操作
- 4.3 异常捕获与处理
- 4.4 日志记录
- 第二部分:高级进阶
- 第5章:面向对象编程
- 5.1 类与对象
- 5.1.1 类的定义
-示例:定义一个简单的类
- 5.1.2 对象的创建与使用
-示例:创建和使用对象
- 5.1.3 类属性和实例属性
-示例:类属性和实例属性
- 5.2 封装、继承、多态
- 5.2.1 封装的概念
-示例:封装的实现
- 5.2.2 继承的实现
- 5.3 魔法方法与特殊属性
- 5.3.1 常用魔法方法
-init
-str
-repr
- 5.3.2 特殊属性
-dict
-class
- 5.3.3 综合示例
- 5.4 类的高级话题
- 5.4.1 静态方法与类方法
- 5.4.3 迭代器与生成器
- 第6章:函数式编程
- 6.1 高阶函数
- 6.1.1 定义与使用
- 6.2 内置函数
- 6.3 闭包与装饰器
- 6.4 生成器表达式与列表推导式
- 第7章:并发编程
- 7.1 线程与进程
- 7.1.1 threading模块
- 7.1.2 multiprocessing模块
- 7.2 异步编程
- 7.2.1 asyncio模块基础
- 7.2.3 异步编程与多线程编程和多进程编程的区别
- 7.3 并发编程最佳实践
- 第8章 网络编程
- 8.1 套接字编程
- 8.3 Web框架初探
- 8.3.1 Flask简介与快速入门
- 第三部分:实战演练
- 第9章:数据分析项目
- 9.3 数据分析案例
- 9.3.1 电商用户行为分析
-数据集
-数据清洗与预处理
-数据清洗与处理
-数据分析
-数据可视化
- 9.3.2 其他数据分析示例
-示例1:销售数据分析
-数据清洗与预处理
-数据分析
-数据可视化
-进一步分析
-示例2:天气数据分析
- 第10章 Web应用开发
- 10.1 Django简介与环境配置
- 10.1.1 Django简介
- 10.1.2 环境配置与安装
- 10.1.3 创建Django项目
- 10.2 创建与管理数据库模型
- 10.3 编写视图和URL配置
- 10.4 创建表单和处理用户输入
- 第11章 爬虫实战
- 说在最后:有问题找老架构取经
第一部分:基础入门
第一章:Python简介
1.1 Python的历史与特点
1.1.1 Python的历史
Python 2.0:发布于2000年,引入了垃圾回收机制和更完善的Unicode支持。 Python 3.0:发布于2008年,对语言进行了大幅度的改进,不完全向后兼容,目的是清理一些历史遗留问题并提升语言的一致性和可读性。
1.1.2 Python的主要特点
简洁明了:Python的语法设计简洁明了,代码可读性强。一个典型的Python程序通常比同样功能的C/C++/Java代码更短。 易学易用:Python的学习曲线相对平缓,非常适合初学者。它提供了大量的文档和社区支持,帮助新手快速上手。 解释型语言:Python是一种解释型语言,代码在运行时逐行解释执行,无需编译。这样不仅方便调试,还能快速测试和验证代码。 动态类型:Python是动态类型语言,变量在使用时才确定类型,无需预先声明。 跨平台:Python是一种跨平台语言,支持在Windows、macOS、Linux等多个操作系统上运行,只需一次编写即可在多种环境中使用。 丰富的标准库:Python拥有一个庞大的标准库,涵盖了文件I/O、系统调用、网络编程、Web服务、数据库接口等各个方面,极大地简化了开发工作。 强大的社区支持:Python拥有一个活跃且庞大的社区,提供了丰富的第三方库和工具,使开发者可以方便地扩展Python的功能。
1.2 Python的应用领域
1.2.1 Web开发
常用框架和工具
Django:一个功能强大且完备的Web框架,适用于快速开发复杂的大型Web应用。Django提供了诸如ORM(对象关系映射)、身份验证、模板引擎、URL路由等内置功能,极大地减少了开发工作量。 Flask:一个轻量级的Web框架,灵活性高,适用于小型项目和原型开发。Flask提供了基本的Web开发功能,并允许开发者根据需要自由选择和集成第三方库。
示例代码
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
app.py
,然后在命令行中运行:python app.py
http://127.0.0.1:5000/
,你将看到页面显示“Hello, Flask!”。1.2.2 数据分析
常用库和工具
pandas:一个强大的数据处理和分析库,提供了高效的数据结构和数据操作功能,尤其适用于结构化数据处理。 NumPy:一个科学计算库,提供了支持多维数组和矩阵运算的大量函数。 Matplotlib:一个绘图库,用于创建静态、动态和交互式可视化图表。
示例代码
import pandas as pd
import matplotlib.pyplot as plt
# 创建一个简单的DataFrame
data = {'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
'Sales': [200, 220, 210, 250, 270]}
df = pd.DataFrame(data)
# 打印数据表
print(df)
# 绘制销售趋势图
# 使用月份和销售数据绘制折线图
plt.plot(df['Month'], df['Sales'])
# 添加 x 轴标签
plt.xlabel('Month')
# 添加 y 轴标签
plt.ylabel('Sales')
# 添加图表标题
plt.title('Monthly Sales')
# 显示图表
plt.show()
1.2.3 人工智能与机器学习
常用库和工具
TensorFlow:一个由Google开发的开源机器学习框架,用于构建和训练深度学习模型。 PyTorch:一个由Facebook开发的开源深度学习框架,提供了灵活且易于使用的接口。 scikit-learn:一个简单而高效的机器学习库,包含了大量的分类、回归、聚类算法,适用于数据挖掘和数据分析。
示例代码
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 生成数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # 生成输入特征X,reshape(-1, 1)将数组转换成一列
y = np.array([2, 3, 5, 6, 5]) # 生成目标变量y
# 创建线性回归模型并训练
model = LinearRegression() # 创建线性回归模型
model.fit(X, y) # 使用输入特征X和目标变量y训练模型
# 预测
y_pred = model.predict(X) # 使用训练好的模型预测输出
# 绘制结果
plt.scatter(X, y, color='blue') # 绘制散点图,用蓝色表示
plt.plot(X, y_pred, color='red') # 绘制拟合直线,用红色表示
plt.xlabel('X') # 设置x轴标签
plt.ylabel('y') # 设置y轴标签
plt.title('Linear Regression Example') # 设置图表标题
plt.show() # 显示图表
1.2.4 自动化脚本
常用库和工具
os:提供了丰富的操作系统功能,如文件和目录操作。 shutil:提供了高级的文件操作功能,如复制和移动文件。 requests:用于发送HTTP请求,适用于Web抓取和API调用。
示例代码
import os
import shutil
# 定义源目录和目标目录
source_dir = 'C:/Users/Andy/Downloads'
target_dir = 'C:/Users/Andy/Documents/Sorted'
# 创建目标目录
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 遍历源目录中的文件
for filename in os.listdir(source_dir):
file_path = os.path.join(source_dir, filename)
# 判断是否为文件
if os.path.isfile(file_path):
# 移动文件到目标目录
shutil.move(file_path, target_dir)
print(f'Moved: {filename}')
1.2.5 其他应用领域
网络爬虫:通过编写爬虫程序抓取网络数据,常用库有BeautifulSoup、Scrapy等。 游戏开发:使用Pygame等库进行简单的游戏开发。 系统管理:编写脚本实现系统管理和运维任务。
1.3 如何安装Python
1.3.1 Windows系统安装
下载Python安装包:
访问Python官网。 点击“Downloads”菜单,根据你的操作系统选择“Download for Windows”。 下载最新的Python安装包。
运行安装包:
双击下载的安装包以启动安装程序。 在安装界面,勾选“Add Python to PATH”选项,这将自动配置环境变量,方便在命令行中使用Python。 点击“Install Now”进行安装。
验证安装:
安装完成后,打开命令提示符(按 Win + R
,输入cmd
,按回车)。在命令提示符中输入以下命令,验证Python是否安装成功:
python --version
1.3.2 macOS系统安装
使用Homebrew安装Python:
如果尚未安装Homebrew,先打开终端(按 Cmd + Space
,输入Terminal
,按回车),然后输入以下命令安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装Homebrew后,使用以下命令安装Python:
brew install python
验证安装:
在终端中输入以下命令,验证Python是否安装成功:
python3 --version
1.3.3 Linux系统安装
更新包管理器:
打开终端,输入以下命令更新包管理器:
sudo apt update
安装Python:
使用以下命令安装Python:
sudo apt install python3
验证安装:
在终端中输入以下命令,验证Python是否安装成功:
python3 --version
1.4 Python环境配置
1.4.1 Python版本管理(pyenv)
1.4.1.1 版本管理的概念和作用
pyenv
是一个用于管理多个Python版本的工具,允许用户轻松安装和切换不同版本的Python。1.4.1.2 安装和使用pyenv
安装pyenv:
打开终端,输入以下命令安装 pyenv
:
curl https://pyenv.run | bash
按照提示将以下内容添加到你的shell配置文件(如 ~/.bashrc
或~/.zshrc
):
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
重启终端:
重启终端或运行以下命令以应用配置:
source ~/.bashrc # 或者 source ~/.zshrc
安装Python版本:
使用 pyenv
安装所需的Python版本,例如安装Python 3.9.7:
pyenv install 3.9.7
设置全局或局部Python版本:
设置全局默认Python版本:
pyenv global 3.9.7
设置局部Python版本(在项目目录中):
pyenv local 3.8.10
验证安装:
输入以下命令,验证当前使用的Python版本:
python --version
1.4.2 虚拟环境管理(virtualenv, venv)
1.4.2.1 虚拟环境的概念和作用
virtualenv
和venv
。1.4.2.2 使用venv创建虚拟环境
venv
是Python 3内置的虚拟环境管理工具,使用简单方便。创建虚拟环境:
打开终端或命令提示符,输入以下命令创建一个名为 myenv
的虚拟环境:
python3 -m venv myenv
激活虚拟环境:
激活虚拟环境: Windows:
myenv\Scripts\activate
- macOS/Linux:
source myenv/bin/activate
激活后,命令行提示符前会显示虚拟环境的名称,如 (myenv)
。
安装包:
在激活的虚拟环境中使用 pip
安装所需的包,例如安装requests
库:
pip install requests
退出虚拟环境:
使用以下命令退出虚拟环境:
deactivate
1.4.2.3 使用virtualenv创建虚拟环境
virtualenv
是一个独立于Python标准库的虚拟环境管理工具,适用于需要更多功能和兼容性的情况。安装virtualenv:
如果没有安装 virtualenv
,可以使用pip
进行安装:
pip install virtualenv
创建虚拟环境:
使用 virtualenv
创建虚拟环境:
virtualenv myenv
激活虚拟环境:
激活虚拟环境: Windows:
myenv\Scripts\activate
- macOS/Linux:
source myenv/bin/activate
退出虚拟环境:
使用以下命令退出虚拟环境:
deactivate
1.4.3 Anaconda的安装与配置
1.4.3.1 Anaconda的概念和作用
conda
。 Anaconda极大地简化了科学计算和数据分析的环境配置工作。1.4.3.2 安装Anaconda
下载Anaconda安装包:
访问Anaconda官网, 国内用户推荐访问清华源下载和安装。anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 根据你的操作系统选择并下载Anaconda安装包。
运行安装包:
双击下载的安装包,按照安装向导的指示完成安装。
验证安装:
打开终端或命令提示符,输入以下命令验证Anaconda是否安装成功:
conda --version
1.4.3.3 使用conda管理虚拟环境和包
创建虚拟环境:
使用 conda
创建一个名为myenv
的虚拟环境,并指定Python版本:
conda create -n myenv python=3.9
激活虚拟环境:
激活虚拟环境:
conda activate myenv
安装包:
在激活的虚拟环境中使用 conda
安装所需的包,例如安装numpy
库:
conda install numpy
退出虚拟环境:
使用以下命令退出虚拟环境:
conda deactivate
管理包和环境:
列出已安装的包:
conda list
列出所有虚拟环境:
conda env list
1.5 IDE选择和配置
1.5.1 PyCharm安装与基本配置
1.5.1.1 安装PyCharm
下载PyCharm:
访问PyCharm官网。 根据你的操作系统下载社区版(Community)或专业版(Professional)。
安装PyCharm:
双击下载的安装包,按照安装向导的指示完成安装。
1.5.1.2 配置Python解释器
创建新项目:
打开PyCharm,选择“Create New Project”。 输入项目名称和路径。
选择Python解释器:
在“New Project”窗口,选择“Base Interpreter”。 选择系统Python解释器或虚拟环境。 点击“Create”创建项目。
1.5.1.3 基本配置和使用
安装插件:
打开“File -> Settings -> Plugins”。 搜索并安装需要的插件,如Markdown支持插件。
创建并运行Python文件:
右键点击项目目录,选择“New -> Python File”,输入文件名。 编写Python代码,例如:
print("Hello, PyCharm!")
右键点击文件,选择“Run 'filename'”运行代码。
1.5.2 VS Code安装与基本配置
1.5.2.1 安装VS Code
下载VS Code:
访问VS Code官网。 根据你的操作系统下载安装包。
安装VS Code:
双击下载的安装包,按照安装向导的指示完成安装。
1.5.2.2 安装Python扩展
打开VS Code:
启动VS Code。
安装Python扩展:
点击左侧活动栏中的“Extensions”图标。 在搜索框中输入“Python”,找到由Microsoft发布的“Python”扩展并安装。
1.5.2.3 配置Python解释器
打开命令面板:
按 Ctrl+Shift+P
(Windows/Linux)或Cmd+Shift+P
(macOS),打开命令面板。
选择Python解释器:
在命令面板中输入“Python: Select Interpreter”,选择项目使用的Python解释器。
1.5.2.4 创建并运行Python文件
创建新文件:
点击左侧活动栏中的“Explorer”图标,点击“New File”图标,创建一个新的Python文件(如 hello.py
)。
编写并运行代码:
在新文件中输入以下代码:
print("Hello, VS Code!")
保存文件,右键点击文件选择“Run Python File in Terminal”运行代码。
1.5.3 其他常用IDE介绍
1.5.3.1 Jupyter Notebook
安装Jupyter Notebook:
使用pip安装:
pip install notebook
或者使用conda安装:
conda install -c conda-forge notebook
启动Jupyter Notebook:
在命令行中输入以下命令启动Notebook服务器:
jupyter notebook
浏览器会自动打开Jupyter Notebook的主页。
创建和运行Notebook:
在Jupyter主页,点击“New -> Python 3”创建一个新的Notebook。 在单元格中输入以下代码并运行:
print("Hello, Jupyter Notebook!")
按 Shift+Enter
运行代码单元格。
1.5.3.2 其他IDE
Spyder:Anaconda发行版中自带的IDE,专为数据科学和机器学习设计,集成了许多科学计算库。 Sublime Text:一款轻量级代码编辑器,支持多种编程语言,通过安装插件可以增强Python支持。 Atom:由GitHub开发的开源编辑器,通过插件可以支持多种编程语言和功能扩展。
第2章:Python基础语法
2.1 第一个Python程序
编写和运行第一个Python程序
# 定义一个函数来计算两个数字的加减乘除并判断它们的大小关系
def calculate_and_compare(a, b):
# 计算和
sum_result = a + b
# 计算差
diff_result = a - b
# 计算积
prod_result = a * b
# 计算商
if b != 0:
div_result = a / b
else:
div_result = None
# 打印计算结果
print(f"{a} + {b} = {sum_result}")
print(f"{a} - {b} = {diff_result}")
print(f"{a} * {b} = {prod_result}")
if div_result is not None:
print(f"{a} / {b} = {div_result}")
else:
print("除数不能为零")
# 比较两个数字的大小
if a > b:
print(f"{a} 大于 {b}")
elif a < b:
print(f"{a} 小于 {b}")
else:
print(f"{a} 等于 {b}")
# 从用户获取输入
try:
num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))
# 调用函数进行计算和比较
calculate_and_compare(num1, num2)
except ValueError:
print("请输入有效的数字")
calculator.py
。接下来,打开命令行或终端,导航到保存该文件的目录,输入以下命令运行程序:python calculator.py
请输入第一个数字: 8
请输入第二个数字: 4
8.0 + 4.0 = 12.0
8.0 - 4.0 = 4.0
8.0 * 4.0 = 32.0
8.0 / 4.0 = 2.0
8.0 大于 4.0
2.2 数据类型
2.2.1 数字(整数、浮点数、复数)
整数(int)
# 整数
a = 10
b = -5
c = 0
print(a, type(a)) # 输出: 10 <class 'int'>
print(b, type(b)) # 输出: -5 <class 'int'>
print(c, type(c)) # 输出: 0 <class 'int'>
# 加法
print(a + b) # 输出: 5
# 减法
print(a - b) # 输出: 15
# 乘法
print(a * b) # 输出: -50
# 除法
print(a / 2) # 输出: 5.0
# 整除
print(a // 3) # 输出: 3
# 取余
print(a % 3) # 输出: 1
# 幂运算
print(a ** 2) # 输出: 100
浮点数(float)
# 浮点数
d = 3.14
e = -2.71
print(d, type(d)) # 输出: 3.14 <class 'float'>
print(e, type(e)) # 输出: -2.71 <class 'float'>
# 加法
print(d + e) # 输出: 0.43000000000000016
# 减法
print(d - e) # 输出: 5.85
# 乘法
print(d * e) # 输出: -8.5094
# 除法
print(d / 2) # 输出: 1.57
复数(complex)
# 复数
f = 1 + 2j
g = 3 - 4j
print(f, type(f)) # 输出: (1+2j) <class 'complex'>
print(g, type(g)) # 输出: (3-4j) <class 'complex'>
# 加法
print(f + g) # 输出: (4-2j)
# 减法
print(f - g) # 输出: (-2+6j)
# 乘法
print(f * g) # 输出: (11+2j)
# 除法
print(f / g) # 输出: (-0.2+0.4j)
2.2.2 字符串
# 使用单引号
str1 = 'Hello, Python'
print(str1, type(str1)) # 输出: Hello, Python <class 'str'>
# 使用双引号
str2 = "Hello, World"
print(str2, type(str2)) # 输出: Hello, World <class 'str'>
# 拼接字符串
greeting = str1 + " " + str2
print(greeting) # 输出: Hello, Python Hello, World
# 字符串切片
print(greeting[0:5]) # 输出: Hello
# 查找子串
print("Python" in greeting) # 输出: True
# 获取长度
print(len(greeting)) # 输出: 26
# 转换大小写
print(str1.upper()) # 输出: HELLO, PYTHON
print(str2.lower()) # 输出: hello, world
# 格式化字符串
name = "Alice"
welcome_message = f"Hello, {name}!"
print(welcome_message) # 输出: Hello, Alice!
2.2.3 列表
# 定义一个列表
my_list = [1, 2, 3, 'Python', 3.14]
print(my_list, type(my_list)) # 输出: [1, 2, 3, 'Python', 3.14] <class 'list'>
# 访问列表元素
print(my_list[0]) # 输出: 1
# 修改列表元素
my_list[1] = 'Changed'
print(my_list) # 输出: [1, 'Changed', 3, 'Python', 3.14]
# 添加新元素
my_list.append('New Element')
print(my_list) # 输出: [1, 'Changed', 3, 'Python', 3.14, 'New Element']
# 删除元素
my_list.remove('Python')
print(my_list) # 输出: [1, 'Changed', 3, 3.14, 'New Element']
# 获取长度
print(len(my_list)) # 输出: 5
# 列表切片
print(my_list[1:4]) # 输出: ['Changed', 3, 3.14]
2.2.4 元组
# 定义一个元组
my_tuple = (1, 2, 3, 'Python', 3.14)
print(my_tuple, type(my_tuple)) # 输出: (1, 2, 3, 'Python', 3.14) <class 'tuple'>
# 访问元组元素
print(my_tuple[0]) # 输出: 1
# 元组切片
print(my_tuple[1:4]) # 输出: (2, 3, 'Python')
# 获取长度
print(len(my_tuple)) # 输出: 5
# 元组解包
a, b, c, d, e = my_tuple
print(a, b, c, d, e) # 输出: 1 2 3 Python 3.14
# 元组的不可变特性
# my_tuple[1] = 'Changed' # 这行代码会引发错误,因为元组不允许修改
2.2.5 字典
# 定义一个字典
my_dict = {'name': 'Python', 'version': 3.9}
print(my_dict, type(my_dict)) # 输出: {'name': 'Python', 'version': 3.9} <class 'dict'>
# 访问字典元素
print(my_dict['name']) # 输出: Python
# 修改字典元素
my_dict['version'] = 3.10
print(my_dict) # 输出: {'name': 'Python', 'version': 3.10}
# 添加新元素
my_dict['creator'] = 'Guido van Rossum'
print(my_dict) # 输出: {'name': 'Python', 'version': 3.10, 'creator': 'Guido van Rossum'}
# 删除元素
del my_dict['version']
print(my_dict) # 输出: {'name': 'Python', 'creator': 'Guido van Rossum'}
# 获取所有键
print(my_dict.keys()) # 输出: dict_keys(['name', 'creator'])
# 获取所有值
print(my_dict.values()) # 输出: dict_values(['Python', 'Guido van Rossum'])
# 获取所有键值对
print(my_dict.items()) # 输出: dict_items([('name', 'Python'), ('creator', 'Guido van Rossum')])
2.2.6 集合
# 定义一个集合
my_set = {1, 2, 3, 4, 5}
print(my_set, type(my_set)) # 输出: {1, 2, 3, 4, 5} <class 'set'>
# 使用set()函数定义集合
another_set = set([3, 4, 5, 6, 7])
print(another_set, type(another_set)) # 输出: {3, 4, 5, 6, 7} <class 'set'>
# 添加新元素
my_set.add(6)
print(my_set) # 输出: {1, 2, 3, 4, 5, 6}
# 集合的去重特性
my_set.add(3)
print(my_set) # 输出: {1, 2, 3, 4, 5, 6}
# 删除元素
my_set.remove(4)
print(my_set) # 输出: {1, 2, 3, 5, 6}
# 集合运算
print(my_set & another_set) # 交集: {3, 5, 6}
print(my_set | another_set) # 并集: {1, 2, 3, 5, 6, 7}
print(my_set - another_set) # 差集: {1, 2}
print(my_set ^ another_set) # 对称差集: {1, 2, 7}
2.3 变量与常量
2.3.1 变量的定义与使用
定义变量
# 定义变量
x = 10
y = 3.14
name = "Alice"
is_active = True
# 输出变量的值和类型
print(x, type(x)) # 输出: 10 <class 'int'>
print(y, type(y)) # 输出: 3.14 <class 'float'>
print(name, type(name)) # 输出: Alice <class 'str'>
print(is_active, type(is_active)) # 输出: True <class 'bool'>
使用变量
# 变量参与运算
result = x + y
print(result) # 输出: 13.14
# 变量传递给函数
def greet(person):
return f"Hello, {person}!"
message = greet(name)
print(message) # 输出: Hello, Alice!
# 变量用于条件判断
if is_active:
print("The user is active.") # 输出: The user is active.
else:
print("The user is not active.")
变量命名规则
变量名必须以字母或下划线开头。 变量名只能包含字母、数字和下划线。 变量名区分大小写(例如, myVar
和myvar
是不同的变量)。变量名不要使用Python的保留字(如 and
、if
、while
等)。
# 合法的变量名
my_var = 10
_my_var = 20
myVar2 = 30
# 非法的变量名(会引发语法错误)
# 2myVar = 40
# my-var = 50
# my var = 60
2.3.2 常量的定义与约定
定义常量
# 定义常量
PI = 3.14159
GRAVITY = 9.81
MAX_CONNECTIONS = 100
# 输出常量的值
print(PI) # 输出: 3.14159
print(GRAVITY) # 输出: 9.81
print(MAX_CONNECTIONS) # 输出: 100
使用常量
# 使用常量计算圆的面积
radius = 5
area = PI * (radius ** 2)
print(f"The area of the circle is: {area}") # 输出: The area of the circle is: 78.53975
# 使用常量进行条件判断
if MAX_CONNECTIONS > 50:
print("The server can handle many connections.") # 输出: The server can handle many connections.
else:
print("The server can handle only a few connections.")
常量命名约定
# 合理的常量命名
SPEED_OF_LIGHT = 299792458 # 米每秒
PLANCK_CONSTANT = 6.62607015e-34 # 焦耳秒
# 不推荐的常量命名(不遵循约定)
# speed_of_light = 299792458
# planckConstant = 6.62607015e-34
2.4 运算符
2.4.1 算术运算符
运算符 | 描述 | 示例 |
+ | a + b | |
- | a - b | |
* | a * b | |
/ | a / b | |
// | a // b | |
% | a % b | |
** | a ** b |
a = 10
b = 3
print(a + b) # 输出: 13
print(a - b) # 输出: 7
print(a * b) # 输出: 30
print(a / b) # 输出: 3.3333333333333335
print(a // b) # 输出: 3
print(a % b) # 输出: 1
print(a ** b) # 输出: 1000
2.4.2 比较运算符
True
或 False
)。Python中的比较运算符如下:运算符 | 描述 | 示例 |
== | a == b | |
!= | a != b | |
> | a > b | |
< | a < b | |
>= | a >= b | |
<= | a <= b |
a = 10
b = 3
print(a == b) # 输出: False
print(a != b) # 输出: True
print(a > b) # 输出: True
print(a < b) # 输出: False
print(a >= b) # 输出: True
print(a <= b) # 输出: False
2.4.3 逻辑运算符
运算符 | 描述 | 示例 |
and | a and b | |
or | a or b | |
not | not a |
a = True
b = False
print(a and b) # 输出: False
print(a or b) # 输出: True
print(not a) # 输出: False
2.4.4 赋值运算符
运算符 | 描述 | 示例 |
= | a = b | |
+= | a += b | |
-= | a -= b | |
*= | a *= b | |
/= | a /= b | |
//= | a //= b | |
%= | a %= b | |
**= | a **= b |
a = 10
b = 3
a += b # 等价于 a = a + b
print(a) # 输出: 13
a -= b # 等价于 a = a - b
print(a) # 输出: 10
a *= b # 等价于 a = a * b
print(a) # 输出: 30
a /= b # 等价于 a = a / b
print(a) # 输出: 10.0
a //= b # 等价于 a = a // b
print(a) # 输出: 3.0
a %= b # 等价于 a = a % b
print(a) # 输出: 0.0
a **= b # 等价于 a = a ** b
print(a) # 输出: 0.0
2.4.5 位运算符
运算符 | 描述 | 示例 |
& | a & b | |
| | a | b | |
^ | a ^ b | |
~ | ~a | |
<< | a << b | |
>> | a >> b |
a = 10 # 二进制: 1010
b = 4 # 二进制: 0100
print(a & b) # 输出: 0 (二进制: 0000)
print(a | b) # 输出: 14 (二进制: 1110)
print(a ^ b) # 输出: 14 (二进制: 1110)
print(~a) # 输出: -11 (二进制: -1011)
print(a << 2) # 输出: 40 (二进制: 101000)
print(a >> 2) # 输出: 2 (二进制: 0010)
2.4.6 运算符优先级
运算符 | 描述 |
2.5 控制结构
2.5.1 条件语句(if, elif, else)
if
、elif
(else if的缩写)和else
。if 语句
if
语句用于判断一个条件是否为真,如果为真,则执行相应的代码块。# if 语句示例
x = 10
if x > 5:
print("x is greater than 5") # 输出: x is greater than 5
if...else 语句
if...else
语句用于在条件为假时执行另一个代码块。# if...else 语句示例
x = 3
if x > 5:
print("x is greater than 5")
else:
print("x is less than or equal to 5") # 输出: x is less than or equal to 5
if...elif...else 语句
if...elif...else
语句用于检查多个条件,并根据第一个为真的条件执行相应的代码块。如果所有条件都为假,则执行else
代码块。# if...elif...else 语句示例
x = 7
if x > 10:
print("x is greater than 10")
elif x > 5:
print("x is greater than 5 but less than or equal to 10") # 输出: x is greater than 5 but less than or equal to 10
else:
print("x is 5 or less")
嵌套条件语句
# 嵌套条件语句示例
x = 15
if x > 10:
print("x is greater than 10") # 输出: x is greater than 10
if x > 20:
print("x is also greater than 20")
else:
print("x is not greater than 20") # 输出: x is not greater than 20
else:
print("x is 10 or less")
条件表达式(三元运算符)
# 条件表达式示例
x = 8
result = "greater than 5" if x > 5 else "less than or equal to 5"
print(result) # 输出: greater than 5
2.5.2 循环语句(for, while)
for
循环和while
循环。for 循环
for
循环用于遍历序列(如列表、元组、字符串)或其他可迭代对象。每次循环时,for
语句会将序列中的下一个元素赋值给循环变量,并执行循环体中的代码。# for 循环遍历列表
numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
# 输出:
# 1
# 2
# 3
# 4
# 5
range()
函数生成一系列数字,并使用for
循环进行遍历:# 使用 range() 生成数字序列
for i in range(5):
print(i)
# 输出:
# 0
# 1
# 2
# 3
# 4
# 指定起始和结束点
for i in range(2, 7):
print(i)
# 输出:
# 2
# 3
# 4
# 5
# 6
# 指定步长
for i in range(1, 10, 2):
print(i)
# 输出:
# 1
# 3
# 5
# 7
# 9
while 循环
while
循环在条件为真时反复执行循环体中的代码。当条件变为假时,循环终止。# while 循环示例
count = 0
while count < 5:
print(count)
count += 1
# 输出:
# 0
# 1
# 2
# 3
# 4
嵌套循环
# 嵌套 for 循环
for i in range(3):
for j in range(2):
print(f"i={i}, j={j}")
# 输出:
# i=0, j=0
# i=0, j=1
# i=1, j=0
# i=1, j=1
# i=2, j=0
# i=2, j=1
# 嵌套 while 循环
i = 0
while i < 3:
j = 0
while j < 2:
print(f"i={i}, j={j}")
j += 1
i += 1
# 输出:
# i=0, j=0
# i=0, j=1
# i=1, j=0
# i=1, j=1
# i=2, j=0
# i=2, j=1
2.5.3 循环控制(break, continue, pass)
break
、continue
和pass
语句来控制循环的执行。break
语句用于终止循环,不再执行循环体中的剩余代码,并立即退出循环。
# break 示例
for i in range(5):
if i == 3:
break
print(i)
# 输出:
# 0
# 1
# 2
continue
语句用于跳过当前迭代的剩余代码,直接进入下一次迭代。
# continue 示例
for i in range(5):
if i == 3:
continue
print(i)
# 输出:
# 0
# 1
# 2
# 4
pass
语句用于占位,表示不执行任何操作。通常用于语法上需要语句,但实际不需要执行任何代码的场合。
# pass 示例
for i in range(5):
if i == 3:
pass # 这里可以放置以后需要的代码
print(i)
# 输出:
# 0
# 1
# 2
# 3
# 4
for
和while
循环以及循环控制语句,您将能够在程序中实现重复执行某段代码的功能,提高代码的效率和灵活性。2.6 函数基础
2.6.1 函数的定义与调用
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
定义一个简单的函数
def greet():
print("Hello, welcome to Python programming!")
调用函数
greet() # 输出: Hello, welcome to Python programming!
带参数的函数
def greet_user(name):
print(f"Hello, {name}, welcome to Python programming!")
greet_user("Alice") # 输出: Hello, Alice, welcome to Python programming!
带返回值的函数
return
关键字实现。当函数执行到return
语句时,会将结果返回,并结束函数的执行。def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出: 8
2.6.2 函数参数
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
2.6.3 函数返回值
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
2.6.4 函数文档字符串
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第3章:模块与包
3.1 标准库的使用
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
3.2 第三方库的安装与使用
pip
工具来安装第三方库,并展示一些常用第三方库的安装示例。3.2.1 pip的使用
pip
是Python的包管理工具,用于安装和管理Python包。 pip
非常强大且易于使用,几乎所有的第三方库都可以通过pip
进行安装。由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
3.2.2 常用第三方库安装示例
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
3.3 自定义模块与包
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
3.4 常用第三方库介绍
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第4章:文件与异常处理
4.1 文件读写操作
4.1.1 读文件
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
4.1.2 写文件
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
4.1.3 文件模式
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
4.2 文件和目录操作
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
4.3 异常捕获与处理
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
4.4 日志记录
logging
模块,用于灵活地记录日志信息。由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第二部分:高级进阶
第5章:面向对象编程
5.1 类与对象
5.1.1 类的定义
class
关键字定义。类可以包含属性(数据)和方法(函数),用于描述对象的状态和行为。示例:定义一个简单的类
class Person:
# 初始化方法,用于创建实例时初始化属性
def __init__(self, name, age):
self.name = name
self.age = age
# 实例方法,用于描述行为
def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."
Person
的类。__init__
方法是一个特殊的方法,在创建实例时自动调用,用于初始化对象的属性。greet
方法是一个实例方法,用于返回问候语。5.1.2 对象的创建与使用
示例:创建和使用对象
# 创建Person类的实例
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
# 访问属性
print(person1.name) # 输出: Alice
print(person2.age) # 输出: 25
# 调用方法
print(person1.greet()) # 输出: Hello, my name is Alice and I am 30 years old.
print(person2.greet()) # 输出: Hello, my name is Bob and I am 25 years old.
Person
类的实例,并访问了它们的属性和方法。5.1.3 类属性和实例属性
示例:类属性和实例属性
class Person:
species = "Homo sapiens" # 类属性
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age # 实例属性
def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."
# 创建实例
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
# 访问类属性
print(Person.species) # 输出: Homo sapiens
print(person1.species) # 输出: Homo sapiens
print(person2.species) # 输出: Homo sapiens
# 修改类属性
Person.species = "Human"
print(person1.species) # 输出: Human
# 访问实例属性
print(person1.name) # 输出: Alice
print(person2.age) # 输出: 25
species
是一个类属性,所有Person
实例共享。name
和age
是实例属性,每个实例有独立的值。5.2 封装、继承、多态
5.2.1 封装的概念
示例:封装的实现
class Person:
def __init__(self, name, age):
self.__name = name # 私有属性
self.__age = age # 私有属性
def greet(self):
return f"Hello, my name is {self.__name} and I am {self.__age} years old."
def get_age(self):
return self.__age
def set_age(self, age):
if age > 0:
self.__age = age
else:
raise ValueError("Age must be positive")
# 创建实例
person = Person("Alice", 30)
# 访问私有属性 (通过方法)
print(person.greet()) # 输出: Hello, my name is Alice and I am 30 years old.
# 修改私有属性 (通过方法)
person.set_age(35)
print(person.get_age()) # 输出: 35
# 直接访问私有属性会导致错误
# print(person.__age) # AttributeError: 'Person' object has no attribute '__age'
__name
和__age
是私有属性,不能直接从外部访问。通过定义公有方法get_age
和set_age
,我们可以间接访问和修改私有属性。5.2.2 继承的实现
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
5.3 魔法方法与特殊属性
__
)开头和结尾,并用于在特定情况下自动调用。特殊属性是Python对象自带的一些属性,也使用双下划线包围,提供有关对象的元数据和行为控制。5.3.1 常用魔法方法
init
__init__
方法是类的初始化方法,在创建实例时自动调用,用于初始化对象的属性。class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 创建实例时会自动调用__init__方法
person = Person("Alice", 30)
print(person.name) # 输出: Alice
print(person.age) # 输出: 30
str
__str__
方法定义了对象的字符串表示,用于print()
和str()
函数。当尝试以字符串形式打印对象时调用。class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
person = Person("Alice", 30)
print(person) # 输出: Person(name=Alice, age=30)
repr
__repr__
方法返回对象的官方字符串表示,用于repr()
函数和交互解释器。当开发者需要一个准确且非歧义的对象表示时调用。class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
person = Person("Alice", 30)
print(repr(person)) # 输出: Person(name='Alice', age=30)
5.3.2 特殊属性
dict
__dict__
属性是一个字典,包含对象的所有可变属性和它们的值。可以用来查看和修改对象的属性。class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
print(person.__dict__) # 输出: {'name': 'Alice', 'age': 30}
# 修改属性
person.__dict__['age'] = 31
print(person.age) # 输出: 31
class
__class__
属性指向对象的类,提供了访问对象所属类的方式。class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
print(person.__class__) # 输出: <class '__main__.Person'>
# 检查对象是否为特定类的实例
print(isinstance(person, Person)) # 输出: True
5.3.3 综合示例
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
5.4 类的高级话题
5.4.1 静态方法与类方法
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
5.4.3 迭代器与生成器
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第6章:函数式编程
map
、filter
、reduce
)、闭包与装饰器、以及生成器表达式与列表推导式。 在本章中,我们将探讨这些函数式编程的概念和应用。6.1 高阶函数
接受一个或多个函数作为参数。 返回一个函数。
6.1.1 定义与使用
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
6.2 内置函数
map
、filter
和 reduce
。这些函数使得对序列进行操作更加简洁和高效。由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
6.3 闭包与装饰器
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
6.4 生成器表达式与列表推导式
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第7章:并发编程
7.1 线程与进程
threading
和 multiprocessing
模块,分别用于多线程编程和多进程编程。7.1.1 threading模块
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
7.1.2 multiprocessing模块
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
7.2 异步编程
asyncio
模块提供了强大的异步编程支持。7.2.1 asyncio模块基础
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
7.2.3 异步编程与多线程编程和多进程编程的区别
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
7.3 并发编程最佳实践
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第8章 网络编程
8.1 套接字编程
socket
模块提供了用于创建和操作套接字的接口。由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
8.3 Web框架初探
8.3.1 Flask简介与快速入门
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第三部分:实战演练
第9章:数据分析项目
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
9.3 数据分析案例
9.3.1 电商用户行为分析
数据集
ecommerce_data.csv
,其内容如下:user_id,timestamp,event_type,product_id,category_id
1,2023-01-01 12:01:00,view,1001,2001
1,2023-01-01 12:03:00,click,1001,2001
1,2023-01-01 12:05:00,add_to_cart,1001,2001
1,2023-01-01 12:10:00,purchase,1001,2001
2,2023-01-01 12:15:00,view,1002,2002
2,2023-01-01 12:17:00,click,1002,2002
2,2023-01-01 12:20:00,view,1003,2003
数据清洗与预处理
import pandas as pd
# 读取数据
df = pd.read_csv('ecommerce_data.csv')
# 查看数据集的前几行
print(df.head())
user_id timestamp event_type product_id category_id
0 1 2023-01-01 12:01:00 view 1001 2001
1 1 2023-01-01 12:03:00 click 1001 2001
2 1 2023-01-01 12:05:00 add_to_cart 1001 2001
3 1 2023-01-01 12:10:00 purchase 1001 2001
4 2 2023-01-01 12:15:00 view 1002 2002
数据清洗与处理
# 将timestamp列转换为datetime类型
df['timestamp'] = pd.to_datetime(df['timestamp'])
# 提取日期和时间
df['date'] = df['timestamp'].dt.date
df['time'] = df['timestamp'].dt.time
print(df.head())
user_id timestamp event_type product_id category_id date time
0 1 2023-01-01 12:01:00 view 1001 2001 2023-01-01 12:01:00
1 1 2023-01-01 12:03:00 click 1001 2001 2023-01-01 12:03:00
2 1 2023-01-01 12:05:00 add_to_cart 1001 2001 2023-01-01 12:05:00
3 1 2023-01-01 12:10:00 purchase 1001 2001 2023-01-01 12:10:00
4 2 2023-01-01 12:15:00 view 1002 2002 2023-01-01 12:15:00
数据分析
# 按事件类型统计数量
event_counts = df['event_type'].value_counts()
print(event_counts)
view 3
click 2
add_to_cart 1
purchase 1
Name: event_type, dtype: int64
# 按日期和事件类型统计数量
daily_events = df.groupby(['date', 'event_type']).size().unstack().fillna(0)
print(daily_events)
event_type add_to_cart click purchase view
date
2023-01-01 1.0 2.0 1.0 3.0
数据可视化
import matplotlib.pyplot as plt
# 绘制事件类型分布的柱状图
event_counts.plot(kind='bar')
plt.title('Event Type Distribution')
plt.xlabel('Event Type')
plt.ylabel('Count')
plt.show()
# 绘制每日事件数量的折线图
daily_events.plot(kind='line')
plt.title('Daily Event Counts')
plt.xlabel('Date')
plt.ylabel('Count')
plt.show()
9.3.2 其他数据分析示例
示例1:销售数据分析
sales_data.csv
,包括以下字段:date
、sales_amount
、product_id
、region
。date,sales_amount,product_id,region
2023-01-01,100,101,North
2023-01-01,150,102,East
2023-01-02,200,101,North
2023-01-02,250,103,South
2023-01-03,300,102,East
2023-01-03,350,104,West
2023-01-04,400,101,North
2023-01-04,450,103,South
2023-01-05,500,104,West
2023-01-05,550,102,East
数据清洗与预处理
import pandas as pd
# 读取数据
sales_df = pd.read_csv('sales_data.csv')
# 查看数据集的前几行
print(sales_df.head())
date sales_amount product_id region
0 2023-01-01 100 101 North
1 2023-01-01 150 102 East
2 2023-01-02 200 101 North
3 2023-01-02 250 103 South
4 2023-01-03 300 102 East
数据分析
# 按日期统计销售总额
daily_sales = sales_df.groupby('date')['sales_amount'].sum()
print(daily_sales)
date
2023-01-01 250
2023-01-02 450
2023-01-03 650
2023-01-04 850
2023-01-05 1050
Name: sales_amount, dtype: int64
数据可视化
import matplotlib.pyplot as plt
# 绘制每日销售总额的折线图
daily_sales.plot(kind='line')
plt.title('Daily Sales Amount')
plt.xlabel('Date')
plt.ylabel('Sales Amount')
plt.show()
进一步分析
# 按地区统计销售总额
region_sales = sales_df.groupby('region')['sales_amount'].sum()
print(region_sales)
region
East 1000
North 700
South 700
West 850
Name: sales_amount, dtype: int64
# 绘制按地区统计销售总额的柱状图
region_sales.plot(kind='bar')
plt.title('Total Sales Amount by Region')
plt.xlabel('Region')
plt.ylabel('Sales Amount')
plt.show()
示例2:天气数据分析
weather_data.csv
,包括以下字段:date
、temperature
、humidity
、weather_condition
。date,temperature,humidity,weather_condition
2023-01-01,5,80,Cloudy
2023-01-02,7,78,Sunny
2023-01-03,6,82,Rainy
2023-01-04,10,75,Sunny
2023-01-05,12,70,Sunny
2023-01-06,8,85,Cloudy
2023-01-07,9,88,Rainy
2023-01-08,11,77,Sunny
2023-01-09,13,72,Sunny
2023-01-10,14,68,Sunny
# 读取数据
weather_df = pd.read_csv('weather_data.csv')
# 查看数据集的前几行
print(weather_df.head())
# 按天气条件统计平均温度和湿度
weather_stats = weather_df.groupby('weather_condition').agg({'temperature': 'mean', 'humidity': 'mean'})
print(weather_stats)
# 绘制天气条件与平均温度和湿度的关系图
weather_stats.plot(kind='bar')
plt.title('Weather Condition vs Temperature and Humidity')
plt.xlabel('Weather Condition')
plt.ylabel('Average Values')
plt.show()
第10章 Web应用开发
10.1 Django简介与环境配置
10.1.1 Django简介
10.1.2 环境配置与安装
pip install django
10.1.3 创建Django项目
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
10.2 创建与管理数据库模型
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
10.3 编写视图和URL配置
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
10.4 创建表单和处理用户输入
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
第11章 爬虫实战
由于平台的字数限制, 这里省略了500+字,具体请参见尼恩的穿透AI系列之 《Python学习圣经:从0到1精通Python,打好AI基础》PDF
说在最后:有问题找老架构取经
《Python学习圣经:从0到1精通Python,打好AI基础》 《LLM大模型学习圣经:从0到1吃透Transformer技术底座》 《LangChain学习圣经:从0到1精通LLM大模型应用开发的基础框架》 《LLM大模型学习圣经:从0到1精通RAG架构,基于LLM+RAG构建生产级企业知识库》 《SpringCloud + Python 混合微服务架构,打造AI分布式业务应用的技术底层》 《LLM大模型学习圣经:从0到1吃透大模型的顶级架构》
Netty 学习圣经:穿透Netty的内存池和对象池(那个超级难,很多人穷其一生都搞不懂), DDD学习圣经: 穿透 DDD的建模和落地, Caffeine学习圣经:比如Caffeine的底层架构, 比如高性能葵花宝典 Thread Local 学习圣经 等等等等。
部分历史案例
实现职业转型,极速上岸
关注职业救助站公众号,获取每天职业干货
助您实现职业转型、职业升级、极速上岸
---------------------------------
实现架构转型,再无中年危机
关注技术自由圈公众号,获取每天技术千货
一起成为牛逼的未来超级架构师
几十篇架构笔记、5000页面试宝典、20个技术圣经
请加尼恩个人微信 免费拿走
暗号,请在 公众号后台 发送消息:领电子书
如有收获,请点击底部的"在看"和"赞",谢谢