50个Pandas高级操作,必读!

pandas 常用45个操作方法(详解) pandas 在数据分析中的常用操作,数据合并、级联、透视表,交叉表,多层索引,窗口函数、分箱、分组聚合、随机取样等等 阅读详情

来源丨网络

在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。


01、复杂查询

实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。

1、逻辑运算



Q1成绩大于36df.Q1> 36# Q1成绩不小于60分,并且是C组成员``~(df.Q1< 60) & (df[‘team’] == ‘C’)


  



2、逻辑筛选数据

切片([ ])、.loc[ ]和.iloc[ ]均支持上文所介绍的逻辑表达式。

以下是切片([ ])的逻辑筛选示例:



df[df[‘Q1’]== 8] # Q1等于8df[~(df['Q1']== 8)] # 不等于8df[df.name== ‘Ben’] # 姓名为Ben``df[df.Q1> df.Q2]


  



以下是.loc[ ]和.lic[ ]示例:



表达式与切片一致df.loc[df['Q1']> 90, 'Q1':] # Q1大于90,只显示Q1df.loc[(df.Q1> 80) & (df.Q2 < 15)] # and关系df.loc[(df.Q1> 90) | (df.Q2 < 90)] # or关系df.loc[df[‘Q1’]== 8] # 等于8df.loc[df.Q1== 8] # 等于8df.loc[df[‘Q1’]> 90, ‘Q1’:] # Q1大于90,显示Q1及其后所有列


  



3、函数筛选



查询最大索引的值df.Q1[lambdas: max(s.index)] # 值为21# 计算最大值max(df.Q1.index)# 99``df.Q1[df.index==99]


  



4、比较函数



以下相当于 df[df.Q1 == 60]df[df.Q1.eq(60)]df.ne() # 不等于 !=df.le() # 小于等于 <=df.lt() # 小于 <df.ge() # 大于等于 >=df.gt() # 大于 >




5、查询df.query()

df.query('Q1 > Q2 > 90') # 直接写类型SQL where语句

还支持使用@符引入变量

# 支持传入变量,如大于平均分40分的``a = df.Q1.mean()``df.query('Q1 > @a+40')```df.query('Q1 > `Q2`+@a')`


  



df.eval()与df.query()类似,也可以用于表达式筛选。

# df.eval()用法与df.query类似``df[df.eval("Q1 > 90 > Q3 >10")]``   ```df[df.eval("Q1 > `Q2`+@a")]`


  



6、筛选df.filter()

df.filter(items=['Q1', 'Q2']) # 选择两列``df.filter(regex='Q', axis=1) # 列名包含Q的列``df.filter(regex='e$', axis=1) # 以e结尾的列``df.filter(regex='1$', axis=0) # 正则,索引名以1结尾``df.filter(like='2', axis=0) # 索引中有2的``# 索引中以2开头、列名有Q的``   ``df.filter(regex='^2',axis=0).filter(like='Q', axis=1)


  



7、按数据类型查询

df.select_dtypes(include=['float64']) # 选择float64型数据``df.select_dtypes(include='bool')``df.select_dtypes(include=['number']) # 只取数字型``df.select_dtypes(exclude=['int']) # 排除int类型``df.select_dtypes(exclude=['datetime64'])


  



02、数据类型转换

在开始数据分析前,我们需要为数据分配好合适的类型,这样才能够高效地处理数据。不同的数据类型适用于不同的处理方法。

# 对所有字段指定统一类型``df = pd.DataFrame(data, dtype='float32')``# 对每个字段分别指定``df = pd.read_excel(data, dtype={'team':'string', 'Q1': 'int32'})

1、推断类型

# 自动转换合适的数据类型``df.infer_objects() # 推断后的DataFrame``df.infer_objects().dtypes


  



2、指定类型

# 按大体类型推定``m = ['1', 2, 3]``s = pd.to_numeric(s) # 转成数字``pd.to_datetime(m) # 转成时间``pd.to_timedelta(m) # 转成时间差``pd.to_datetime(m, errors='coerce') # 错误处理``pd.to_numeric(m, errors='ignore')``pd.to_numeric(m errors='coerce').fillna(0) # 兜底填充``pd.to_datetime(df[['year', 'month', 'day']])``# 组合成日期

3、类型转换astype()

df.Q1.astype('int32').dtypes``# dtype('int32')``df.astype({'Q1': 'int32','Q2':'int32'}).dtypes

4、转为时间类型

t = pd.Series(['20200801', '20200802'])

03、数据排序

