df+series+reset_index+sort_values

Pandas sort_values深度实战:避坑指南与性能优化 排序是数据分析中最基础却最易出错的操作之一,其本质涉及内存布局、算法稳定性、NaN语义、类型隐式转换等底层机制。理解`sort_values()`的执行原理,不仅能避免报表逻辑错误和回测失真,更能显著提升百万级数据处理效率。本文聚焦pandas中`sort_values()`的核心参数(如`kind`、`na_position`、`key`、`ignore_index`)在真实业务场景下的行为差异,结合浮点精度陷阱、多列复合排序、字符串Unicode排序、分布式环境兼容性等高频问题,提供可直接复用的工程化解 阅读详情

戴噶猴,我又来了。我发现我的基础知识真的有问题。。。本来我在总结apply呢,然后第一段代码就报错。遇到了一万次TypeError: sort_values() got an unexpected keyword argument 'by’这个报错后,终于忍不住总结一波了。恍然大悟,还请大佬们多多指教!
结合df和series和rename这篇一起看吧~

#!/usr/bin/env python
# -*- coding:utf8 -*-
# @TIME  :2018/11/3 16:23
# @Author:Yolanda
# @File  :temp8.py

#反击啊!少女


from pandas import DataFrame as DF
import pandas as pd
data=pd.DataFrame({'A':[1,2,3,4],'B':[5,6,6,8],'C':[9,9,9,12]})


def column_types_table(data):
    print('Number of each type of columns:')
    count_dtype = data.dtypes.value_counts().reset_index()#总表每一类别总数,以列为单位
    count_dtype.columns = ['name','total']
    print(count_dtype)

    print('\nNumber of unique classes in each columns:')
    for i in count_dtype['name'].values:
        print('Type: ',i)#计算每一列不同类型的个数

        print(type(data.select_dtypes(i).nunique()))#<class 'pandas.core.series.Series'>
        print(type(data.select_dtypes(i).nunique().reset_index(drop=True)))#<class 'pandas.core.series.Series'>。注意!!
        print(type(data.select_dtypes(i).nunique().reset_index()))#<class 'pandas.core.frame.DataFrame'>
        # reset_index()之后,series会强制转换为df,df还是df。
        # reset_index(drop=True)之后,series还是series,df还是df。

        # 第一种写法:series
        print(data.select_dtypes(i).nunique())
        # A    4
        # B    3
        # C    2
        # dtype: int64

        # 第二种写法:df,所以有默认列名
        print(data.select_dtypes(i).nunique().reset_index())
        #   index  0
        # 0     A  4
        # 1     B  3
        # 2     C  2

        # 第三种写法:series
        print(data.select_dtypes(i).nunique().reset_index(drop=True))
        # 0    4
        # 1    3
        # 2    2
        # dtype: int64

        # 第四种写法:df,修改默认列名0为nunique
        print(data.select_dtypes(i).nunique().reset_index().rename(columns={0:'NUNIQUE'}))
        #   index  NUNIQUE
        # 0     A        4
        # 1     B        3
        # 2     C        2

        # 第五种写法:series,rename没用,rename对于df才有用
        print(data.select_dtypes(i).nunique().reset_index(drop=True).rename(columns={0:'NUNIQUE'}))
        # 0    4
        # 1    3
        # 2    2
        # dtype: int64

        # 第六种写法:对于df,没有rename列名,那sort_values用法是sort_values(by=[0]),默认升序
        print(data.select_dtypes(i).nunique().reset_index().sort_values(by=[0],ascending=False))
        #   index  0
        # 0     A  4
        # 1     B  3
        # 2     C  2

        # 第七种写法:对于df,rename列名后,那sort_values用法是sort_values(by=['列名']),默认升序
        print(data.select_dtypes(i).nunique().reset_index().rename(columns={0:'NUNIQUE'}).sort_values(by=['NUNIQUE'],ascending=False))
        #   index  NUNIQUE
        # 0     A        4
        # 1     B        3
        # 2     C        2

        # 第八种写法:对于df,没有rename列名,那sort_values用法是sort_values(by=[0]),默认升序,可以最后再rename列名
        print(data.select_dtypes(i).nunique().reset_index().sort_values(by=[0], ascending=False).rename(columns={0: 'NUNIQUE'}))
        #   index  NUNIQUE
        # 0     A        4
        # 1     B        3
        # 2     C        2

        # 第九种写法:对于series,rename没用,那sort_values用法是sort_values(0),默认升序
        print(data.select_dtypes(i).nunique().reset_index(drop=True).rename(columns={0:'NUNIQUE'}).sort_values(0,ascending=False))
        # 0    4
        # 1    3
        # 2    2
        # dtype: int64

        # 第十种写法:等价于第八种写法,结尾再drop也没用
        print(data.select_dtypes(i).nunique().reset_index().sort_values(by=[0], ascending=False).rename(columns={0: 'NUNIQUE'}).reset_index(drop=True))
        #   index  NUNIQUE
        # 0     A        4
        # 1     B        3
        # 2     C        2

        # 第十一种写法:等价于第八种写法,只不过这么写可以不加重复index,因为加了drop=True就变成series了,没法放列名,而不加drop=True,可以加列名又不能去掉重复index。
        # 也就是不使用reset_index来转化为df,直接使用DF,不会多加index。apply(pd.Series.nunique, axis=0)的axis=0可以不加,默认按行,如果等于1,就是按列
        print(DF(data.select_dtypes(i).apply(pd.Series.nunique, axis=0)). \
              sort_values(by=[0], ascending=False).rename(columns={0: 'NUNIQUE'}))  # 按列0排序,没有给名字的时候,转化成df是自动命名01234
        #    NUNIQUE
        # A        4
        # B        3
        # C        2

        # 第十二种写法:等价于第十一种写法,直接使用DF,不会多加index。
        # nunique()等价于nunique(axis=0)等价于apply(pd.Series.nunique)等价于apply(pd.Series.nunique, axis=0),改成1就是按列。
        print(DF(data.select_dtypes(i).nunique()).sort_values(by=[0], ascending=False).rename(columns={0: 'NUNIQUE'}))
        #    NUNIQUE
        # A        4
        # B        3
        # C        2

