数据分析从入门到精通 1.numpy剑客修炼
会在某一瞬间突然明白,有些牢笼是自己给自己的
—— 24.5.5
一、数据分析秘笈介绍
1.什么是数据分析
是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律。使得数据的价值最大化
案例:
分析用户的消费行为
制定促销活动的方案
制定促销时间和粒康
计算用户的活跃度
分析产品的回购力度
分析广告点击率
决定投放时间
制定广告定向人群方案
决定相关平台的投放
……
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动案例:
保险公司从大量赔付申请数据中判断哪些为骗保的可能
支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频
2.为什么学习数据分析
① 有岗位的需求
② 数据竞赛平台。
③ 是Python数据科学的基础
④ 是机器学习课程的基础
3.数据分析实现流程
① 提出问题
② 准备数据
③ 分析数据
④ 获得结论
⑤ 成果可视化
4.内容介绍
① 基础模块使用学习
② 项目实现
③ 金融量化
5.数据分析三剑客
① numpy
② pandas⭐
③ matplotlib
二、修炼准备—环境搭建
1.开发环境介绍
—— anaconda
— 官网:https://www.anaconda.com/
— 集成环境:集成好了数据分析和机器学习种所需要的全部环境
— 注意:安装目录不可以有中文和特殊符号
—— jupyter
— jupyter是anaconda提供的一个基于浏览器的可视化开发工具
—— jupyter的基本使用
— 启动:
在终端中录入:jupyter notebook的指令,按下回车即可
— 新建:
— python3:anaconda中的一个源文件(在文件中写代码)
print("一切都会好的")
— cell有两种模式
— code:编写代码
— markdown:编写笔记
markdown — 编写笔记:### 笔记注释 用markdown运行即可
— 快捷键
— 添加cell:a或者b
— 删除cell:x
— 修改cell的模式:
— m:修改成markdown
— y:修改成code模式
— 执行cell:shift+enter
— tab:自动补全代码
— 打开帮助文档:shift+tab
三、numpy数组三种神秘创建方式
1.numpy模块
Numpy是Python语言中做科学计算的基础库,重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组(python中的列表)上执行的数值运算
2.numpy的创建
① 使用np.array()创建
② 使用plt创建
③ 使用np的routines函数创建
① 使用np.array()创建
使用array()创建一个一维数组
# numpy的创建 # 导入numpy包 import numpy as np# 使用array()创建一个一维数组 arr1 = np.array([1,2,3]) print(f"arr1 = {arr1}")
使用array()创建一个多维数组
# numpy的创建 # 导入numpy包 import numpy as np# 使用array()创建一个多维数组 arr2 = np.array([[1,2,3],[4,5,6]]) print(f"arr2={arr2}")
数组和列表的区别是什么
import numpy as nparr = np.array([1,2,3,'four']) print(arr)
![]()
import numpy as nparr = np.array([1,2,3,4.11]) print(arr)
数组中存储的数据元素类型必须是统一类型
优先级:
字符串 > 浮点型 > 整数
② 使用plt创建
改变数组元素的数值对图片的影响
需求:将外部的一张图片读取加载到numpy数组中,尝试改变数组元素的数值查看对原始图片的影响
import matplotlib.pyplot as plt img_arr = plt.imread('./1.jpg') plt.imshow(img_arr)
import matplotlib.pyplot as plt img_arr = plt.imread('./1.jpg') plt.imshow(img_arr) img_arr = img_arr-100 plt.imshow(img_arr)
③ 使用np的routines函数创建
import numpy as np# 三行四列的数组 np.ones(shape=(3,4)) print(np.ones(shape=(3,4)))# 一维的等差数列数组 np.linspace(0,100,num=20) print(np.linspace(0,100,num=20))# 等差数列 np.arange(10,50,step=2) print(np.arange(10, 50, step=2))# 0-100范围内五行三列的数组 np.random.randint(0,100,size=(5,3)) print(np.random.randint(0, 100, size=(5, 3)))
四、numpy爆破属性
numpy的常用属性
① shape:数组形状
② ndim:数组维度
③ size:数组元素个数
④ dtype:数组元素类型
import numpy as np# 数组元素0到100随机生成的五行六列的数组 arr = np.random.randint(0,100,size=(5,6)) print(f"arr={arr}") # 返回数组的形状 print(f"arr.shape={arr.shape}")# 返回数组的维度 print(f"arr.ndim={arr.ndim}")# 返回数组的元素个数 print(f"arr.size={arr.size}")# 返回数组元素的类型 print(f"arr.dtype={arr.dtype}")# 返回数组的数据类型 print(f"type(arr)={type(arr)}\n")# 修改数组的元素类型 arr = np.array([1,2,3]) print(f"arr={arr}") print(f"arr.dtype={arr.dtype}") arr=np.array([1,2,3],dtype='int64') print(f"arr.dtype={arr.dtype}") arr.dtype='uint8' print(f"arr.dtype={arr.dtype}")
五、numpy的索引和切片操作
1.索引操作和列表索引操作同理
# 索引操作 import numpy as np from matplotlib import pyplot as plt# 五行六列的数组 arr = np.random.randint(1,100,size=(5,6))# 打印数组 print(f"arr={arr}")# 通过索引取出numpy数组中下标为1的行数据 print(f"arr[0]={arr[0]}")# 通过索引取出numpy数组中的多行数据 print(f"arr[[1,2,4]]={arr[[1,2,4]]}")print(plt.imshow(img_arr[66:200, 78:200]))
2.切片操作
切出前两列数据
切出前两行数据
切出前两行的前两列的数据
数组数据翻转
练习:将一张图片上下左右进行翻转
操作练习:将图片进行指定区域的裁剪
# 切出arr数组的前两行的数据 print(f"arr[0:2]={arr[0:2]}") # arr行切片# 切出arr数组的前两列的数据 print(f"arr[:, 0:2]={arr[:, 0:2]}") # arr[行切片,列切片]# 切出arr数组前两行的前两列的数据 print(f"arr[0:2,0:2]={arr[0:2, 0:2]}")# 将数组的行倒置 print(f"arr[::-1]={arr[::-1]}")# 将数组的列倒置 print(f"arr[:,::-1]={arr[:,::-1]}")# 所有元素倒置 print(arr[::-1, ::-1])# 将一张图片进行左右翻转 img_arr = plt.imread('./我始终相信.jpg') print(f"img_arr.shape={img_arr.shape}") print(plt.imshow(img_arr)) print(plt.imshow(img_arr[:, ::-1, :]))# 将一张图片上下进行反转 print(plt.imshow(img_arr[::-1, :, :]))# 图片裁剪的功能 print(plt.imshow(img_arr[66:200, 78:200]))
六、统计&聚合&矩阵操作
1.变形操作reshape
# 变形操作reshape # 五行六列的二维数组 arr = np.random.randint(1,100,size=(5,6)) print(arr)# 将二维的数组变形成一维 print(f"arr.reshape((30,))={arr.reshape((30,))}")# 将一维数组变成多维的 print(f"arr.reshape((6, 5))={arr.reshape((6, 5))}")
2.级联操作
将多个numpy数组进行横向或者纵向的拼接
axis轴向的理解
—— 0:列,纵向
—— 1:行,横向
# 级联操作 # axis轴向的理解 print(f"arr : {arr}") print(f"arr列拼接为:{np.concatenate((arr,arr),axis=0)}") print(f"arr行拼接为:{np.concatenate((arr,arr),axis=1)}")
级联只能是同一维度数组操作
问题:
级联的两个数组维度一样,但是行列个数不一样会如何?
# 问题 arr1 = np.random.randint(1,100,size=(3,4)) arr2 = np.random.randint(1,100,size=(2,4)) print(f"arr1和arr2级联结果是:{np.concatenate((arr1,arr2),axis=1)}")
图片也可以进行横纵拼接
3.常用的聚合操作
①sum ②max ③min ④mean
4.常用的数学函数
NumPy提供了标准的三角函数:sin()、cos()、tan()
numpy.around(a,decimals)函数 返回指定数字的四舍五入值。参数说明:
a: 数组
decimals:舍入的小数位数。默认值为0。如果为负,整数将四舍五入到小数点左侧的位置5.常用的统计函数
numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
numpy.ptp():计算数组中元素最大值与最小值的差(最大值-最小值)。
numpy.median():函数用于计算数组a中元素的中位数(中值)标准差std():标准差是一组数据平均值分散程度的一种度量。
公式:std=sqrt(mean((x-x.mean())**2))。如果数组是 [1,2,3,4],则其平均值为 2.5。因此,差的平方是 (2.25,0.25,0.25,2.25),并且其平均值的平方根除以4,即std = sqrt(5/4),结果为 1.1180339887498949。
方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x-x.mean())**2)。换句话说,标准差是方差的平方根。
3.矩阵相关
NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个的矩阵是一个由行(row) 列(column)元素排列成的矩形阵列。
numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。① 单位矩阵
eye返回一个标准的单位矩阵
示例:
# 矩阵操作 # eye返回一个标准的单位矩阵 np.eye(9) print(f"np.eye(9)={np.eye(9)}")
② 转置矩阵
矩阵.T,返回矩阵的转置矩阵
示例:
# 矩阵.T,返回矩阵的转置矩阵 print(f"arr={arr}") print(f"arr.T={arr.T}")
③ 矩阵相乘
numpy.dot(a, b, out=None)
a:ndarray 数组
b:ndarray 数组示例:
# 矩阵相乘print(f"arr={arr}") print(f"arr.T={arr.T}") print(f"arr和arr.T的乘积是{np.dot(arr, arr.T, out=None)}")
在NumPy中,
np.dot
函数用于计算两个数组的点积(或矩阵乘法,如果它们是二维的)。out=None
是np.dot
函数的一个可选参数,用于指定输出数组。具体来说,
out=None
表示函数将分配一个新的数组来存储结果,并返回这个新数组。但如果你提供了一个数组作为out
参数的值,np.dot
会尝试将结果存储在这个数组中,而不是创建一个新的数组。
相关文章:

