数据分析从入门到精通 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中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...