数据排序是指按一定的顺序将数据重新排列,帮助使用者发现数据的变化趋势,同时提供一定的业务线索,还具有对数据纠错、分类等作用。

1、索引排序df.sort_index()

s.sort_index() # 升序排列``df.sort_index() # df也是按索引进行排序``df.team.sort_index()s.sort_index(ascending=False)# 降序排列``s.sort_index(inplace=True) # 排序后生效,改变原数据``# 索引重新0-(n-1)排,很有用,可以得到它的排序号``s.sort_index(ignore_index=True)``s.sort_index(na_position='first') # 空值在前,另'last'表示空值在后``s.sort_index(level=1) # 如果多层,排一级``s.sort_index(level=1, sort_remaining=False) #这层不排``# 行索引排序,表头排序``   ``df.sort_index(axis=1) # 会把列按列名顺序排列


  



2、数值排序sort_values()

df.Q1.sort_values()``df.sort_values('Q4')``df.sort_values(by=['team', 'name'],ascending=[True, False])


  



其他方法:

s.sort_values(ascending=False) # 降序``s.sort_values(inplace=True) # 修改生效``s.sort_values(na_position='first') # 空值在前``# df按指定字段排列``df.sort_values(by=['team'])``df.sort_values('Q1')``# 按多个字段,先排team,在同team内再看Q1``df.sort_values(by=['team', 'Q1'])``# 全降序``df.sort_values(by=['team', 'Q1'], ascending=False)``# 对应指定team升Q1降``df.sort_values(by=['team', 'Q1'],ascending=[True, False])``# 索引重新0-(n-1)排``df.sort_values('team', ignore_index=True)

3、混合排序

df.set_index('name', inplace=True) # 设置name为索引``df.index.names = ['s_name'] # 给索引起名``df.sort_values(by=['s_name', 'team']) # 排序

4、按值大小排序nsmallest()和nlargest()

s.nsmallest(3) # 最小的3个``s.nlargest(3) # 最大的3个``# 指定列``df.nlargest(3, 'Q1')``df.nlargest(5, ['Q1', 'Q2'])``df.nsmallest(5, ['Q1', 'Q2'])


  



04、添加修改

数据的修改、增加和删除在数据整理过程中时常发生。修改的情况一般是修改错误、格式转换,数据的类型修改等。

1、修改数值

df.iloc[0,0] # 查询值``# 'Liver'``df.iloc[0,0] = 'Lily' # 修改值``df.iloc[0,0] # 查看结果``# 'Lily'``   ``# 将小于60分的成绩修改为60``df[df.Q1 < 60] = 60``# 查看``df.Q1``   ``# 生成一个长度为100的列表``v = [1, 3, 5, 7, 9] * 20

2、替换数据

s.replace(0, 5) # 将列数据中的0换为5``df.replace(0, 5) # 将数据中的所有0换为5``df.replace([0, 1, 2, 3], 4) # 将0~3全换成4``df.replace([0, 1, 2, 3], [4, 3, 2, 1]) # 对应修改``s.replace([1, 2], method='bfill') # 向下填充``df.replace({0: 10, 1: 100}) # 字典对应修改``df.replace({'Q1': 0, 'Q2': 5}, 100) # 将指定字段的指定值修改为100``df.replace({'Q1': {0: 100, 4: 400}}) # 将指定列里的指定值替换为另一个指定的值
  

3、填充空值

df.fillna(0) # 将空值全修改为0``# {'backfill', 'bfill', 'pad', 'ffill',None}, 默认为None``df.fillna(method='ffill') # 将空值都修改为其前一个值``values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}``df.fillna(value=values) # 为各列填充不同的值``df.fillna(value=values, limit=1) # 只替换第一个


  



4、修改索引名

df.rename(columns={'team':'class'})

常用方法如下:

df.rename(columns={"Q1":"a", "Q2": "b"}) # 对表头进行修改``df.rename(index={0: "x", 1:"y", 2: "z"}) # 对索引进行修改``df.rename(index=str) # 对类型进行修改``df.rename(str.lower, axis='columns') # 传索引类型``df.rename({1: 2, 2: 4}, axis='index')``   ``# 对索引名进行修改``s.rename_axis("animal")``df.rename_axis("animal") # 默认是列索引``df.rename_axis("limbs",axis="columns") # 指定行索引``   ``# 索引为多层索引时可以将type修改为class``df.rename_axis(index={'type': 'class'})``   ``# 可以用set_axis进行设置修改``s.set_axis(['a', 'b', 'c'], axis=0)``df.set_axis(['I', 'II'], axis='columns')``df.set_axis(['i', 'ii'], axis='columns',inplace=True)

