python数据建模python_Python 数据建模总结和实战(共两万字)
前言:对于初学者来说,Python 是一个不错的语言,Python 语言简单易懂,而且有着丰富的数据库以及活跃的社区,对于大数据分析有很明显的帮助。学 Python 数据分析的,好好看我长篇文章。
Numpy
NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。Python 的一些主要软件包(如 scikit-learn、scipy、pandas 和 tensorflow)都以 NumPy 作为其架构的基础部分。除了能对数值数据进行切片(slice)和切块(dice)之外,使用 NumPy 还能为处理和调试上述库中的高级实例带来极大便利。
本节将介绍使用 NumPy 的一些主要常见方法,示例讲解如下。
创建、修改 array、shape 与 reshape 函数
>>> # 导入 numpy
>>> import numpy as np
>>> a = np.array([1, 2, 3])
>>> b = np.array([[1, 2, 3], [4, 5, 6]])
>>> a.dtype
int32
>>> b.shape
(2 3)
>>> 将 b 的第一行第一列的 5 改为 10
>>> b[1,1]=10
>>> b
array([[ 1, 2, 3],
[ 4, 10, 6]])
>>> b.reshape(3,2)
array([[ 1, 2],
[ 3, 4],
[10, 6]])
函数 shape 属性获得数组的大小,通过 dtype 获得元素的属性。如果你想对数组里的数值进行修改的话,直接赋值即可,注意下标是从 0 开始计的。
数组切片和选取
Numpy 的切片和 Python 列表完全一样。一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index、end_index、step),当只有一个“:”时,默认第三个参数 step=1。
如下图所示,以 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 为例:
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a * 10
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
>>> a[2:8:2]
array([2, 4, 6])
>>> a[3:5] = a[3:5] *10
>>> a
array([ 0, 1, 2, 30, 40, 5, 6, 7, 8, 9])
>>> import numpy as np
>>> # 二维
>>> b = np.array([[1,2,3],[4,5,6]])
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> b[:,1]
array([2, 5])
>>> b[:,0:2]
array([[1, 2],
[4, 5]])
数组的布尔值运用
布尔值也是 Python 中的一种数据类型,专门用来用于些逻辑判断。常用的布尔值分别有:~ 反、& 并、| 或 。
现在我们新建一个数组 a,现在取出其中元素值大于 3 且小于 6 的所有元素,并改为 0,其他为 1:
>>> a = np.arange(0,10,1)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.sum(a>5)
4
>>> np.sum(~(a>5))
6
>>> a[(a>3)&(a<6)] = 0
>>> a[~(a>3)&(a<6)] = 1
>>> a
array([1, 1, 1, 1, 1, 1, 6, 7, 8, 9])
axis 的应用
如下图所示,axis 实际上就是表示轴。对于一个二维空间,axis=1 代表横轴,axis=0 按照竖轴。
>>> a = np.array([[1,4],[3,2]])
>>> b = np.array([[5,6],[7,8]])
>>> concatenate 的将两个 Array 聚合起来
>>> np.concatenate((a,b),axis=0)
array([[1, 4],
[3, 2],
[5, 6],
[7, 8]])
>>> np.concatenate((a,b),axis=1)
array([[1, 4, 5, 6],
[3, 2, 7, 8]])
>>> 如果排序的时候,没有指定 axis,默认 axis=1
>>> np.sort(a)
array([[1, 4],
[2, 3]])
>>> np.sort(a, axis=0)
array([[1, 2],
[3, 4]])
>>> 如果需要运算,需要指定对应的 axis
>>> a.sum()
10
>>> a.sum(axis=0)
array([4, 6])
>>> a.sum(axis=1)
array([5, 5])
>>> 通过 ndim 查看 array 的维度
>>> a.ndim
2
数列的创建和算术运算
等比数列:logspace 中,开始点和结束点是 10 的幂,0 代表 10 的 0 次方,9 代表 10 的 9 次方。生成从 10 的 a 次方到 10 的 b 次方之间按对数等分的 n 个元素的行向量。
等差数列:linspace 是 linear space 的缩写,代表线性等分向量的含义。linspace() 通过指定 初始值、终值、元素个数 来创建等差数列的一维数组。注意:这个区间的端点可以任意的被排除在外。
通过 NumPy 可以自由地创建等差数组,同时也可以进行加、减、乘、除、求 n 次方和取余数。同时也可以进行加、减、乘、除、求 n 次方和取余数。
>>> # 在 100 和 1000 中生成 num=4 的等比序列
>>> np.logspace(2.0, 3.0, num=4)
array([ 100. , 215.443469 , 464.15888336, 1000. ])
>>> # endpoint=Falseb 表示 1000 不能在序列中
>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
array([100. , 177.827941 , 316.22776602, 562.34132519])
>>> # base=2.0 表示不再以 10 的幂,而是以 2 作为幂
>>> np.logspace(2.0, 3.0, num=4, base=2.0)
array([4. , 5.0396842 , 6.34960421, 8. ])
>>> a = np.linspace(1,10,5)
>>> b = np.linspace(10,1,5)
>>> a
array([ 1. , 3.25, 5.5 , 7.75, 10. ])
>>> b
array([10. , 7.75, 5.5 , 3.25, 1. ])
>>> np.add(a, b) #加法
array([11., 11., 11., 11., 11.])
>>> np.subtract(a, b) #减法
array([-9. , -4.5, 0. , 4.5, 9. ])
>>> np.multiply(a, b) #乘法
array([10. , 25.1875, 30.25 , 25.1875, 10. ])
>>> np.divide(a, b) #除法
array([ 0.1 , 0.41935484, 1. , 2.38461538, 10. ])
>>> np.power(a,b) #乘方
array([1.00000000e+00, 9.27034822e+03, 1.18030648e+04, 7.76659275e+02,
1.00000000e+01])
>>> np.remainder(a, b) #取余数
array([1. , 3.25, 0. , 1.25, 0. ])
重要 random 的函数
rand:根据给定维度生成 [0,1) 之间的数据,包含 0,不包含 1
randn:返回均值=0,标准差=1,具有标准正态分布
normal:normal 是正态分布,但可以修改均值和标准差,第一个是均值,第二个是标准差,还可以传入 size
randint:返回随机整数,范围区间为[low,high),包含 low,不包含 high
choice:从给定的区间生成相对应个随机数
>>> np.random.rand(3,4)
array([[0.00910588, 0.26719767, 0.96195156, 0.66325403],
[0.77108254, 0.73961889, 0.4332318 , 0.6130871 ],
[0.24454375, 0.96344155, 0.91942036, 0.16383334]])
>>>np.random.randn(3,4)
array([[0.31124855, 0.3970361 , 0.86046835, 0.36587692],
[0.94543601, 0.84770308, 0.13784751, 0.69106204],
[0.80672147, 0.78469807, 0.12474456, 0.38386812]])
>>> np.random.normal(5,1,size=(3, 4))
array([[5.05484712, 5.11948961, 4.74160469, 5.73573086],
[4.93939144, 6.52482878, 3.83668001, 6.62767368],
[4.74056406, 4.00017621, 6.32218076, 5.48900825]])
>>> np.random.randint(1, 10, 10)
array([3, 2, 6, 5, 7, 6, 6, 5, 1, 3])
>>> # 从给定的 0 到 3 中生成 3 个随机数
>>> np.random.choice(3,3)
array([2, 0, 2])
如果想每次都固定随机数,需要设置 seed 随机种子:
python数据建模python_Python 数据建模总结和实战(共两万字)相关推荐
- python核心教程百度云_Python核心技术与实战 共44讲 中文pdf高清版
人工智能时代下,Python毫无疑问是最热的编程语言.有人夸它功能强大还上手轻松,有人说它学习曲线不那么陡峭,但是更多的人,在推开Python的大门后却发现,Python入门容易但精通却不易,Pyth ...
- 数据 正则化 python_Python数据科学:正则化方法
接之前的线性回归文章,传送门如下. 上面这篇文章是利用方差膨胀因子,去诊断与减轻多重共线性对线性回归的影响. 需要人为介入(根据得到的方差膨胀值去判断),耗费过多的时间. 于是便有了正则化方法的出现, ...
- spss数据预处理步骤_数学建模准备必备的十个数据分析软件(数学建模从入门到精通)...
前几天咋们聊了很多关于数学建模的干货,比如怎么样去前期准备学习数学建模,又比如数学建模需要哪些疾病软件?再比如数学建模论文摘要写作技巧.昨天那篇更是直接把数学建模常用的思维导图.流程图软件全部统统介绍 ...
- 数据建模大数据就业挑战月薪30K
点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 本文大概 10624 字 读完共需 30 分钟 Tips 参与文末话题讨论,即有机会获得异步图书一本. 数据建模是对现实世界 ...
- 数据建模java_数据建模及常见分类算法
数据建模及常见分类算法 数据建模指的是对现实世界各类数据的抽象组织,建立一个适合的模型对数据进行处理.建模流程解读 建模数据的抽取,清洗和加工以及建模算法的训练和优化会涉及大量的计算机语言和技术.比如 ...
- 数据科学和数学建模_数据科学与国际象棋心理建模重叠
数据科学和数学建模 Chess and data science have a lot in common. Some seemingly surface-level parallels includ ...
- 数据仓库建模,数据治理
数据仓库建模,数据治理 现在数据源来自sap wms crm 财务共享平台 oa 网报等各个公司系统 公司各种系统相互关联,数据之间已经形成了错综复杂的关系模型,拥有500多张表,并在此基础上开发了2 ...
- R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能
R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录
- UML建模之数据建模
一.数据库模简介 二.数据建模元素 1.表(Table) 2.表索引(Table Index) 3.表触发器(Table Trigger) 4.表约束(Table Constraint) 5.视图(V ...
- 精算模型10 非参数模型0 精算数据、非参数建模的思路概述
精算模型10 非参数模型0 精算数据.非参数建模的目标概述 数据类型 完整数据 非完整数据 数据分析目标 这是精算模型的第十部分,精算的非参数统计模型,从这一部分开始我们讨论精算建模的统计方法.在讨论 ...
最新文章
- 循环x次输出java_Java9班第二次周测
- java设计模式4--建造者模式(Builder)
- 深度学习中batch_size、epoch和iteration的含义
- 小米4c手机显示无服务器,小米4c的出现让小米2S用户终于找到换手机的理由! _手机资讯...
- 一个分支强制替代另一个分支
- 吴恩达机器学习 -- 多变量线性回归
- Linux系统编程:fifo有名管道的使用
- 使用Eclipse调试Android Native Application---cocos2d-x + Eclipse + Android + ndk
- 7、编译安装LAMP之apache与PHP整合
- iQOO Neo6 SE什么时候发布 iQOO Neo6 SE配置如何
- 【动手撸深度学习】不吹不黑一份代码即可进Kaggle排行榜!
- fedora 19 安装中文语言包
- 二次开发—Ribbon界面
- liunx安装xfs包挂载大于16T的硬盘
- 软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇
- 会计信息质量可靠性的案例_会计信息可靠性的分析
- 思科CCNA第一本教材 第十一章 配置和测试网络 个人总结
- 【Spark】--SparkCore6
- 推荐一款简单易用线上引流测试工具:GoReplay
- 让机器认知中文实体 — 复旦大学知识工场发布中文实体识别与链接服务