Pandas按条件替换值的终极指南(附高性能代码模板)

如何在Pandas中根据条件替换列中的值? 在使用Pandas的Python中,DataFrame列中的值可以通过使用各种内置函数根据条件进行替换。在本文中,我们将讨论在Pandas中用条件替换数据集列中的值的各种方法。 阅读详情

第一章:Pandas按条件替换值的核心概念

在数据处理过程中,经常需要根据特定条件对 DataFrame 中的值进行替换。Pandas 提供了多种灵活的方法来实现基于条件的值替换,使数据清洗和转换更加高效。

条件替换的基本方法

Pandas 中最常用的条件替换方式包括 loc、numpy.where 和 mask 方法。这些方法允许用户结合布尔条件表达式,精准定位并修改满足条件的数据。 例如,使用 loc 可以直接根据条件选择行并赋新值:
# 将年龄小于18的值替换为"未成年"
df.loc[df['age'] < 18, 'age_category'] = '未成年'
该代码通过布尔索引筛选出 age 列中小于 18 的记录,并将其对应的 age_category 列设置为“未成年”。

多种替换策略对比

以下是几种常见条件替换方法的适用场景:
  • loc + 条件表达式:适用于精确列赋值操作
  • numpy.where:适合创建新列或返回条件判断结果
  • replace() 配合条件:主要用于匹配特定值后替换
  • mask() / where():用于保留或替换不满足条件的值
方法可变性典型用途
loc直接修改原数据按行列条件赋值
numpy.where生成新数组二元条件判断
mask替换不满足条件项条件屏蔽
使用 numpy.where 实现双分支逻辑示例:
import numpy as np
# 根据分数判断是否及格
df['status'] = np.where(df['score'] >= 60, '及格', '不及格')
此代码利用 np.where 实现类似三元运算的效果,提升代码可读性与执行效率。

第二章:基础替换方法与典型应用场景

2.1 使用loc结合布尔索引实现精准替换

在Pandas数据处理中,loc与布尔索引的结合为条件化数据替换提供了高效手段。通过构造逻辑条件,可精确定位满足要求的行或列,并进行赋值操作。
基本语法结构
df.loc[condition, 'column'] = value
其中,condition为返回布尔序列的表达式,column为目标列名,value为替换值。
实际应用示例
假设需将成绩表中数学不及格(<80)的学生状态标记为“需提升”:
df.loc[df['Math'] < 80, 'Status'] = '需提升'
该操作首先生成Math列小于80的布尔索引,再通过loc定位对应行的Status列,实现局部赋值,避免全表遍历,显著提升效率。

2.2 利用numpy.where进行高效条件赋值

在处理数值数组时,常需根据条件对元素进行差异化赋值。`numpy.where` 提供了一种无需显式循环的向量化解决方案,显著提升计算效率。
基本语法与逻辑
numpy.where(condition, x, y)
当 condition 为真时,返回 x 对应位置的值,否则返回 y。支持广播机制,适用于多维数组。
实际应用示例
import numpy as np
arr = np.array([1, -2, 3, -4, 5])
result = np.where(arr > 0, arr, 0)
# 输出: [1 0 3 0 5]
该代码将负数替换为0,实现非负化操作。相比Python循环,执行速度更快,代码更简洁。
  • 条件可为布尔数组或表达式
  • 支持嵌套使用实现多条件分支
  • 常用于数据清洗和特征工程

2.3 apply函数与自定义逻辑的灵活替换

在数据处理中,apply函数提供了对DataFrame或Series逐行或逐列应用自定义逻辑的能力,极大增强了操作灵活性。
基础用法示例
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df['C'] = df.apply(lambda row: row['A'] * row['B'], axis=1)
上述代码通过apply沿行方向(axis=1)计算每行A列与B列的乘积。lambda函数封装了自定义计算逻辑,适用于复杂非向量化操作。
性能对比
方法适用场景性能表现
apply + lambda复杂逻辑中等
向量化操作简单运算高
iterrows极小数据集低
合理使用apply可在保持可读性的同时实现灵活的数据转换。