数据分析从入门到精通 1.numpy剑客修炼
会在某一瞬间突然明白,有些牢笼是自己给自己的 —— 24.5.5 一、数据分析秘笈介绍 1.什么是数据分析 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律。使得数据的价值最大化 案例: 分析用户的消…...

【iOS】KVO
文章目录 前言一、KVO使用1.基本使用2.context使用3.移除KVO通知的必要性4.KVO观察可变数组 二、代码调试探索1.KVO对属性观察2.中间类3.中间类的方法3.dealloc中移除观察者后,isa指向是谁,以及中间类是否会销毁?总结 三、KVO本质GNUStep窥探…...
python json字符串怎么用format方法填充参数值报KeyError
python json字符串怎么用format方法填充参数值报KeyError 需求问题分析解决方案 需求 因为python中的字典和json中的一些变量有差异,比如:json中有null、true,在python中就不会被识别,只能转换成字符串,在通过loads()…...

C++新手村指南:入门基础
目录 C概念 C发展史 C关键字(C98) 命名空间 命名空间的定义 命名空间的使用 C中的输入&&输出 缺省参数 缺省参数的概念 缺省参数的分类 函数重载 函数重载概念 函数重载实现 引用 引用的概念 引用的特性 常引用 引用的使用场景…...

智慧旅游推动旅游服务智慧化转型:借助智能科技的力量,实现旅游资源的精准匹配和高效利用,为游客提供更加便捷、舒适的旅游环境
目录 一、引言 二、智慧旅游的定义与特点 (一)智慧旅游的定义 (二)智慧旅游的特点 三、智能科技在旅游服务中的应用 (一)大数据分析助力旅游决策 (二)人工智能实现个性化推荐…...

