Python 3.8+ 环境配置与数据科学工具全指南

Python环境配置与外部库

环境配置与工具准备

安装Python 3.8+版本

Python官网下载对应操作系统的安装包。勾选“Add Python to PATH”选项,确保环境变量自动配置。安装完成后,命令行输入python --version验证是否成功。

配置Jupyter Notebook

通过命令行安装Jupyter:

pip install jupyter notebook 

启动Jupyter:

jupyter notebook 

浏览器将自动打开交互式界面,新建笔记本文件(扩展名为.ipynb)即可开始编码。

安装常用数据科学库

在命令行中批量安装核心库:

pip install numpy pandas matplotlib seaborn scikit-learn 

验证安装:

import numpy as np print(np.__version__) # 应输出版本号无报错 

Jupyter Notebook基础操作

  • 单元格运行:点击工具栏的“运行”按钮或按Shift+Enter执行当前单元格。
  • Markdown注释:新建单元格后,选择“Markdown”模式,用#编写标题或普通文本。例如:
# 一级标题 ## 二级标题 *斜体*或**加粗**文本 

环境管理(可选)

推荐使用conda创建独立环境以避免依赖冲突:

conda create -n my_env python=3.8 conda activate my_env 

后续所有库安装在此环境中进行。

调试与帮助

  • 查看函数文档:在Jupyter中函数名后输入?(如np.array?)。
  • 快捷键列表:通过Jupyter的Help > Keyboard Shortcuts获取。

安装Python 3.8+版本

Python官网下载对应操作系统的安装包。勾选“Add Python to PATH”选项,确保环境变量自动配置。安装完成后,命令行输入python --version验证是否成功。

配置Jupyter Notebook

通过命令行安装Jupyter:

pip install jupyter notebook 

启动Jupyter:

jupyter notebook 

浏览器将自动打开交互式界面,新建笔记本文件(扩展名为.ipynb)即可开始编码。

安装常用数据科学库

在命令行中批量安装核心库:

pip install numpy pandas matplotlib seaborn scikit-learn 

验证安装:

import numpy as np print(np.__version__) # 应输出版本号无报错 

Jupyter Notebook基础操作

  • 单元格运行:点击工具栏的“运行”按钮或按Shift+Enter执行当前单元格。
  • Markdown注释:新建单元格后,选择“Markdown”模式,用#编写标题或普通文本。例如:
# 一级标题 ## 二级标题 *斜体*或**加粗**文本 

环境管理(可选)

推荐使用conda创建独立环境以避免依赖冲突:

conda create -n my_env python=3.8 conda activate my_env 

后续所有库安装在此环境中进行。

调试与帮助

  • 查看函数文档:在Jupyter中函数名后输入?(如np.array?)。
  • 快捷键列表:通过Jupyter的Help > Keyboard Shortcuts获取。

数据处理与科学计算

NumPy基础

多维数组对象 ndarray 的创建方法

使用 np.array() 可以从 Python 列表或元组创建 ndarray:

import numpy as np arr = np.array([1, 2, 3]) # 一维数组 arr_2d = np.array([[1, 2], [3, 4]]) # 二维数组 

使用 np.zeros() 创建全零数组:

zeros_1d = np.zeros(3) # 一维零数组 zeros_2d = np.zeros((2, 3)) # 2x3 零矩阵 

使用 np.ones() 创建全 1 数组:

ones_arr = np.ones((2, 2)) # 2x2 全 1 矩阵 

使用 np.arange() 生成序列数组:

seq = np.arange(0, 10, 2) # 0, 2, 4, 6, 8 

使用 np.linspace() 生成等间隔数组:

lin_arr = np.linspace(0, 1, 5) # [0.0, 0.25, 0.5, 0.75, 1.0] 

使用 np.random 生成随机数组:

rand_arr = np.random.rand(3, 3) # 3x3 均匀分布随机矩阵 randn_arr = np.random.randn(2, 2) # 2x2 标准正态分布矩阵 