2.4 replace方法在静态映射中的高级用法

在处理静态资源映射时,`replace` 方法可结合正则表达式实现动态路径重写。通过预定义规则,能够高效转换URL结构。
条件性路径替换
使用带有捕获组的正则表达式,可提取原始路径中的关键信息并重构目标路径:

const path = "/static/v1/assets/logo.png";
const newPath = path.replace(/^\/static\/v\d+\/(.+)$/, "/cdn/$1");
// 结果:"/cdn/assets/logo.png"
上述代码中,`^\/static\/v\d+\/(.+)$` 匹配以 `/static/v` 开头、后跟版本号的路径,捕获剩余部分并在替换中引用 `$1`,实现版本无关的CDN映射。
多规则优先级管理
  • 高优先级规则应前置,避免被通配规则提前匹配
  • 使用非贪婪量词 *? 提升匹配精度
  • 可通过返回函数动态生成替换内容

2.5 mask和where方法的差异与适用场景

在Pandas数据处理中,`mask`和`where`是条件筛选的重要工具,二者逻辑相反但功能互补。
核心逻辑对比
  • where:保留满足条件的元素,不满足处替换为指定值(默认NaN);
  • mask:将满足条件的元素替换为指定值,保留不满足条件的部分。
import pandas as pd
s = pd.Series([1, 2, 3, 4])
print(s.where(s > 2))   # 输出: NaN, NaN, 3.0, 4.0
print(s.mask(s > 2))    # 输出: 1.0, 2.0, NaN, NaN
上述代码中,where保留大于2的值,其余设为NaN;而mask则将大于2的值替换为NaN。
适用场景分析
方法使用场景
where过滤异常值、保留有效数据
mask屏蔽敏感信息或临时隐藏数据

第三章:性能优化策略与内存管理技巧

3.1 避免链式赋值提升代码稳定性

在编程实践中,链式赋值看似简洁,实则隐藏着变量引用混乱的风险,尤其在处理可变对象时极易引发意外副作用。
链式赋值的潜在问题
当多个变量通过链式方式赋值同一可变对象时,任一变量的修改都会影响其他变量,破坏数据隔离性。

a = b = []
a.append(1)
print(b)  # 输出: [1],b 被意外修改
上述代码中,a 和 b 实际指向同一列表对象。对 a 的修改会同步反映到 b,导致逻辑错误。
推荐的赋值方式
应采用独立初始化,确保各变量拥有独立的对象引用:

a = []
b = []
a.append(1)
print(b)  # 输出: [],互不影响
通过分离对象创建过程,有效提升代码的可预测性和稳定性,降低调试难度。

3.2 向量化操作对循环的性能碾压

在数值计算中,传统 for 循环逐元素处理数据,而向量化操作利用底层 SIMD(单指令多数据)指令并行处理数组,显著提升执行效率。
性能对比示例
import numpy as np
# 向量化操作
result_vec = np.array([1, 2, 3]) * np.array([4, 5, 6])

# 等价的循环实现
result_loop = [a * b for a, b in zip([1, 2, 3], [4, 5, 6])]
上述代码中,np.multiply 在 C 层级并行执行,避免 Python 解释器的循环开销。对于百万级数组,向量化速度可提升数十倍。
性能优势来源
  • SIMD 指令同时处理多个数据项
  • 减少 CPU 与内存间的数据搬运
  • 避开 Python 解释器的逐行执行瓶颈

3.3 数据类型优化减少内存开销

合理选择数据类型是降低内存消耗的关键手段。在高并发或大数据量场景下,细微的内存节省会带来显著的整体性能提升。
使用精确匹配的数据类型
避免使用过大的数据类型存储小范围值。例如,在Go中用 int8 代替 int64 可节省7/8内存空间。