Hikyuu-PF-银行股轮动交易策略实现
今天,带来的是“如何使用 Hikyuu 中的投资组合来实现银行股轮动交易策略”。 这个策略的逻辑很简单:持续持有两支市净率最低银行股,然后每月换仓 定义回测周期与回测标的 同样,首先定义回测周期: # 定义回测日期 …...

【氮化镓】GaN功率器件在转换器设计中的挑战
I. 引言(INTRODUCTION) 宽带隙(WBG)器件的重要性: 引言部分首先强调了宽带隙(WBG)器件在高频、高效率电力电子技术中的关键作用。这些器件,包括碳化硅(SiC)和氮化镓(GaN),相较于传统的硅功率器件,具有显著的优势。宽带隙半导体材料的高击穿场强允许设计更薄的漂…...

DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2,1306310-00-8,是一种重要的多肽化合物
一、试剂信息 名称:DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2CAS号:1306310-00-8结构式: 二、试剂内容 DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2是一种重要的多肽化合物,其CAS号为1306310-00-8。该多肽包含一个DO…...

CopyClip for Mac - 高效复制粘贴,轻松管理剪贴板
CopyClip for Mac,一款专为Mac用户打造的剪贴板管理工具,让你在复制粘贴的日常任务中,享受到前所未有的高效与便捷。 它常驻在菜单栏中,时刻准备为你服务。一旦你复制了内容,CopyClip就会自动将其保存至历史记录中&…...