column_types_table(data)

总结:
一、rename
1、 df,所以有默认列名,rename可用
2、 series,无默认列名,rename没用
二、apply
1、nunique()等价于nunique(axis=0)等价于apply(pd.Series.nunique)等价于apply(pd.Series.nunique, axis=0),改成1就是按列。
三、 sort_values
1、 对于df,没有rename列名,那sort_values用法是sort_values(by=[0]),默认升序,可以最后再rename列名
2、 对于df,rename列名后,那sort_values用法是sort_values(by=[‘列名’]),默认升序
3、 对于series,rename没用,那sort_values用法是sort_values(0),默认升序
四、 转换类型
1、 reset_index()之后,series会强制转换为df并多加了一列index,df还是df。
2、 reset_index(drop=True)之后,series还是series,df还是df。
3、 直接使用DF转换为df,不会多加index。from pandas import DataFrame as DF

Pandas Series和DataFrame本质解析:从报错到直觉的跨越 Series和DataFrame是Pandas最核心的数据结构,其设计远不止于‘表格’或‘一列数据’——Series本质是带标签的一维数组,运算默认按索引对齐;DataFrame则是共享索引的Series字典,行操作实为索引视图。理解这一物理结构,才能规避ValueError、SettingWithCopyWarning等高频报错,掌握.loc/.iloc差异、向量化计算与内存优化逻辑。技术价值在于建立可迁移的数据操作直觉:面对筛选、合并、分组等需求,能自主判断结构选型与方法路径。典型应用场景包括电商退货率 阅读详情

相关推荐

Pandas Series与DataFrame底层原理与高效实践

Series和DataFrame是Python数据分析的核心数据结构,其本质并非简单二维数组,而是具备索引对齐、类型系统和广播规则的智能表格引擎。理解其内存结构(values/index/dtype)与索引机制(如DatetimeIndex、MultiIndex),是掌握向量化运算、安全赋值(.loc)、分组聚合(groupby)及时间序列处理的前提。技术价值体现在毫秒级百万行统计、自动缺失值对齐、跨源数据融合等工程能力;典型应用场景包括电商销售分析、IoT时序对齐、金融风控特征工程等。本文深入Series

weixin_30876945的博客 361

pandas.DataFrame.reset_index()