type User struct {
    ID   int32   // 足够存储千万级用户
    Age  uint8   // 年龄0-255,无需int32
    Name string  // 字符串仍需动态分配
}
该结构体若使用 int64 和 int,在64位系统上将额外浪费12字节。通过紧凑布局,每个实例节省内存达15%以上。
枚举与布尔类型的优化
  • 使用 bool 替代整型标志位
  • 枚举值采用 uint8 或 iota 枚举,限制存储宽度
数据类型内存占用(字节)适用场景
bool1开关状态
uint81状态码、年龄等小范围值
int324中等规模ID

第四章:复杂业务场景下的实战模式

4.1 多条件嵌套替换的清晰写法

在处理复杂的多条件逻辑时,深层嵌套易导致代码可读性下降。通过结构化控制流可显著提升维护性。
使用策略模式替代 if-else 堆叠
  • 将每个条件分支封装为独立处理函数
  • 通过映射表动态调用对应逻辑
var handlers = map[string]func(val int) bool{
    "typeA": func(v int) bool { return v > 10 },
    "typeB": func(v int) bool { return v % 2 == 0 },
}

func process(key string, val int) bool {
    if handler, exists := handlers[key]; exists {
        return handler(val)
    }
    return false
}
该实现将原本需多层嵌套的判断转为查表操作。handlers 映射键对应条件类型,值为断言函数。process 函数通过 key 定位处理器并执行,逻辑清晰且易于扩展新类型。

4.2 分组内条件替换的transform技巧

在数据处理中,常需根据分组内的条件对特定值进行替换。Pandas 的 `transform` 方法结合自定义函数可高效实现该需求。
核心逻辑解析
`transform` 能保持与原数据相同的索引结构,适合用于生成与原表对齐的替换结果。配合 `groupby`,可在每个分组内部独立执行逻辑判断。
import pandas as pd

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

# 将每组最大值替换为均值
def replace_max_with_mean(x):
    x = x.copy()
    max_idx = x.argmax()
    x.iloc[max_idx] = x.mean()
    return x

df['new_value'] = df.groupby('group')['value'].transform(replace_max_with_mean)
上述代码中,`replace_max_with_mean` 接收每个分组的一维序列,找到最大值位置并替换为组内均值,`transform` 确保返回结果与原始索引对齐。
应用场景扩展
  • 异常值局部修正
  • 分组标准化(如 Z-score)
  • 填充组内缺失模式

4.3 时间序列数据中的动态阈值替换

在处理高频时间序列数据时,静态阈值难以适应数据分布的漂移。动态阈值通过实时统计特征调整判断边界,提升异常检测鲁棒性。
滑动窗口Z-score动态阈值
采用滑动窗口计算局部均值与标准差,对当前点进行标准化:

import numpy as np

def dynamic_threshold_zscore(series, window=10, threshold=2):
    z_scores = [0] * len(series)
    for i in range(window, len(series)):
        window_data = series[i-window:i]
        mean = np.mean(window_data)
        std = np.std(window_data)
        z_scores[i] = (series[i] - mean) / (std + 1e-6)
    return np.abs(z_scores) > threshold
该方法每步仅依赖最近window个观测,有效响应趋势变化。参数threshold控制敏感度,通常设为2~3。
适用场景对比
方法响应速度抗噪性
移动平均±3σ中高
EWMA控制图快中

4.4 缺失值与异常值的智能填充方案

在数据预处理中,缺失值与异常值直接影响模型训练效果。传统均值填充易引入偏差,而硬阈值检测可能误判真实波动。
基于统计与机器学习的混合策略
采用Z-score识别异常值,对缺失部分使用KNN插值,兼顾局部相似性与分布特性。
方法适用场景优势
均值/中位数填充缺失率<5%简单高效
KNN插补特征相关性强保留数据结构
孤立森林高维异常检测非参数化,适应复杂分布
代码实现示例
from sklearn.impute import KNNImputer
from sklearn.ensemble import IsolationForest