5、增加列

df['foo'] = 100 # 增加一列foo,所有值都是100``df['foo'] = df.Q1 + df.Q2 # 新列为两列相加``df['foo'] = df['Q1'] + df['Q2'] # 同上``# 把所有为数字的值加起来``df['total'] =df.select_dtypes(include=['int']).sum(1)df['total'] =``df.loc[:,'Q1':'Q4'].apply(lambda x: sum(x), axis='columns')``df.loc[:, 'Q10'] = '我是新来的' # 也可以``# 增加一列并赋值,不满足条件的为NaN``df.loc[df.num >= 60, '成绩'] = '合格'``df.loc[df.num < 60, '成绩'] = '不合格'

6、插入列df.insert()

# 在第三列的位置上插入新列total列,值为每行的总成绩``df.insert(2, 'total', df.sum(1))

7、指定列df.assign()

# 增加total列``df.assign(total=df.sum(1))``# 增加两列``df.assign(total=df.sum(1), Q=100)``df.assign(total=df.sum(1)).assign(Q=100)``其他使用示例:``df.assign(Q5=[100]*100) # 新增加一列Q5``df = df.assign(Q5=[100]*100) # 赋值生效``df.assign(Q6=df.Q2/df.Q1) # 计算并增加Q6``df.assign(Q7=lambda d: d.Q1 * 9 / 5 + 32) # 使用lambda# 添加一列,值为表达式结果:True或False``df.assign(tag=df.Q1>df.Q2)``# 比较计算,True为1,False为0``df.assign(tag=(df.Q1>df.Q2).astype(int))``# 映射文案``df.assign(tag=(df.Q1>60).map({True:'及格',False:'不及格'}))``# 增加多个``df.assign(Q8=lambda d: d.Q1*5,`          `Q9=lambda d: d.Q8+1) # Q8没有生效,不能直接用df.Q8

8、执行表达式df.eval()

# 传入求总分表达式``df.eval('total = Q1+Q3+Q3+Q4')``   

其他方法:

df['C1'] = df.eval('Q2 + Q3')``df.eval('C2 = Q2 + Q3') # 计算```a = df.Q1.mean()df.eval("C3 =`Q3`+@a") # 使用变量````df.eval("C3 = Q2 > (`Q3`+@a)") #加一个布尔值```df.eval('C4 = name + team', inplace=True) # 立即生效

9、增加行

# 新增索引为100的数据``df.loc[100] = ['tom', 'A', 88, 88, 88, 88]

其他方法:

df.loc[101]={'Q1':88,'Q2':99} # 指定列,无数据列值为NaN``df.loc[df.shape[0]+1] = {'Q1':88,'Q2':99} # 自动增加索引``df.loc[len(df)+1] = {'Q1':88,'Q2':99}``# 批量操作,可以使用迭代``rows = [[1,2],[3,4],[5,6]]``for row in rows:`    `df.loc[len(df)] = row

10、追加合并

df = pd.DataFrame([[1, 2], [3, 4]],columns=list('AB'))``df2 = pd.DataFrame([[5, 6], [7, 8]],columns=list('AB'))``   ``df.append(df2)


  



11、删除

# 删除索引为3的数据``s.pop(3)``# 93s``s

12、删除空值

df.dropna() # 一行中有一个缺失值就删除``df.dropna(axis='columns') # 只保留全有值的列``df.dropna(how='all') # 行或列全没值才删除``df.dropna(thresh=2) # 至少有两个空值时才删除``df.dropna(inplace=True) # 删除并使替换生效


  



05、高级过滤

介绍几个非常好用的复杂数据处理的数据过滤输出方法。

1、df.where()

# 数值大于70``df.where(df > 70)


  



2、np.where()

# 小于60分为不及格``np.where(df>=60, '合格', '不合格')


  



3、df.mask()

# 符合条件的为NaN``df.mask(s > 80)


  



4、df.lookup()

# 行列相同数量,返回一个array``df.lookup([1,3,4], ['Q1','Q2','Q3']) # array([36, 96, 61])``df.lookup([1], ['Q1']) # array([36])


  



06、数据迭代

1、迭代Series

# 迭代指定的列``for i in df.name:`      `print(i)``# 迭代索引和指定的两列``for i,n,q in zip(df.index, df.name,df.Q1):``print(i, n, q)


  



2、df.iterrows()

