数据分析从入门到精通 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 np

arr = np.array([1,2,3,'four'])
print(arr)

     

import numpy as np

arr = 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 会尝试将结果存储在这个数组中,而不是创建一个新的数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/593244.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin: Expecting a ‘>‘

数组值为任意类型&#xff0c;声明报错: Kotlin: Expecting a > var anyArr1: Array<Any?> arrayOf("a", "b", "c", true, 34)原因是&#xff1a; // var anyArr1: Array<Any?> arrayOf("a", "b", "c…

概念解析 | 威胁建模与DREAD评估:构建安全的系统防线

注1:本文系"概念解析"系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:威胁建模和DREAD模型 概念解析 | 威胁建模与DREAD评估:构建安全的系统防线 What Is Threat Modeling? Definition, Process, Examples, and Best Practices - Spic…

蓝桥杯-路径之谜

题目描述 小明冒充X星球的骑士&#xff0c;进入了一个奇怪的城堡。城堡里面什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡的地面时n*n个方格。如下图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。可以横向或者纵向移动&#xff0c;但是不能斜着走&#x…

SpringBoot自定义定时任务

通常&#xff0c;在我们的项目中需要定时给前台发送一些提示性消息或者我们想要的定时信息&#xff0c;这个时候就需要使用定时任务来实现这一功能&#xff0c;实现也很简单&#xff0c;接下来具体来看看吧~ 简单定时任务 首先&#xff0c;你需要在你的启动类上加上开启定时任…

贪吃蛇(下)游戏的实现

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 个人主页&#xff1a;LaNzikinh-CSDN博客 文章目录 前言一.蛇和食物的打印二.游戏的运行逻辑三.结束游戏 &#xff08;善后工作&#xff09;四.游戏的测…

K8S-Dashboard安装并创建普通用户

参考&#xff1a;在centos stream 9上搭建k8s最新版本&#xff08;当前&#xff1a;v1.26.1&#xff09;集群环境 查找dashboard 对应的版本 https://github.com/kubernetes/dashboard/releases 下载 kubernetes-dashboard.yaml 使用的2.7.0 wget https://raw.githubuserconte…

mac安装虚拟机linux系统

需要下载的有&#xff1a;centos8镜像 , 虚拟器 VMware 软件包 , Termius 或者xshell 1. CentOS系统下载 linux系统一般有&#xff1a; CentOS、ubuntu、redhat&#xff0c;选择一种进行安装就可以 CentOS 2024 年开始停止维护和发布 CentOS8的下载与安装(windows下安装) 镜…

【网络安全产品】---应用防火墙(WAF)

what Web应用防火墙&#xff08;Web Application Firewall) WAF可对网站或者App的业务流量进行恶意特征识别及防护&#xff0c;在对流量清洗和过滤后&#xff0c;将正常、安全的流量返回给服务器&#xff0c;避免网站服务器被恶意入侵导致性能异常等问题&#xff0c;从而保障…

3.10设计模式——Template Method 模版方法模式(行为型)

意图 定义一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中&#xff0c;Template Method 使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 结构 AbstractClass&#xff08;抽象类&#xff09;定义抽象的原语操作&#xff0c;具体的子类将重定…

C++:set和map的介绍

目录 关联式容器 键值对 set介绍&#xff1a; set的模板参数列表 set的双向迭代器&#xff1a; insert的使用和set的特性&#xff1a; set的删除&#xff1a; set的find&#xff1a; lower_bound 、 upper_bound&#xff1a; multiset&#xff1a; map介绍&#xff…

C语言——指针的奥秘(1.0)

指针 一.内存和地址1.内存2.编址 二.指针变量和指针1.取地址操作符&#xff08;&&#xff09;2.指针变量和解引用操作符&#xff08;*&#xff09;1.指针变量2.拆解指针类型3.解引用操作符4.指针变量的大小 三.指针变量的类型和意义1.指针的解引用2.指针 - 整数3.void* 指针…

JVM笔记1--Java内存区域

1、运行时数据区域 从上图可以看出来&#xff0c;Java虚拟机运行时数据区域整体上可以分成5大块&#xff1a; 1.1、程序计数器 程序计数器是一块较小的内存空间。它可以看做当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里&#xff0c;字节码解释器工作时就是…

OpenAI下周将发布ChatGPT搜索引擎,挑战谷歌搜索!

目前&#xff0c;多方位消息证实&#xff0c;OpenAI将会在5月9日上午10点公布该消息&#xff0c;大约是北京时间周五的凌晨2点。 5月3日&#xff0c;前Mila研究员、麻省理工讲师Lior S爆料&#xff0c;根据OpenAI最新的SSL证书日志显示&#xff0c;已经创建了search.chatgpt.c…

Java集合排序

1. 集合排序API 1.1 集合排序概述 集合排序是指对一个集合中的元素按照特定规则进行重新排列&#xff0c;以使得集合中的元素按照预定义的顺序呈现。 在集合排序中&#xff0c;通常需要定义一个比较规则&#xff0c;这个比较规则用于决定集合中的元素在排序后的顺序。元素之间…

KIE基于图模型的关键信息抽取源码详解

1.数据集准备 下载数据集 https://download.openmmlab.com/mmocr/data/wildreceipt.tar WildReceiptOpenset 准备好 WildReceipt。 转换 WildReceipt 成 OpenSet 格式: # 你可以运行以下命令以获取更多可用参数: # python tools/dataset_converters/kie/closeset_to_opens…

程序的机器级表示——Intel x86 汇编讲解

往期地址&#xff1a; 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

java下乡扶贫志愿者招募管理系统springboot-vue

计算机技术在现代管理中的应用&#xff0c;使计算机成为人们应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题&#xff0c;提高效率。 技术栈 前端&#xff1a;vue.jsElementUI 开发工具&#xff1a;IDEA 或者eclipse都支持 编程语言: java 框架&#xff1…

c++ 红黑树学习及简单实现

1. 了解红黑树 1.1. 概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个节点增加一个存储位表示节点的颜色&#xff0c;可以是红色&#xff0c;或是黑色&#xff0c;通过对任何一条从根到叶子的路径上各个节点的着色方式进行限制&#xff0c;红黑树确保没有一条路…

Dockerfile镜像实例

目录 一、构建SSH镜像 1. 建立工作目录 2. 生成镜像 3. 启动容器并修改root密码 二、systemctl镜像 1. 建立工作目录 2. 生成镜像 3. 运行镜像容器 ​编辑 4. 测试容器systemct 三、Nginx镜像 1. 建立工作目录 2. 编写Dockerfile脚本 3. 编写run.sh启动脚本 4. …

IDEA启动Tomcat启动失败:jar包未部署【部署jar包】

IDEA启动Tomcat报错java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener&#xff1a;jar包未部署【部署jar包】 学习java&#xff0c;开始跟着教程的步伐学习maven下载jar包&#xff0c;tomcat启动项目&#xff0c;发现项目未启动成功也…