在Windows系统中搭建Python编程环境
Python编程:从入门到实践(第3版)(2025年新版) – 第1章 起步 – [美]埃里克·马瑟斯 – 微信读书
Windows系统通常没有默认安装Python,因此你可能需要安装它,再安装VS Code。
Python自带在终端窗口中运行的解释器,让你无须保存并运行整个程序就能尝试运行Python代码片段。
1、检查你的系统是否安装了Python。
在“开始”菜单的搜索框中输入“命令”并按回车键,再单击程序“命令提示符”打开一个命令窗口。
在终端窗口中输入python(全部小写)并按回车键。如果出现Python提示符(>>>),就说明系统安装了Python。
2、在终端会话中运行Python
在Python会话中执行下面的命令:
print(“Hello Python interpreter!”)
每当要运行Python代码片段时,都请打开一个命令窗口并启动Python终端会话。要关闭该终端会话,可先按Ctrl + Z再按回车键,也可执行命令exit()。
如何在Python解释器中编写代码
安装一款文本编辑器,并使用它来完成学习编程的标准操作——编写一个简单的Hello World程序。长期以来,编程界都认为在刚接触一门新语言时,首先使用它来编写一个在屏幕上显示消息“Hello world!”的程序将带来好运。这种程序虽然简单,却有其用途:如果它能够在你的系统上正确地运行,那么你编写的任何Python程序也都将正确运行。
编辑器VS Code
VS Code是一款功能强大的专业级文本编辑器,免费且适合初学者使用。无论是简单还是复杂的项目,使用VS Code来开发都是非常不错的选择。因此,在学习Python的过程中熟练掌握VS Code后,还可以继续使用它来编写复杂的大型项目。无论你使用的是哪种现代操作系统,都可安装VS Code,它支持包含Python在内的大多数编程语言。
如果你想马上动手编程,可先使用VS Code,等有了一些编程经验后再考虑使用其他编辑器。
要下载VS Code安装程序,可访问Visual Studio Code官方网站主页,单击按钮Download for Windows下载安装程序,再运行它。
在编写程序之前,还需要给VS Code安装Python扩展。
单击VS Code应用程序窗口右下角的Manage图标,它看起来像个齿轮。在出现的菜单中,单击Extensions,在搜索框中输入python,再单击Python extension(如果出现多个名为Python的扩展,请选择Microsoft提供的扩展)。单击Install,安装所有需要的额外工具。如果出现一条消息提示需要安装Python,而你已经安装了,可忽略这条消息。
运行程序hello_world.py
在桌面上创建一个名为python_work的文件夹,用于存储你开发的项目。文件名和文件夹名称最好使用小写英文字母,并使用下划线代替空格,因为Python采用了这些命名约定。虽然完全可以将文件夹python_work放在其他地方,但将它放在桌面上可更轻松地完成后续步骤。启动VS Code,并关闭选项卡Get Started(如果它是打开的)。选择菜单File ▶ New File或按Ctrl + N(在macOS系统中为Command + N)新建一个文件。再将这个文件保存到文件夹python_work中,并命名为hello_world.py。文件扩展名.py告诉VS Code,文件中的代码是使用Python编写的,从而让它知道如何运行这个程序,并以有帮助的方式高亮其中的代码。保存这个文件后,在其中输入代码行:print(“Hello Python world!”)选择菜单Run ▶ Run Without Debugging或按Ctrl + F5。在VS Code应用程序窗口的底部将出现一个终端窗口,其中包含程序的输出:Hello Python world!
从终端运行Python程序
你编写的大多数程序将直接在文本编辑器中运行,但是从终端运行程序有时候很有用。例如,你可能想直接运行既有的程序。
可以使用终端命令cd(表示change directory,即切换目录)在命令窗口中浏览文件系统。使用命令dir(表示directory,即目录)可以显示当前目录中的所有文件。
为运行程序hello_world.py,请打开一个终端窗口,并执行下面的命令:
C:> cd Desktoppython_work
C:Desktoppython_work> dir
hello_world.py
C:Desktoppython_work> python hello_world.py
Hello Python world!
使用命令cd来切换到文件夹Desktoppython_work。使用命令dir来确认这个文件夹中包含文件hello_world.py。使用命令python hello_world.py来运行这个文件。
重要的Python库
https://weread.qq.com/web/reader/75b321f0715afbc075b7c2ckaab325601eaab3238922e53#outline?noScroll=1
NumPy
NumPy赋予Python的快速数组处理能力、在算法和库之间作为数据传递的数据容器。
Python数值计算的基石,提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。
还包括:快速、高效的多维数组对象ndarray;基于元素的数组计算或数组间数学操作函数;用于读写硬盘中基于数组的数据集的工具;线性代数操作、傅里叶变换以及随机数生成;成熟的C语言API,允许Python拓展和本地的C或C++代码访问NumPy的数据结构和计算设施。
主要功能和特点
核心数据结构
ndarray:N维数组对象,支持向量化运算
比Python列表更高效,支持广播功能
数学运算
线性代数运算:矩阵乘法、求逆、特征值等傅里叶变换和随机数生成统计函数:均值、方差、标准差等
数组操作
数组索引、切片和重塑数组的合并、分割和转置条件筛选和布尔索引
与其他库集成
与pandas、scikit-learn、matplotlib等完美配合支持各种数据格式的读写
广泛应用领域
机器学习和深度学习图像处理和计算机视觉科学计算和工程计算金融数据分析和量化交易
pandas
由于数据操作、预处理、清洗在数据分析中是重要的技能,pandas将是本书的重要主题。
提供了高级数据结构和函数,这些数据结构和函数的设计使得利用结构化、表格化数据的工作快速、简单、有表现力。
pandas将表格和关系型数据库(例如SQL)的灵活数据操作能力与NumPy的高性能数组计算的理念相结合。
主要功能和特点
核心数据结构
Series:一维带标签数组,类似于Excel中的列DataFrame:二维表格型数据结构,类似于Excel表格或SQL表
数据读取和写入
支持CSV、Excel、JSON、SQL、HTML等多种格式
示例:pd.read_csv(), pd.read_excel()
数据清洗和处理
处理缺失值:dropna(), fillna()数据筛选:布尔索引、查询功能数据合并:concat(), merge(), join()数据重塑:pivot(), melt()
数据分析和统计
描述性统计:describe(), mean(), sum()分组操作:groupby()时间序列处理
数据可视化
集成matplotlib,可直接绘制图表
常用应用场景
数据清洗和预处理数据分析和探索机器学习数据准备金融数据分析科学计算等
matplotlib
最流行的用于制图及其他二维数据可视化的Python库。
import matplotlib.pyplot as plt
matplotlib.pyplot 是 Python 中最常用的数据可视化模块
主要功能和特点
1、基础绘图功能:
线图、散点图、柱状图、饼图等常见图表
直方图、箱线图等统计图表
2D/3D图形绘制
2、图形定制:
坐标轴设置和标签
图例、标题、网格线
颜色、线型、标记样式
3、子图和多图:
subplot() 创建多个子图
复杂的图形布局
4、图像显示和保存:
show() 显示图形
savefig() 保存为多种格式
5、与pandas/numpy集成:
直接绘制DataFrame和ndarray数据
支持向量化绘图操作
应用场景
数据探索和可视化科研论文图表制作机器学习结果展示报告和演示中的图形呈现
import seaborn as sns
Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,它提供了一个高级接口来绘制有吸引力且信息丰富的统计图形。
主要特点和功能
核心特性:
美观的默认样式:内置了吸引人的配色方案和绘图样式统计图表集成:专门为统计可视化设计,支持分布、关系、分类等图表与 Pandas 无缝集成:直接处理 DataFrame 数据结构简化复杂图表:用少量代码创建多面板和复杂可视化
主要图表类型:
分布图:直方图、核密度估计、箱线图、小提琴图关系图:散点图、线图、热力图分类图:柱状图、计数图、点图矩阵图:聚类热力图、对图
基础使用示例:
import seaborn as sns
import matplotlib.pyplot as plt
# 加载示例数据集
tips = sns.load_dataset("tips")
# 创建散点图
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
plt.show()
# 创建箱线图
sns.boxplot(data=tips, x="day", y="total_bill")
plt.show()
scatterplot(data=tips, x=”total_bill”, y=”tip”, hue=”time”)
data=tips
指定使用的数据集,这里是一个名为tips的DataFrame
tips是Seaborn内置的示例数据集,包含餐厅消费数据
x =”total_bill”
指定x轴变量,表示总账单金额
这是一个数值型变量,显示在横坐标上
y =”tip”
指定y轴变量,表示小费金额
这也是一个数值型变量,显示在纵坐标上
hue =”time”
颜色编码参数,根据time变量(用餐时间)为不同类别的数据点分配不同颜色
这是一个分类变量,通常包含”午餐”和”晚餐”两个类别
参数作用:
这个散点图展示了账单金额与小费金额的关系
通过不同颜色区分午餐和晚餐时段的消费模式
可以直观看出不同时间段消费习惯的差异
可视化效果:
每个点代表一次消费记录
点的x坐标是账单金额,y坐标是小费金额
蓝色点可能代表午餐,橙色点代表晚餐(具体颜色由Seaborn自动分配)
这种可视化方式非常适合探索两个数值变量之间的关系,同时通过颜色编码展示分类变量的影响。
boxplot(data=tips, x=”day”, y=”total_bill”)
data=tips
指定使用的数据集,与之前相同,是包含餐厅消费数据的DataFrame
x=”day”
指定x轴变量,表示星期几(分类变量)
通常包含:周四(Thur)、周五(Fri)、周六(Sat)、周日(Sun)
y=”total_bill”
指定y轴变量,表示总账单金额(数值变量)
显示在纵坐标上
可视化效果
不同星期几的账单金额分布情况
每个箱子代表一天的消费数据分布特征
箱线图包含的统计信息
中位数:箱体内的横线,表示数据的中间值
四分位数范围:箱体本身,包含中间50%的数据
须线:显示数据的正常范围
异常值:超出须线的点,表示极端值
| 图表类型 | 分析目的 | x轴 | y轴 | 额外维度 |
|---|---|---|---|---|
| 散点图 | 展示两个数值变量的关系 | 账单金额 | 小费金额 | 时间(颜色) |
| 箱线图 | 展示分类变量与数值变量的分布 | 星期几 | 账单金额 | 无 |
IPython与Jupyter
对我个人来说,IPython涉及我工作的大部分内容,包括运行、调试、测试代码。
IPython是一个加强版的Python解释器
Juypyter notebook是一种基于Web的代码笔记本,最初也是源于IPython项目。
IPython项目(Python解释器)、侧重于在交互计算和软件开发两方面将生产力最大化。自身已成为Jupyter开源项目中的一个组件,后者提供交互性、探索性的高效环境。
IPtyhon最古老、最简单的“模式”就是一个加强版的Python命令行,用于提高编写、测试、调试Python代码的速度。
你也可以通过基于Web、支持多语言的代码“笔记本”——Jupyter Notebook来使用IPython系统。IPython命令行和Jupyter notebook对于数据探索和可视化非常有用。
Jupyter notebook系统允许你使用Markdown和HTML创建包含代码和文本的富文档。其他编程语言也针对Jupyter实现了内核,允许你在Jupyter中使用多种语言而不仅仅是Python。
SciPy
SciPy与NumPy一起为很多传统科学计算应用提供了一个合理、完整、成熟的计算基础。
科学计算领域针对不同标准问题域的包集合,
scipy.integrate数值积分例程和微分方程求解器
scipy.linalg线性代数例程和基于numpy.linalg的矩阵分解
scipy.optimize函数优化器(最小化器)和求根算法
scipy.stats标准的连续和离散概率分布(密度函数、采样器、连续分布函数)、各类统计测试、各类描述性统计
scipy.sparse稀疏矩阵与稀疏线性系统求解器
……
scikit-learn
scikit-learn项目(http://scikit-learn.org)诞生于2010年,目前已成为Python编程者首选的机器学习工具包。
其中包含以下子模块:
分类:SVM、最近邻、随机森林、逻辑回归等回归:Lasso、岭回归等· 聚类:k-means、谱聚类等降维:PCA、特征选择、矩阵分解等模型选择:网格搜索、交叉验证、指标矩阵预处理:特征提取、正态化
statsmodels
statsmodels更专注于统计推理,提供不确定性评价和p值参数。
相反,scikit-learn更专注于预测。
统计分析包、源自斯坦福大学统计学教授Jonathan Taylor利用R语言实现的各类分析模型,Nathaniel Smith开发了Patsy项目,为R语言公式系统所驱动的statsmodels包提供公式、模型规范框架。
statsmodels包含经典的(高频词汇)统计学、经济学算法。它所包含的模型如下:
回归模型:线性回归、通用线性模型、鲁棒线性模型、线性混合效应模型等方差分析(ANOVA)时间序列分析:AR、ARMA、ARIMA、VAR等模型非参数方法:核密度估计、核回归统计模型结果可视化
安装Anaconda
下载Anaconda安装器
https://www.anaconda.com/download
确定所有设置是否都正确:
鼠标右击开始菜单,选择命令行,打开命令行应用(也就是cmd.exe)。
通过输入python来启动Python解释器。可以看到符合下载的Anaconda版本的信息。
按下Ctrl-Z,或者输入命令exit()后按下回车键,退出命令行。
安装及更新Python包
通过conda install命令进行安装:conda install package_name使用conda update命令来更新包:conda update package_name
使用pip包管理工具进行安装:pip install package_namepip通过–upgrade标识升级:pip install–upgrade package_name
能够同时使用conda和pip进行包安装时,请不要尝试使用pip更新conda安装的包,否则可能会导致环境问题。
使用Anaconda或者Miniconda时,最好还是使用conda进行更新。
集成开发环境和文本编辑器
当被问及我的标准开发环境时,我会回答说“IPython加文本编辑器”。通常,我会在IPython或Jupyter notebook中写一段代码,然后迭代测试、调试。
当开发软件时,一些用户可能倾向于使用功能更为丰富的集成开发环境(IDE),而不是功能相对简单的文本编辑器比如Emacs或Vim。下面介绍一些IDE:
PyDev(免费),基于Eclipse平台的IDEPyCharm, Jetbrains公司开发(对商业用户收费,对开源用户免费)Python Tools for Visual Studio(适合Windows用户)Spyder(免费)Anaconda集成的IDEKomodo IDE(收费)
由于Python十分流行,大多数文本编辑器,比如Atom和Sublime Text 2都对Python有较好的支持。
工作任务分块
尽管读者们可能会有很多不同的工作目的,但工作任务大体上会分为以下几个部分。
与外部世界交互
读写各种格式的文件以及数据存储
准备
对分析数据进行清洗、处理、联合、正态化、重组、切片、切块和转换
转换
将数学或统计操作应用到数据集的分组上以产生新的数据集(例如通过分组参数对一张大表进行聚合)
建模和计算
将数据接入到统计模型、机器学习算法和其他计算工具上
演示
创建动态或静态的图形可视化或文字概述
资源及如何使用
代码示例
按照IPython或Jupyter notebook中的形式用输入In和输出Out展现:
默认的IPython提示符采用In [2]:风格的显示,而不是标准的>>>提示符。
In [5]: CODE EXAMPLE
Out[5]: OUTPUT
将示例代码输入到In区按下回车键执行代码(Jupyter中按下shift-Enter)输出结果展现在Out区
使用%run命令时,IPython会在同一个进程内执行指定文件中的代码,确保你在执行完成时可以立即探索结果。
%run hello_world.py
示例数据
托管在GitHub仓库
http://github.com/wesm/pydata-book
一些约定
导入约定
Python社区对一些常用模块采用了命名约定:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm
这意味着,当你看到np.arrange时,它引用的是NumPy中的arrange函数。这是因为一次性从像NumPy这样的大包中引入所有内容(from numpy import *)在Python软件开发中被认为是拙劣实践。
Python 中导入模块的两种方式:
from module import * 和 import module 的区别
1. 命名空间访问方式
import module:
将整个模块导入,使用时需要通过模块名前缀访问,如 module.function()
from module import *:
将模块中所有公共名称直接导入当前命名空间,可直接使用函数名,如 function()
2. 命名空间污染
import module:
不会污染当前命名空间,所有标识符都通过模块名访问
from module import *:
可能造成命名空间污染,如果当前文件有同名标识符会被覆盖
3. 代码可读性
import module:
代码中明确显示函数来源,便于理解和维护
from module import *:
无法直接看出函数来源,降低代码可读性
4. 性能影响
import module:
只加载模块一次,按需访问成员
from module import *:
一次性导入所有公共名称,可能加载不必要的内容
5. 推荐使用场景
通常推荐使用 import module,特别是团队项目和大型程序
from module import * 主要用于交互式环境或简单脚本
示例对比:
sqrt 是数学中的平方根函数,用于计算一个非负数的算术平方根。
输入:非负实数输出:该数的正平方根数学表示:√x
# 使用 import module
import math
result = math.sqrt(16) # 返回 4.0
# 使用 from module import *
from math import *
result = sqrt(25) # 返回 5.0
在实际开发中,建议优先使用 import module 或明确的 from 模块名 import 函数名 方式。
# 从 math 模块导入 sqrt 函数
from math import sqrt
# 导入后直接使用函数名,无需模块前缀
result = sqrt(36) # 返回 6.0
术语
处理/处置/规整(munge/munging/wrangling)
描述的是将非结构化或者同时又很凌乱的数据整理成结构化、清晰形式的整个过程。
伪代码
用一种类似代码的形式描述算法或者过程,而事实上又不是实际有效的源代码。
语法糖
并不增加新特性,但便利于代码编写的编程语法。