数组的基本操作

查看数组形状:

arr = np.array([[1, 2], [3, 4]]) print(arr.shape) # (2, 2) 

改变数组形状:

reshaped = arr.reshape(4) # 转换为一维数组 [1, 2, 3, 4] 

数组索引与切片:

print(arr[0, 1]) # 2 print(arr[:, 1]) # 获取第二列 [2, 4] 

数组拼接:

a = np.array([1, 2]) b = np.array([3, 4]) concat = np.concatenate([a, b]) # [1, 2, 3, 4] 

数组运算与广播机制

算术运算:

a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) print(a + b) # [5, 7, 9] print(a * 2) # [2, 4, 6] 

广播机制允许不同形状的数组进行计算:

a = np.array([[1], [2], [3]]) b = np.array([1, 2, 3]) print(a + b) # [[2, 3, 4], [3, 4, 5], [4, 5, 6]] 

矩阵乘法:

mat_a = np.array([[1, 2], [3, 4]]) mat_b = np.array([[5, 6], [7, 8]]) dot_product = np.dot(mat_a, mat_b) # 或 mat_a @ mat_b 

常用数学函数

统计计算:

arr = np.array([1, 2, 3, 4]) print(np.sum(arr)) # 10 print(np.mean(arr)) # 2.5 print(np.max(arr)) # 4 

三角函数:

angles = np.array([0, np.pi/2]) print(np.sin(angles)) # [0.0, 1.0] 

指数与对数:

print(np.exp([1, 2])) # [2.718, 7.389] print(np.log([1, np.e])) # [0.0, 1.0] 

数组的高级操作

布尔索引:

arr = np.array([1, 2, 3, 4]) mask = arr > 2 print(arr[mask]) # [3, 4] 

条件运算:

arr = np.array([1, -1, 0]) print(np.where(arr > 0, 1, -1)) # [1, -1, -1] 

排序与去重:

unsorted = np.array([3, 1, 2]) sorted_arr = np.sort(unsorted) # [1, 2, 3] unique = np.unique([1, 2, 2, 3]) # [1, 2, 3] 
Pandas核心功能

Series创建

通过列表创建:

pd.Series([1, 3, 5, np.nan], index=['a', 'b', 'c', 'd']) 

通过字典创建:

pd.Series({'a': 1, 'b': 3, 'c': 5}) 

指定数据类型:

pd.Series([1, 2], dtype='float64') 

从标量值创建:

pd.Series(5, index=['a', 'b', 'c']) 

DataFrame创建

通过字典创建:

pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) 

通过二维数组创建:

pd.DataFrame(np.random.randn(3, 4), columns=['A', 'B', 'C', 'D']) 

通过结构化数组创建:

pd.DataFrame(np.array([(1, 'a'), (2, 'b')], dtype=[('x', 'i4'), ('y', 'U1')])) 

通过其他DataFrame创建:

pd.DataFrame(existing_df, copy=True) 

高级索引技术

布尔索引:

df[df['A'] > 0] 

位置索引:

df.iloc[3:5, 0:2] 

标签索引:

df.loc['20200101':'20200103', ['A', 'B']] 

多级索引:

df.set_index(['col1', 'col2']).sort_index() 

数据清洗:处理缺失值与去重

检测缺失值:

df.isna().sum() 

删除缺失值:

df.dropna(axis=0, how='any', subset=['col1', 'col2']) 

填充缺失值:

固定值填充:

df.fillna(value=0) 

前向填充:

df.fillna(method='ffill') 

后向填充:

df.fillna(method='bfill') 

统计值填充:

df.fillna(df.mean()) 

插值填充:

df.interpolate() 

高级去重操作

基于所有列去重:

df.drop_duplicates() 

基于特定列去重:

df.drop_duplicates(subset=['col1']) 

保留最后出现项:

df.drop_duplicates(keep='last') 

标记重复项:

df.duplicated() 

自定义重复判断:

df.drop_duplicates(subset=['col1'], keep=False) 