pandas.DataFrame.reset_index() dataframe数据准备 import pandas as pd d={ "cat":[4,"mimi","fish"], "dog":[6,"wangcai","bone"], "monkey":[8,"king","banana"], "tiger":[2,"Simba","meat"] } i=["age","name","food"] df=pd.DataFrame(data=d,index=i) df

优快云_OWL的博客 878

Pandas Series与DataFrame底层原理与数据思维构建

Series和DataFrame是Python数据分析的基石概念,本质是带语义索引的一维与二维数据容器,而非简单语法结构。其核心在于‘值-标签’绑定、dtype驱动的操作约束、Index对齐机制三大原理,共同构成高效数据操作的底层契约。技术价值体现在:规避SettingWithCopyWarning等调试陷阱、实现跨工具(scikit-learn/Plotly)无缝集成、支撑千万级数据清洗与聚合性能优化。典型应用场景包括电商订单分析、时序传感器处理、多源业务日志融合等真实工程任务。本文聚焦于建立以shape

weixin_30475039的博客 514

Python 学习Pandas第三课

Python 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] Type "copyright", "credits" or "license" for more information. IPython 7.12.0 -- An enhanced Interactive Python. import pandas as pd import matplotlib.pyplot as plt import numpy.ra.

程志伟的博客 1088

Pandas数据分析入门:掌握Series、DataFrame与数据清洗全流程

数据分析工作中,表格数据是最常见的处理对象。面对Excel或CSV中的大量记录,如何高效整理与清洗,是每个数据分析师都要解决的基础问题。Pandas作为Python生态中最常用的结构化数据处理库,通过DataFrame和Series两个核心数据结构,把表格操作转化为可复用、可复现的代码流程。它基于NumPy构建,支持向量化计算,能快速完成数据读取、筛选、去重、排序、分组聚合等任务,比纯Python循环更高效,也比手工操作Excel更适合自动化处理。从CSV/Excel读取、缺失值与重复值处理、数据类型转换,

weixin_30542079的博客 345

Excel函数到Pandas映射指南:VLOOKUP、SUMIF、INDEX-MATCH等常用操作的等效实现

在数据分析工程实践中,Excel用户向Python迁移时最核心的障碍并非语法学习,而是引用范式转换——Excel依赖坐标驱动的被动计算(如VLOOKUP、SUMIF、INDEX-MATCH),而Pandas基于显式数据对象与向量化操作。理解二者底层差异(如精确匹配默认行为、空值处理逻辑、区域动态性)是实现正确映射的前提。技术价值在于将手工报表转化为可复现、可审计、可嵌入ETL流程的代码;典型应用场景包括财务对账、销售日报自动化、跨表主数据关联等。本文聚焦Excel高频函数在Pandas中的三种等效路径:ma

weixin_34050519的博客 498

sort_values() got an unexpected keyword argument ‘by‘

sort_values() got an unexpected keyword argument 'by'

qq_47597058的博客 4616

Pandas concat()深度解析:数据拼接的原理、陷阱与生产级实践

concat()是Pandas中实现DataFrame和Series集合级合并的核心函数,其本质是基于axis坐标系的内存内结构对齐操作,而非简单粘贴。它遵循集合论并集逻辑,区别于关系代数的merge连接;关键参数如axis、join、keys、ignore_index共同决定了索引拓扑重建、缺失值语义及数据血缘可追溯性。在日志追加、宽表构建、时序特征工程等高频场景中,错误使用易引发索引混乱、内存爆炸与NaN污染。掌握dtype兼容性校验、索引类型统一、sort=False列序控制等实操要点,是保障GB级数

快马扬鞭须努力! 369

sort_index() got an unexpected keyword argument ‘by‘

在学习《利用Python进行数据分析》一书时出现 TypeError: sort_index() got an unexpected keyword argument ‘by’ 问题原因分析:pandas模块更新了,对有些方法进行重写,参数发生改变。 解决方法:将sort_index()改为sort_values()即可。 ...

qq_43757900的博客 1万+

Synopsys工具链实战:如何用VCS、DC、ICC和Calibre跑通你的第一个数字IC设计项目?

本文详细介绍了如何使用Synopsys工具链(VCS、Design Compiler、ICC和Calibre)完成数字IC设计项目,从RTL代码到GDSII版图的全流程。涵盖环境配置、RTL设计验证、逻辑综合、物理实现及签核验证等关键步骤,帮助工程师掌握高效的数字IC设计流程。