# 迭代,使用name、Q1数据``for index, row in df.iterrows():``print(index, row['name'], row.Q1)


  



3、df.itertuples()

for row in df.itertuples():``print(row)


  



4、df.items()

# Series取前三个``for label, ser in df.items():`    `print(label)``print(ser[:3], end='\n\n')


  



5、按列迭代

# 直接对DataFrame迭代``for column in df:``print(column)

07、函数应用

1、pipe()

应用在整个DataFrame或Series上。

# 对df多重应用多个函数``f(g(h(df), arg1=a), arg2=b, arg3=c)``# 用pipe可以把它们连接起来``(df.pipe(h)`    `.pipe(g, arg1=a)`    `.pipe(f, arg2=b, arg3=c)``   ``)


  



2、apply()

应用在DataFrame的行或列中,默认为列。

# 将name全部变为小写``df.name.apply(lambda x: x.lower())


  



3、applymap()

应用在DataFrame的每个元素中。

# 计算数据的长度``def mylen(x):`    `return len(str(x))``df.applymap(lambda x:mylen(x)) # 应用函数``df.applymap(mylen) # 效果同上


  



4、map()

应用在Series或DataFrame的一列的每个元素中。

df.team.map({'A':'一班', 'B':'二班','C':'三班', 'D':'四班',})# 枚举替换``df['name'].map(f)


  



5、agg()

# 每列的最大值``df.agg('max')``# 将所有列聚合产生sum和min两行``df.agg(['sum', 'min'])``# 序列多个聚合``df.agg({'Q1' : ['sum', 'min'], 'Q2' : ['min','max']})``# 分组后聚合``df.groupby('team').agg('max')``df.Q1.agg(['sum', 'mean'])

6、transform()

df.transform(lambda x: x*2) # 应用匿名函数``df.transform([np.sqrt, np.exp]) # 调用多个函数


  



7、copy()

s = pd.Series([1, 2], index=["a","b"])``s_1 = s``s_copy = s.copy()``s_1 is s # True``s_copy is s # False

以上就是“50个Pandas高级操作,必读!”的全部内容,希望对你有所帮助。
​
​关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至优快云官方,朋友如果需要可以直接微信扫描下方优快云官方认证二维码免费领取【保证100%免费】。

【50个Pandas高级操作】 实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。数据排序是指按一定的顺序将数据重新排列,帮助使用者发现数据的变化趋势,同时提供一定的业务线索,还具有对数据纠错、分类等作用。在开始数据分析前,我们需要为数据分配好合适的类型,这样才能够高效地处理数据。不同的数据类型适用于不同的处理方法。修改的情况一般是修改错误、格式转换,数据的类型修改等。切片([ ])、.loc[ ]和.iloc[ ]均支持上文所介绍的逻辑表达式。 阅读详情

相关推荐

python-13-pandas的常用操作和数据处理加速技巧

(1)获取数据 (2)数据处理:处理缺失数据,可视化 (3)特征工程 (4)算法训练:模型 (5)模型评估 (6)应用 from numpy import nan as NA 1 滤除缺失数据 SeriesNew = Series.dropna() SeriesNew = Series[Series.notnull()] DataFrameNew = DataFrame.dropna()删除含NA的行 DataFrameNew = DataFrame.dropna(how="all")删除全为NA的行 Da

qq_20466211的博客 2401

Pandas常用操作汇总(整理自用)

1. List转DataFrame # result是二维列表[[a,1],[b,2],[c,3]] data = pd.DataFrame(result) data.columns = ['col1', 'col2'] data 2. 计算相关系数 corr = round(data['time'].corr(data['money']), 4) 3. index重新 projects = projects.reset_index(drop=True) 4. 两个DataFrame根据

qq_42183184的博客 3742

SpringBoot集成MinIO依赖冲突问题

场景一: 使用minio8.3.0版本的依赖,报下列异常: An attempt was made to call a method that does not exist. The attempt was made from the following location: io.minio.S3Base.<clinit>(S3Base.java:105) The following method did not exist: okhttp3.Requ...

qq_39974348的博客 1万+

python - pandas 之 dataframe - 行列筛选/遍历/新增/删除/连接/合并/修改/跨表update

1.dataframe遍历或迭代 list1=[['B1','2019-12-01',3], ['B2','2019-12-01',8],['A1','2019-12-02',4],['A2','2019-12-09',5]] data=pd.DataFrame(list1,columns=('asin','date','qty')) (1)按行遍历iterrows() iterrows() 按行遍历,返回(index, Series)对,通过row[name]访问元素 ...