数据聚合与透视

单列分组:

df.groupby('A').sum() 

多列分组:

df.groupby(['A', 'B']).mean() 

分组后多聚合:

df.groupby('A').agg(['sum', 'mean', 'std']) 

自定义聚合:

df.groupby('A').agg({'B': 'sum', 'C': lambda x: max(x)-min(x)}) 

分组后过滤:

df.groupby('A').filter(lambda x: x['B'].mean() > 0) 

pivot_table深度使用

基础透视:

pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']) 

多值透视:

pd.pivot_table(df, values=['D', 'E'], index='A', columns='C') 

指定聚合函数:

pd.pivot_table(df, values='D', index='A', aggfunc=[np.sum, len]) 

填充缺失值:

pd.pivot_table(df, values='D', index='A', fill_value=0) 

边际总计:

pd.pivot_table(df, values='D', index='A', margins=True) 

时间序列处理

字符串转时间:

pd.to_datetime(df['date_col']) 

时间戳提取:

df['datetime_col'].dt.year 

时间偏移:

df['datetime_col'] + pd.Timedelta(days=1) 

时间序列重采样

降采样:

df.resample('M').mean() 

升采样:

df.resample('D').ffill() 

自定义重采样:

df.resample('Q').agg({'A':'sum', 'B':'mean'}) 

滚动窗口:

df.rolling(window=3).mean() 

扩展窗口:

df.expanding().sum() 

数据合并与连接

简单合并:

pd.concat([df1, df2], axis=0) 

索引对齐合并:

pd.merge(df1, df2, on='key') 

多键合并:

pd.merge(df1, df2, left_on=['key1', 'key2'], right_on=['key1', 'key2']) 

不同合并方式:

pd.merge(df1, df2, how='outer') 

索引合并:

df1.join(df2, how='left') 

数据变形

宽表转长表:

pd.melt(df, id_vars=['A'], value_vars=['B', 'C']) 

长表转宽表:

df.pivot(index='date', columns='variable', values='value') 

交叉表:

pd.crosstab(df['A'], df['B']) 

虚拟变量:

pd.get_dummies(df['category_col']) 

性能优化技巧

矢量化操作:

df['new_col'] = df['A'] * 2 

避免循环:

df.apply(lambda x: x['A'] * 2, axis=1) 

使用eval()表达式:

df.eval('A + B') 

类型优化:

df.astype({'A': 'int32'}) 

分块处理:

pd.read_csv('large.csv', chunksize=10000) 

内存管理

查看内存使用:

df.memory_usage(deep=True) 

减少内存占用:

df.astype('category') 

稀疏数据结构:

pd.arrays.SparseArray(df['col']) 

释放内存:

del df; gc.collect() 

数据可视化

折线图绘制(plt.plot())

折线图适用于展示数据随时间或有序类别的变化趋势。以下是一个包含完整注释的示例:

import matplotlib.pyplot as plt import numpy as np # 生成示例数据 x = np.linspace(0, 10, 100) # 0到10的100个等间隔数 y = np.sin(x) # 生成正弦曲线 # 绘制折线图 plt.plot(x, y, color='red', # 线条颜色 linestyle='--', # 虚线样式 linewidth=2, # 线宽 marker='o', # 数据点标记 markersize=5, # 标记大小 label='sin(x)') # 图例标签 # 添加标题和坐标轴标签 plt.title('Sine Wave Example', fontsize=14) plt.xlabel('X-axis', fontsize=12) plt.ylabel('Y-axis', fontsize=12) # 显示图例并调整网格 plt.legend(loc='upper right') plt.grid(True, linestyle=':', alpha=0.5) # 显示图形 plt.show() 

散点图绘制(plt.scatter())

散点图用于展示两个变量之间的相关性或分布。示例代码:

# 生成随机数据 np.random.seed(42) x = np.random.randn(50) y = x * 2 + np.random.randn(50) * 0.5 # 绘制散点图 plt.scatter(x, y, c='blue', # 点颜色 s=80, # 点大小 alpha=0.6, # 透明度 edgecolors='black', # 边缘颜色 label='Data Points') # 添加回归线 plt.plot(np.unique(x), np.poly1d(np.polyfit(x, y, 1))(np.unique(x)), color='red', label='Trend Line') # 样式调整 plt.title('Scatter Plot with Trend Line', fontsize=14) plt.xlabel('Independent Variable', fontsize=12) plt.ylabel('Dependent Variable', fontsize=12) plt.legend() plt.show() 

子图绘制(plt.subplots())

子图功能允许在同一画布上展示多个图形。示例:

# 创建2x2的子图布局 fig, axes = plt.subplots(2, 2, figsize=(10, 8)) # 子图1:折线图 axes[0, 0].plot(x, np.sin(x), color='green') axes[0, 0].set_title('Subplot 1: Sine Wave') # 子图2:散点图 axes[0, 1].scatter(x, y, color='orange') axes[0, 1].set_title('Subplot 2: Scatter Plot') # 子图3:柱状图 axes[1, 0].bar(['A', 'B', 'C'], [3, 7, 4], color='purple') axes[1, 0].set_title('Subplot 3: Bar Chart') # 子图4:直方图 axes[1, 1].hist(np.random.randn(1000), bins=20, color='pink') axes[1, 1].set_title('Subplot 4: Histogram') # 调整子图间距 plt.tight_layout() plt.show() 

扩展绘图类型