weixin_42525005的博客 197

【keras】走近VGG16卷积神经网络

        VGG16是一个16层的卷积神经网络模型,输入数据的维度为224*224*3,即长宽均为224像素的RGB彩色图片,VGG16模型的权重由ImageNet训练而来。由于其具有简单实用的优点,因此,在图像分类和目标检测任务中得到了较为广泛的应用。 1.卷积神经网络的基本概念 1.1卷积         简单的将其理解为一种数学运算,具体的计算过程如下图所示:       ...

XYZ 1万+

求解 为什么sort_values() got an unexpected keyword argument ‘by‘

请问有大佬可以解决这个问题吗。想降序排列,代码是这样的。

m0_73778938的博客 1098

基于CubeMX与lwip的STM32轻量级HTTP服务器搭建及VSCode高效开发指南

本文详细介绍了如何在STM32单片机上,利用STM32CubeMX图形化配置工具和轻量级TCP/IP协议栈lwIP,快速搭建一个轻量级HTTP服务器。通过结合VSCode的高效代码编辑能力,提供了一套从硬件连接到动态网页交互(SSI/CGI)的完整开发指南,旨在为嵌入式设备提供零成本、跨平台的Web交互界面。

weixin_29163857的博客 582

Pandas reset_index()深度解析:索引重置的原理、陷阱与工程实践

在Pandas数据处理中,索引(Index)并非简单行号,而是参与计算、合并与对齐的核心坐标系统。reset_index()的本质是重建这一逻辑坐标系,其行为直接受原索引类型(如RangeIndex、DatetimeIndex、MultiIndex)、drop参数取值及上下游操作约束影响。该操作虽为O(n)时间复杂度,但会引发内存复制、缓存失效与链式赋值风险,尤其在千万级数据或机器学习pipeline中需审慎决策。典型应用场景包括groupby聚合后转列、merge前接口对齐、concat去重索引、时序建模

weixin_33924220的博客 362

DaVinci Developer中枚举类型变量的创建与实战应用

本文详细介绍了在DaVinci Developer中创建和使用枚举类型变量的方法与实战应用。通过智能温控系统的案例,阐述了枚举类型在嵌入式开发中的核心价值,包括提升代码可读性、类型安全性和维护便捷性。文章还提供了枚举类型在状态机实现和多模块协同中的高级应用技巧,以及调试与优化的实用建议。

ik678901234的博客 511

海康摄像头RTSP流延迟优化实战:从VLC到OpenCV的5种方案对比与性能调优

本文针对海康摄像头RTSP流的高延迟问题,深入剖析了延迟根源,并系统对比了从VLC、OpenCV到海康官方SDK、FFmpeg及硬件加速等五种主流方案的性能表现。重点分享了缓冲区设置、协议优化、多线程架构与硬件解码等实战调优技巧,旨在帮助开发者将视频流延迟从秒级优化至毫秒级,满足工业检测、安防监控等高实时性场景需求。

hh234的博客 806

Pandas DataFrame 常用方法全汇总(入门实操博文)

本文介绍了pandas数据分析中的核心方法,包括:数据预览(head/tail)、列选择(单列/多列)、布尔筛选(单条件/多条件)、匹配判断(isin/isna)、数值统计(sum/mean/describe等)、计数统计(count/value_counts)、重复值处理(duplicated/drop_duplicates)、随机抽样(sample)、数据排序(sort_index/sort_values/nlargest)等。通过完整代码示例演示了这些方法的实际应用,帮助数据分析新手快速掌握panda

yanweijie0317的专栏 346

Azure AI-102 认证全攻略: (二十八) 设置 Azure AI 服务 API

在本文中,您学习了如何通过 Azure 门户设置和管理 Azure AI 服务,以及如何通过编程方式访问这些服务。在这篇文章中,我们将深入探讨如何设置 Azure AI 服务,特别是如何通过 Azure API 来进行编程访问,以实现自动化和集成。通过本篇文章的学习,您不仅能够顺利完成 Azure AI-102 认证中的 API 配置和集成内容,还能高效地管理和优化 Azure AI 服务,构建稳定、可靠的 AI 应用。在成功设置并测试了 API 后,接下来要管理和维护您的 Azure AI 服务。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1447