[windows系统安装/重装系统][step-1]U盘启动盘制作,微软官方纯净系统镜像下载
前言 U盘至少8GB吧我这刚好有个空闲的U盘8GB容量,制作启动盘且放入一个最新win10官方镜像足够 不是天天装系统,至少USB2.0 (我用的2.0的一个闲置U盘)即可,当然平时传资料什么的3.0会快些 U盘启动盘仅需要制作一次, U盘启动盘制…...

AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析
注意,本文属于人脸关键点检测步骤的论文,虽然也在人脸对齐的范畴下。 1、介绍 在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。 首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,…...

Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测
论文地址 论文地址:https://www.mdpi.com/2227-7390/10/5/844#/ github:edosavini/TransferBertSarcasm (github.com) 论文首页 笔记框架 使用 BERT 进行中间任务迁移学习的讽刺检测 📅出版年份:2022 📖出版期刊:Mathematics &…...

docker系列9:容器卷挂载(下)
传送门 docker系列1:docker安装 docker系列2:阿里云镜像加速器 docker系列3:docker镜像基本命令 docker系列4:docker容器基本命令 docker系列5:docker安装nginx docker系列6:docker安装redis docker系…...

QT ERROR: Unknown module(s) in QT: xlsx怎么办
现象描述 QT编译c代码的时候,报这种QT ERROR: Unknown module(s) in QT: xlsx,应该如何解决? 这里,我简单记录一下自己的解决问题过程。有可能,对遇到同样的问题的你,也有所帮助 第一步 检查perl是否安装…...

npm install 卡在reify:rxjs: timing reifyNode的解决办法
今天要逆向跑一个electron,但是npm install一直卡在 reify:element-plus: timing reifyNode:node_modules/lodash Completed in 6664ms这里一动不动,一番研究之后发现可能跟用的镜像有关系,我原本是官方镜像,总感觉第三方镜像有一…...

VScode 无法连接云服务器
试了很多方法,比如更换VScode版本,卸载重装,删除配置文件 重启电脑,都无法成功。最后重置电脑后才连接上,但是重启服务器后又出现该问题。 方法一:修改环境 方法二:把vscode卸载干净重下...
Kafka 面试题(二)
1. 简述Kafka 的工作流程 ? Kafka的工作流程涉及多个关键组件和步骤,确保了消息的可靠传输和处理。以下是Kafka工作流程的简要概述: 生产者发布消息:生产者(Producer)是Kafka工作流程的起点,它…...

Spring Cloud Kubernetes 本地开发环境调试
一、Spring Cloud Kubernetes 本地开发环境调试 上面文章使用 Spring Cloud Kubernetes 在 k8s 环境中实现了服务注册发现、服务动态配置,但是需要放在 k8s 环境中才能正常使用,在本地开发环境中可能没有 k8s 环境,如何本地开发调试呢&#…...

基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................. % figure; % subplot(121);…...

设计模式——行为型模式——策略模式(含实际业务使用示例、可拷贝直接运行)
目录 策略模式 定义 组成和UML图 代码示例 实际业务场景下策略模式的使用 策略模式优缺点 使用场景 JDK中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...