柱状图(plt.bar())
categories = ['Category A', 'Category B', 'Category C'] values = [12, 24, 8] plt.bar(categories, values, color=['#FF5733', '#33FF57', '#3357FF'], edgecolor='black', width=0.6) plt.title('Bar Chart Example') plt.xticks(rotation=45) # 旋转x轴标签 plt.show() 
饼图(plt.pie())
labels = ['Apples', 'Oranges', 'Bananas'] sizes = [30, 45, 25] explode = (0.1, 0, 0) # 突出显示第一部分 plt.pie(sizes, labels=labels, explode=explode, autopct='%1.1f%%', # 显示百分比 shadow=True, startangle=90) plt.title('Pie Chart Example') plt.show() 
箱线图(plt.boxplot())
data = [np.random.normal(0, std, 100) for std in range(1, 4)] plt.boxplot(data, notch=True, # 缺口显示中位数置信区间 patch_artist=True, boxprops=dict(facecolor='lightblue')) plt.title('Boxplot Example') plt.xticks([1, 2, 3], ['Group 1', 'Group 2', 'Group 3']) plt.show() 

样式高级调整

  1. 自定义颜色与样式
    • 使用十六进制颜色码(如 #FF5733)或RGB元组(如 (0.1, 0.2, 0.5))。
    • 线型参数:'-'(实线)、'--'(虚线)、':'(点线)。

全局样式设置

plt.style.use('ggplot') # 使用预置主题(如 'ggplot', 'seaborn') 

保存图形

plt.savefig('output.png', dpi=300, bbox_inches='tight') # 高分辨率保存 

Seaborn高级可视化统计图形详解

Seaborn是基于Matplotlib的Python数据可视化库,提供更高级的统计图形接口。以下将详细介绍常用图形及进阶操作。

直方图(sns.histplot())

直方图用于展示连续变量的分布情况,通过bin将数据分段统计频率。

import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据集 tips = sns.load_dataset("tips") # 基础直方图 sns.histplot(data=tips, x="total_bill") plt.title("Total Bill Distribution") plt.show() # 添加核密度估计 sns.histplot(data=tips, x="total_bill", kde=True) plt.title("With KDE Estimation") plt.show() # 分组直方图 sns.histplot(data=tips, x="total_bill", hue="sex", element="step") plt.title("Grouped by Gender") plt.show() 

关键参数说明:

  • kde:是否叠加核密度曲线
  • hue:按分类变量分组着色
  • bins:手动设置分箱数量
  • stat:可改为"density"显示密度而非计数
箱线图(sns.boxplot())

箱线图展示数据分布的五数概括(最小值、Q1、中位数、Q3、最大值)及离群点。

# 基础箱线图 sns.boxplot(data=tips, x="day", y="total_bill") plt.title("Daily Bill Distribution") plt.show() # 添加分组维度 sns.boxplot(data=tips, x="day", y="total_bill", hue="smoker") plt.title("With Smoking Status") plt.show() # 横向箱线图 sns.boxplot(data=tips, y="day", x="total_bill", orient="h") plt.title("Horizontal Orientation") plt.show() 

进阶技巧:

  • showfliers=False 可隐藏离群点
  • whis 参数调整离群点判定范围
  • 结合swarmplot()可叠加原始数据点
散点矩阵(sns.pairplot())

散点矩阵可同时展示多个变量间的两两关系。

# 基础散点矩阵 sns.pairplot(data=tips) plt.suptitle("Pairwise Relationships") plt.show() # 添加分类着色 sns.pairplot(data=tips, hue="time", corner=True) plt.suptitle("Colored by Meal Time") plt.show() # 自定义对角线图形 sns.pairplot( data=tips, diag_kind="kde", plot_kws={"alpha": 0.6}, height=2.5 ) plt.suptitle("Custom Diagonal Plots") plt.show() 

参数优化:

  • vars 选择特定列
  • markers 为不同类别指定形状
  • palette 自定义颜色方案
热力图(sns.heatmap())

热力图通过颜色深浅展示矩阵数据值大小。

# 计算相关系数矩阵 corr = tips.corr() # 基础热力图 sns.heatmap(corr, annot=True, fmt=".2f") plt.title("Correlation Heatmap") plt.show() # 自定义热力图 sns.heatmap( corr, cmap="coolwarm", center=0, linewidths=.5, annot_kws={"size": 10} ) plt.title("Styled Heatmap") plt.show() 

高级应用:

  • 结合clustermap()实现层次聚类热图
  • mask参数可隐藏部分矩阵
  • cbar_kws自定义颜色条样式

进阶图形扩展

小提琴图(sns.violinplot())

结合箱线图和核密度估计的增强图形。

sns.violinplot(data=tips, x="day", y="total_bill", inner="quartile") plt.title("Violin Plot Example") plt.show() 
分面网格(sns.FacetGrid)

创建多面板图形矩阵。

g = sns.FacetGrid(tips, col="time", row="smoker") g.map(sns.scatterplot, "total_bill", "tip") g.add_legend() plt.show() 
回归图(sns.lmplot())

展示变量间线性关系。

sns.lmplot( data=tips, x="total_bill", y="tip", hue="smoker", markers=["o", "x"] ) plt.title("Regression Plot") plt.show() 
分布对比图(sns.ecdfplot())

经验累积分布函数图。

sns.ecdfplot(data=tips, x="total_bill", hue="time") plt.title("ECDF Plot") plt.show() 

样式与主题设置

# 设置整体样式 sns.set_style("whitegrid") sns.set_palette("husl") # 设置上下文(影响缩放比例) sns.set_context("notebook") # 可选paper/talk/poster # 自定义颜色调色板 custom_palette = sns.color_palette(["#9b59b6", "#3498db", "#95a5a6"]) sns.set_palette(custom_palette) 

图形保存

plt.figure(figsize=(10, 6)) sns.histplot(data=tips, x="total_bill") plt.savefig("histogram.png", dpi=300, bbox_inches="tight") 

建议从基础图形开始练习,逐步叠加更复杂的参数和样式设置。

学习资源推荐

官方文档:NumPy/Pandas/Matplotlib/scikit-learn官网
实战平台:Kaggle入门竞赛、UCI数据集练习
代码示例:GitHub搜索python-data-science-tutorial

(注:每个模块建议配合Jupyter Notebook边学边练,从官方示例代码开始修改调试)

Read more

用OpenClaw做飞书ai办公机器人(含本地ollama模型接入+自动安装skills+数据可视化)

用OpenClaw做飞书ai办公机器人(含本地ollama模型接入+自动安装skills+数据可视化)

执行git clone https://github.com/openclaw/openclaw克隆项目,执行cd openclaw进入项目 执行node --version看看node的版本是否大于等于22(没有node.js需自行安装),再执行npm install -g pnpm安装作为包管理器,并执行pnpm install安装依赖 首次执行pnpm ui:build构建 Web UI(会先安装 ui/ 目录的依赖) 执行pnpm build构建主程序 执行pnpm openclaw onboard --install-daemon运行配置向导(安装守护进程),完成初始化 按键盘右箭头选择Yes,同样Yes 任选一个模型提供商都行,没有对应的提供商的密钥可以跳过,如果是本地模型选vLLM(需用vLLM框架启动模型,有性能优势,但原生vLLM仅完全支持Linux的cuda)、Custom Provider(可以连接任何 OpenAI 或 Anthropic 兼容的端点,

By Ne0inhk

OpenClaw大龙虾机器人完整安装教程

OpenClaw(大龙虾机器人)是一款本地部署的全能AI助手,可通过WhatsApp、Telegram、飞书等聊天软件实现邮件处理、日历管理、系统操作等功能,数据本地存储更隐私。本教程适配macOS/Linux/Windows系统,包含基础安装、初始化配置、聊天软件对接及常见问题解决,新手也能快速上手。 一、安装前准备 1. 系统与硬件要求 配置项最低要求推荐配置操作系统macOS 12+/Ubuntu 20.04+/Windows 10(需WSL2)macOS 14+/Ubuntu 22.04+/Windows 11内存4GB8GB+磁盘空间2GB可用10GB+ SSD核心依赖Node.js 18.0+Node.js v22 LTS最新版 2. 必备前置资源 * AI模型API Key:Claude、GPT-4/

By Ne0inhk
基于深度学习yolo系列+deepseek+qwen大模型的智能识别系统 中草药检测+行人车辆检测+垃圾分类检测+茶叶病虫害检测+无人机目标检测

基于深度学习yolo系列+deepseek+qwen大模型的智能识别系统 中草药检测+行人车辆检测+垃圾分类检测+茶叶病虫害检测+无人机目标检测

智能检测系统综合概述 定制联系文末卡片 目标检测系统应用场景表 系统类型检测目标适用领域中草药检测45种中草药中医药、药材鉴定脑肿瘤检测胶质瘤等脑部肿瘤医疗影像诊断行人车辆检测行人、车辆等多目标交通监控、安防玉米病虫害检测6种玉米病害农业植保裂缝检测6种表面缺陷工业质检、建筑检测垃圾分类检测4类垃圾环保、智慧城市遥感目标检测地理空间目标遥感分析、军事侦察西瓜病虫害检测多种西瓜病害农业种植管理海洋生物检测海豚、鲨鱼等海洋科研、教育茶叶病虫害检测6种茶叶病害茶叶种植、农业 包括但不限于此!!!! 🏗️ 统一技术架构 所有系统都基于相似的模块化技术栈: • 前端:Vue3 + Element-Plus + TypeScript + Echarts • 后端:SpringBoot + MyBatis-Plus + Flask • 深度学习:YOLO系列 + PyTorch • 数据库:MySQL • 大模型集成:DeepSeek + Qwen 🔄 标准化功能模块 检测功能四合一 1. 图片检测 - 单张图片上传识别 2. 批量

By Ne0inhk
Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这 * 引言: * 正文: * 一、赛事核心价值:资源、履历、落地全具备 * 1.1 硬核资源支持 * 1.2 行业背书与机遇 * 1.3 低门槛试错 * 二、赛道核心玩法:AI 和 AR 创作方向解析 * 2.1 AI 赛道:拼的是 "空间认知协作" 能力 * 2.1.1 应用示例 * 2.2 AR 赛道:

By Ne0inhk