当前位置: 首页 > news >正文

数据分析从入门到精通 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运行即可

        — 快捷键

                — 添加cella或者b

                — 删除cellx

                — 修改cell的模式:

                        — m:修改成markdown

                        — y:修改成code模式

                — 执行cell:shift+enter

                — tab:自动补全代码

                — 打开帮助文档:shift+tab

三、numpy数组三种神秘创建方式

1.numpy模块

        Numpy是Python语言中做科学计算的基础库,重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组(python中的列表)上执行的数值运算

2.numpy的创建

        ① 使用np.array()创建

        ② 使用plt创建

        ③ 使用nproutines函数创建

 ① 使用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)

      ③ 使用nproutines函数创建

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中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...