# 先检测异常值并标记为NaN
iso_forest = IsolationForest(contamination=0.1)
outliers = iso_forest.fit_predict(X)
X[outliers == -1] = np.nan

# 使用KNN进行智能填充
imputer = KNNImputer(n_neighbors=5)
X_filled = imputer.fit_transform(X)
该方案首先利用孤立森林识别异常点并转为缺失值,再通过KNN根据邻近样本特征加权填补,提升数据完整性与真实性。

第五章:总结与最佳实践建议

性能监控与调优策略
在生产环境中,持续的性能监控是保障系统稳定的关键。推荐使用 Prometheus + Grafana 构建可视化监控体系,定期采集服务延迟、QPS 和内存占用等核心指标。
  • 设置告警阈值:当接口 P99 延迟超过 500ms 时触发告警
  • 定期分析 GC 日志,优化 JVM 参数配置
  • 使用 pprof 工具定位 Go 服务中的性能瓶颈
代码层面的最佳实践
遵循清晰的编码规范可显著提升维护效率。以下是一个带连接池配置的数据库初始化示例:

db, err := sql.Open("mysql", dsn)
if err != nil {
    log.Fatal(err)
}
// 设置最大空闲连接数
db.SetMaxIdleConns(10)
// 设置最大连接数
db.SetMaxOpenConns(100)
// 设置连接最长生命周期
db.SetConnMaxLifetime(time.Hour)
部署与配置管理
使用统一的配置中心(如 Consul 或 Apollo)管理多环境参数,避免硬编码。关键配置项应加密存储,并通过 CI/CD 流水线自动注入。
配置项开发环境生产环境
数据库连接数上限20100
日志级别DEBUGERROR
安全加固措施
所有对外暴露的 API 必须启用 HTTPS,并配置 HSTS 策略。敏感操作需引入双因素认证机制,同时对用户输入进行严格校验,防止 SQL 注入与 XSS 攻击。
pandas学习笔记:按照指定的条件筛选和修改某一列的值 文章目录根据条件定位/筛选某一列的值返回 series 结构的写法返回 dataframe 结构的写法基于整张表的定位操作根据条件修改某一列的值基于 series 结构的修改基于 dataframe 结构的修改Note: 这种情况是不奏效的,这是规定,因此在赋值的时候我们最好只用上面的第一种方式去写。再来一个训练实例 根据条件定位/筛选某一列的值 import pandas as pd import numpy as np df = pd.DataFrame(data={"数据":[1,2,3,4,5,6 阅读详情

相关推荐

pandas.dataFrame按条件修改列的值

np.where(condition, x, y):满足条件(condition),输出x,不满足输出y。如果column1符合A或B条件,对应的’plus’列删除的前7个字段。这个时候就运用if elif。

猫敷雪 2071

pandas.dataFrame按条件修改列的值(4种方式)

根据条件对另一列的值进行修改

Plus昺昊的博客 7万+

pandas 代码模板 读数据处理空值 无穷大值 inf 和数据生成csv

python pandas处理空值 无穷大值 inf 和数据生成csv

467

如何在Pandas中根据条件替换列中的值

python 如何在Pandas中根据条件替换列中的值

Rick_M的博客 1万+

用Python批量将Excel数据替换进Word模板的完整实践指南

办公自动化中,数据处理与文档生成常常分离,Excel负责结构化数据,Word负责最终呈现。利用Python脚本实现两者联动,已成为提升工作效率的常用手段。其核心原理是建立Excel字段与Word占位符的映射关系,通过python-docx遍历段落、表格和页眉页脚,按规则替换占位符,从而避免人工复制粘贴带来的错漏。技术价值在于将繁琐的重复劳动转化为可复用、可校验的自动化流程,尤其适用于报告、合同、证书等批量文档生成场景。本文从环境配置、数据清洗、占位符设计到替换逻辑,系统讲解如何用pandas读取Excel内

weixin_33226548的博客 217

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3648

掌握这4种场景,轻松玩转Pandas的mask和where替换功能

掌握Pandas的mask与where条件替换技巧,轻松应对数据清洗难题。涵盖数值替换、缺失值处理、条件赋值等4大应用场景,灵活实现双向数据筛选与修改。语法简洁高效,提升处理效率,值得收藏。

SimTrans的博客 920

Linux平台CCS安装配置完整示例

手把手讲解在Linux系统中完成CCS安装与环境配置的全过程,涵盖关键步骤与常见问题解决,是查找ccs安装教程时不可多得的实战指南。

weixin_42601134的博客 514

Dify工作流DSL模板实战指南:40+模板导入即用

Awesome-Dify-Workflow 收录了 40 多个 Dify 工作流 DSL 模板,覆盖翻译、数据分析、Agent 对话三大类,导入 yml 到自建账号即可运行,也能拆开研究别人的流程设计。适合不想从零画流程的新手和普通业务用户。 ## 🔍 全景速览:按场景选 Dify DSL 模板 | 场景 | 入口文件 | 一句话价值 | 前置条件 | | --- | --- | --- |

gitblog_00916的博客 807

Unidbg逆向阿里系App签名:从环境补全到算法还原实战

在移动安全与协议分析领域,理解应用层签名机制是核心挑战之一。签名算法作为保障通信安全与身份验证的关键技术,其原理通常涉及哈希、加密及密钥协商等基础密码学概念。在Android平台,核心签名逻辑常被加固并隐藏于Native层SO库中,以对抗动态调试与静态分析,这为安全研究和协议兼容带来了技术障碍。Unidbg作为一种基于模拟执行的逆向工程工具,通过模拟ARM指令集和系统调用,允许研究者在脱离真机环境的情况下,可控地执行和调试SO文件,为解决此类问题提供了创新思路。其技术价值在于实现了对加固代码的确定性分析与算

weixin_42525738的博客 939

android11-修改屏幕显示方向和触摸方向

参数0表示12点钟方向显示参数90表示3点钟方向显示参数180表示6点钟方向显示参数270表示9点钟方向显示。

Paper_Love的博客 2118

用Python批量生成Word文档:从Excel数据到模板替换的完整指南

在办公自动化和文档处理场景中,批量生成Word文档是一项高频需求。其核心原理是基于模板占位符与数据源的映射替换,通过python-docx等库操作docx文件,将Excel中的结构化数据逐行渲染到Word模板中,从而实现合同、工资条、通知等文档的批量产出。这一技术价值在于大幅提升重复性文档的生成效率,降低手工复制粘贴带来的错误率,并可与pandas结合进行数据清洗与校验。实际应用覆盖人力资源、财务、行政等各类需要批量生成标准化文档的领域。以员工工资条生成案例为例,完整展示了从Excel数据整理、Word模板

weixin_28705087的博客 106

YOLOv11 改进 - Mamba | 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-B 替换骨干,破解全局依赖建模难题,实现高效实时检测

本文介绍Mamba YOLO,为图片物体识别提供了“又快又准”的新方案。传统CNN架构运行快但难以捕捉远距离关联物体,Transformer架构精度高但计算量呈平方级增长,而SSM虽计算量为线性级且能抓全局关联,但用于图片识别时细节定位不准。为此,Mamba YOLO做了三项关键优化:引入ODMamba骨干网络,解决自注意力的二次复杂度问题,且无需预训练;设计ODMamba宏观结构确定最佳阶段比例和缩放大小;采用多分支结构的RG块建模通道维度,解决SSM在序列建模中的不足。在COCO数据集测试中,其小版本推

魔改工程师的博客 857

Pandas条件替换避坑指南(资深数据工程师的6条黄金建议)

掌握Pandas按条件替换DataFrame值的正确方法,避免常见错误。本文分享资深数据工程师总结的6条黄金建议,涵盖np.where、loc、mask等核心用法,适用于数据清洗与特征工程场景,提升代码效率与可读性,值得收藏。

BytePulse的博客 931

GNN(图神经网络)的 MATLAB 仿真

图神经网络(Graph Neural Network, GNN)是一种用于处理图结构数据的深度学习模型。GNN 通过聚合节点及其邻居的信息,能够有效捕捉图结构中的复杂关系,广泛应用于社交网络分析、推荐系统、化学分子分析等领域。GNN 通过消息传递机制聚合节点及其邻居的信息,能够有效处理图结构数据。MATLAB 仿真展示了 GNN 的基本流程和节点分类性能,适用于社交网络分析、推荐系统、化学分子分析和知识图谱等多种应用场景。

走向CTO的路上... 837

音视频开发基础(1):模拟视频技术简介

模拟视频技术是指用模拟技术对动态影像进行捕捉、记来、处理、存储、传输、复现的技术.模拟视频技术的发明、发展与模拟电视系统的发展密不可分.下面将通过模拟电视系统来介绍模拟视频技术中的基本概念. 首先,人的视觉系统的特征为电视等視稿系铳的发明、发展提供了理论依据.光线通过角膜、腫孔、晶状体的折射光线.透过玻璃体到达视网展.视网膜上分布着光感受器,光感受器在光线的剌激下...

琅嬛福地 1493

Pandas 2 使用指南:表格可视化

在对 DataFrame 的数据进行处理之后,应该执行样式和输出显示的自定义操作。如果对 DataFrame 进行进一步更改,Styler 不会动态更新。属性是一个返回Styler对象的属性。它在 Jupyter Notebook 中自动呈现,因为它在其上定义了方法。HTMLLaTeX字符串(通过扩展支持 CSV)Excel(JSON 目前不可用)前三种格式都有用于格式化和自定义输出的显示自定义方法。使用.format()和格式化值、索引和列标题,使用重命名索引或列标题标签,

数智笔记 2386

项目经理必看:如何建立高效的相关方沟通机制?

你是否遇到过这样的场景?客户突然说“这不是我要的”,开发团队抱怨“需求总变”,高层追问“进度滞后为什么不早说”?这些问题的根源往往是——相关方沟通机制失效。本文聚焦“如何建立高效沟通机制”,覆盖从识别相关方到持续优化的全流程,适用于IT、产品、工程等各类项目。本文将按“理解问题→拆解核心概念→掌握工具方法→实战落地→未来趋势”的逻辑展开,重点讲解“相关方分析矩阵”“沟通计划表”等实用工具,并用“组织生日派对”的案例贯穿全文,让抽象概念变得可感知。相关方识别:用“权力/利益矩阵”找对人(像派对邀请关键客人)

项目管理的博客 1295

Python处理Excel:批量替换内容与合并多个文件(附完整代码)

日常工作中,Excel几乎是每个职场人的必备工具:报表汇总、数据清洗、模板填充……但当你要把1000行数据里的"北京市"全部改成"北京",或者把10个部门的Excel合并成一张总表时,手动操作简直是噩梦。替换内容:按关键词/正则/条件精准替换,支持整表或指定列合并内容:把多个Excel合并成一个,支持按 sheet、按列去重全程零门槛,代码复制就能跑,不装任何付费插件。替换操作的核心是遍历单元格打开 →遍历 →cell.value读写字典映射()是最高效的替换方式:一次传多个对应关系,不用写一堆。

kuaile6669的博客 255

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

学习记录-如何替换DataFrame某列中的值(该列内容为list)

一开始想到用replace,但是他把某列内容当作一个整体去搜索替换,没有办法搜索列表内的某项. 使用列标取到某项的值以后,因为是list,又没有replace方法 解决思路: 取到DataFrame要替换的列 A ,对A进行列表搜索替换,将 A 转换为 DataFrame格式(要转置), 然后再替换到原来的DataFrame中 将列表(List)转换为数据框(Dataframe) 利用Pandas将List列表转换为Dataframe 如何替换Pandas.DataFrame上的整个列 tmp = []

程西西 3606

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

多维聚合实战:银行风控中的pandas高性能聚合工程

多维聚合是数据分析的核心能力,指在多个业务维度(如地区、客户等级、时间窗口)上同步执行统计计算,其本质是将复杂业务规则转化为可复现的数学操作。它依赖高效的数据分组、滚动计算与结果归一化机制,技术价值在于支撑实时风控、客户分层与监管合规等关键场景。区别于简单groupby,真正的多维聚合需兼顾计算性能、边界鲁棒性与业务可解释性,尤其在金融领域,一个参数误配可能导致反洗钱误报率上升0.7%。本文聚焦pandas中agg、rolling、unstack等核心方法在银行真实场景下的工业级用法,覆盖内存优化、Mult

weixin_30614109的博客 536

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python XLSX 模板引擎指南

Python XLSX 模板引擎指南 项目介绍 Python XLSX Template 是一个用于从已有的 .xlsx 模板生成新的 .xlsx 文件的 Python 库。此库简化了Excel文件的读写流程,通过模板化的结构使得处理Excel工作表更加直观高效。对于那些寻求在保留Excel中的格式和公式的同时插入数据的场景,它提供了理想的解决方案。 快速启动 首先,确保你的环境中安装了必要的依...

gitblog_00332的博客 647

批量替换工具

根据Excel的替换模板将,内容批零替换到文件里面并追加 实现批零替换和固定模板的配置输出

段福的个的博客 883

生产级多维聚合:pandas高性能分组计算实战指南

多维聚合是数据分析的核心能力,指在多个维度(如地区、产品、时间)上对数据进行分组并同步计算多种统计指标。其底层原理依赖向量化计算、哈希分组与Cython优化函数的协同执行,技术价值在于显著提升千万级数据的处理效率与结果一致性。典型应用场景包括银行风控中的客户分层、电商运营的滚动均值监控、金融监管报表的多指标交叉分析等。本文聚焦pandas中groupby+agg的高阶用法,深入解析批量聚合、安全自定义函数、业务对齐的时间窗口及多级索引重塑等关键实践,直击‘聚合结果不准’‘性能卡顿’‘上线后报错’等高频痛点。

dianqi0560的博客 418

Python Docx Template 文档自动化:从模板设计到批量生成完整指南

在数字化转型浪潮中,文档自动化已成为企业提升运营效率的关键环节。Python Docx Template作为一款创新的Word文档自动化工具,完美融合了Jinja2模板引擎的灵活性与Microsoft Word的丰富功能,为各类文档处理需求提供了高效解决方案。 ## 核心功能深度解析 ### 动态变量替换机制 Python Docx Template的核心优势在于其动态变量替换能力。通过在W

gitblog_00453的博客 1002

Python办公自动化:Excel合并、Word模板替换、PPT批量生成实战

办公自动化是提升工作效率的重要方向,核心理念是将固定模板、清晰规则与重复执行的工作交给程序完成。实际场景中,门店Excel报表合并、Word合同模板替换、PPT汇报页数据上版,这类固定步骤的任务最适合脚本化。借助Python生态的openpyxl、python-docx、python-pptx以及pandas,可以快速实现多文件读取、字段校验、批量输出。从环境准备到最小样例验证,从Excel合并汇总到Word占位符替换与PPT多页生成,内容覆盖办公自动化落地的主要环节。遵循小样本先行、输出抽检和异常排查的原

weixin_34095889的博客 354
上一篇: 你以为懂了?Python可迭代对象与迭代器的5个致命误区,现在避坑还来得及
下一篇: 【高并发系统必备技能】:Flask-SQLAlchemy事务嵌套与保存点实战详解
ByteChat
博客等级 码龄1年 157粉丝 1991原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值