开码河粉 1万+

Jacobi正交多项式在数值分析中的应用与实现

本文深入探讨了Jacobi正交多项式在数值分析中的核心应用与实现。作为最通用的正交多项式族,Jacobi多项式通过参数α和β的调节,可退化为切比雪夫、勒让德等经典多项式,为函数逼近、奇异积分和微分方程求解提供了统一框架。文章重点解析了其在加权高斯积分(高斯-雅可比积分)和谱方法求解微分方程中的关键作用,并提供了基于递归关系和SciPy的稳定高效实现方案,帮助读者掌握这一强大的数值计算工具。

weixin_29306011的博客 245

直线型一阶倒立摆1---从理论到实践的桥梁

本文深入探讨了直线型一阶倒立摆在控制理论中的核心地位,从非线性控制、鲁棒性到实时反馈等关键问题。通过实际案例和硬件搭建指南,帮助读者理解从理论到实践的过渡,特别适合控制工程初学者和研究人员。文章还提供了算法选型建议和硬件避坑手册,是掌握倒立摆控制的实用指南。

weixin_29047545的博客 318

Pandas50个高级操作,必读!

来源:机器学习杂货店本文约4000字,建议阅读10分钟在Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。https://zhuanlan.zhihu.com/p/5682...

Python数据之道 202

如何更好的理解PFC(功率因数校正)

此电路虽然简单,可以在前期设计的无PFC功能的设备上,简单的增加一个合适的电感(适当的选取L和C的值),从而达到具有PFC的作用,但是这种简单的、低成本的无源PFC输出纹波较大,滤波电容两端的直流电压也较低,电流畸变的校正及功率因数补偿的能力都很差,而且L的绕制及铁芯的质量控制不好,会对图像及伴音产生严重的干扰,只能是对于前期无PFC设备使之能进入市场的临时措施。)在t4~t5期间尽管二极管左边电压在逐步上升,但是由于二极管右边的Uc放电缓慢右边的电压Uc仍旧大于左边,二极管仍旧反偏截止。

U_YAO的博客 949

【Python】Pandas50个高级操作,必读!

在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用01、复杂查询 实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。1、逻辑运算# Q1成绩大于36 df.Q1> 36...

fengdu78的博客 201

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

【AHE数据集】历史/未来全球网格热排放数据 PF-AHF

AHE数据集

WW、forever的博客 127

Pandas 50个高级、高频操作,必读!

转自:https://zhuanlan.zhihu.com/p/568250201在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。01、复杂查询实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可...

cainiao_python的博客 109

计算机视觉与深度学习 | 基于Matlab的多特征融合可视化指纹识别系统(附完整代码)

此系统展示了一个完整的指纹识别流程,实际应用中可以根据需求进一步优化算法,如改进方向场计算、增加脊线频率特征、使用更精确的匹配算法等。

尘世冰封的专栏 361

最强数据分析神器,Pandas !精选50个高级操作,必读!

在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。

2401_86168842的博客 869

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6666

深度学习工具包 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")

Pandas50个高级操作,秀起来!

今天给大家分享一篇Pandas高级操作汇总。在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用。实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。切片([ ])、.loc[ ]和.iloc[ ]均支持上文所介绍的逻辑表达式。以下是.loc[ ]和.lic[ ]示例:​​​​​​​。

2401_86168842的博客 1395

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

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

50 个 Pandas 高级操作,建议收藏!

↓推荐关注↓转自:https://zhuanlan.zhihu.com/p/568250201在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。

AI大模型资料分享员 1884

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

50个Pandas高级操作,建议收藏!

在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能,随心所欲地取用数据。

2401_86168842的博客 1209

50个pandas高频操作汇总

重点,敲黑板了 首先,本文遵循,传统教学,点到为止!只介绍个人使用比较频繁的一些函数或处理方式。 本文的示例只是演示所用,示例一般是不修改原数据的,如果代码会修改原数据会标明(在原数据上进行修改),自己使用时一定要注意是否修改了原数据。一旦报错,首先检查自己的代码是否改变了原数据。 # 未修改原数据 df.drop('name', axis = 1) # 修改原数据 df.drop('name', axis = 1, inplace=True) # 修改原数据 df = df.drop('na.

向日葵的专属太阳 8583
上一篇: Python代码文件不只是“.py”
下一篇: 这几个Python库已经淘汰了,请不要再用了!
壹只小小码农
博客等级 码龄5年 8101粉丝 1334原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值