Pandas核心:Series与DataFrame的语义化数据思维

DataFrame和Series是Pandas的数据核心抽象,不同于Excel的单元格定位或Python原生列表,它们以索引对齐、类型语义和向量化运算为基石,构建面向业务的数据处理范式。理解其索引即业务标识、运算自动对齐、NaN承载缺失语义等原理,是摆脱for循环和iloc硬编码的关键。这种设计赋予数据清洗、多表关联、时间序列分析和RFM分群等典型场景高效稳定的工程能力。本文聚焦Series作为单列原子操作单元、DataFrame作为多维关系组织框架的本质特性,结合电商、金融真实项目中的索引管理、缺失值语义

weixin_33695450的博客 537

Python爬虫博客:爬取碳排放交易数据——使用最新技术的完整实现

通过上述方法,我们可以构建一个高效的爬虫,爬取碳排放交易市场的数据并进行分析。这个项目不仅展示了如何处理静态和动态网页,还提供了如何存储数据、分析数据和可视化结果的技巧。随着爬虫技术的不断进步,我们可以进一步提升爬取效率和数据分析能力。如果你希望更深入了解如何进行数据挖掘和机器学习分析,可以尝试将碳排放数据与其他经济数据结合,利用机器学习模型进行趋势预测或决策支持。

2201_76125261的博客 352

《拉依达的嵌入式\驱动面试宝典》—计算机硬件篇(一)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 768

Pandas数据处理

本文主要汇总了读写CSV、Excel表,数据表的合并、拼接和分组聚合操作,数据值的缺失、数据的离散化、数据的抽样与重采样、数据的排序及去重和数据的聚合分析处理以及其他较常用函数的使用方法;并结合相关案例做了练习。但 Pandas 依旧有很多没有学到位,仍需要不断练习,进行项目实战才行。

星航夜空的帆舟 641

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Python 科学计算学习笔记】第九章 Pandas 统计分析基础 (上)

本文为本人学习Python科学计算第九章的笔记(上),介绍了Series与DataFrame的创建、属性(shape/dtype/index/values)、索引访问(loc/iloc、切片、布尔索引)、算术与函数运算、数据筛选(head/query/条件过滤)、重复行处理(duplicated/drop_duplicates)、缺失值处理(isnull/dropna/fillna/ffill/bfill)、数据替换、合并(merge内外左右连接、conc按轴拼接、join按行索引连接)并附上示例与练习题。

buzaijiu的博客 324

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

多级索引(MultiIndex)完全教程:Pandas Cookbook高级数据结构的深度解析

Pandas Cookbook是数据处理领域的实用指南,而多级索引(MultiIndex)作为Pandas中强大的高级数据结构,能够帮助用户轻松应对复杂的数据分析场景。本教程将带你全面掌握MultiIndex的创建、操作与应用技巧,让你的数据处理效率提升3倍! ## 什么是多级索引?为什么它如此重要? 多级索引,顾名思义就是拥有多个层级的索引结构,它允许我们在一个DataFrame或Serie

gitblog_00355的博客 863

深度学习工具包 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:分组和排序

grouping and sorting lambda是匿名函数,即不再使用def的形式,可以简化脚本,使结构不冗余何简洁 groupby() value_counts() agg():可以同时运行一堆不同的函数(max()、min()) reset_index():转回常规索引的方法 sort_values() sort_index():按照索引值排序 1.分组分析(groupwise analysis) reviews.groupby("points").points.count() review

weixin_45081871的博客 6766

Pandas入门

Pandas是Python中用于数据分析的核心库,提供Series和DataFrame两种主要数据结构。Series是一维带索引数组,支持多种数据类型和高效操作;DataFrame是二维表格结构,适合处理结构化数据。文章详细介绍了如何创建和使用这两种数据结构,包括参数说明和常用方法,如数据筛选、排序、缺失值处理等。Pandas还支持数据导入导出、分组统计等功能,是数据科学领域的必备工具。示例代码演示了基本操作,帮助用户快速上手数据处理和分析任务。

codezxhy的博客 1451
上一篇: 分开拼接,split and join
下一篇: 数据类型(类)转换
Yukyin
博客等级 码龄8年 106粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值