数据分析从入门到精通 1.numpy剑客修炼

news2024/11/19 22:49:22

会在某一瞬间突然明白,有些牢笼是自己给自己的

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 主从复制 初步认识

文章目录 定义拓扑拓扑定义单从拓扑多从拓扑树型拓扑 使用原理建立流程持续复制 定义 Redis主从复制技术的主要满足的需求是①数据恢复②负载均衡 ①数据恢复的理解:将数据同步到多个Redis服务器中,其中一个节点数据损毁,可通过复制其他节点…

Python | Leetcode Python题解之第77题组合

题目: 题解: class Solution:def combine(self, n: int, k: int) -> List[List[int]]:ans []path []def dfs(x):remain k - len(path)if not remain:ans.append(list(path))returnif n 1 - x > remain:dfs(x 1)path.append(x)dfs(x 1)path.…

【进程间通信】共享内存

文章目录 共享内存常用的接口指令利用命名管道实现同步机制总结 System V的IPC资源的生命周期都是随内核的。 共享内存 共享内存也是为了进程间进行通信的,因为进程间具有独立性,通信的本质是两个不同的进程看到同一份公共资源,所以共享内存…

MVC 过滤器

MVC 过滤器常用有4种 Action过滤器(IActionFilter) 》 行为过滤器Result过滤器 (IResultFilter)》 视图过滤器 或 结果过滤器Exception过滤器(IExceptionFilter)》 异常过滤器Authorization过滤器&#xf…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令,形式如下: # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

运用分支结构与循环结构写一个猜拳小游戏

下面我们运用平常所学的知识来写一个小游戏,这样能够加强我们学习的趣味性,并且能够更加的巩固我们所学的知识。 游戏代码: 直接放代码:(手势可以使用数字来代替,比如0对应石头,1对应剪刀&…

APB总线协议

一、概述 高级外围设备总线(APB)是高级微控制器总线架构(AMBA)总线层次结构的一部分,并为最小的功耗和降低接口复杂性进行了优化。AMBA APB应用于连接到任何低带宽且不需要流水线总线接口的高性能的外设。 二、APB总…

【氮化镓】GaN功率器件在转换器设计中的挑战

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

linux Shell编程之条件语句

条件测试操作 test命令 条件测试操作 Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。 t…

nginx--系统参数优化telenct

系统参数 在生产环境中,根据自己的需求在/etc/sysctl.conf来更改内核参数 net.ipv4.ip_nonlocal_bind 1 允许非本地IP地址socket监听 net.ipv4.ip_forward 1 开启IPv4转发 net.ipv4.tcp_timestamps 0 是否开启数据包时间戳 net.ipv4.tcp_tw_reuse 0 端⼝口复⽤…

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期,全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示,据文化和旅游部数据中心测算,全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%,而酒店作为一个高…

华为数据之道第三部分导读

目录 导读 第三部分 第7章 打造“数字孪生”的数据全量感知能力 “全量、无接触”的数据感知能力框架 数据感知能力的需求起源:数字孪生 数据感知能力架构 基于物理世界的“硬感知”能力 “硬感知”能力的分类 “硬感知”能力在华为的实践 基于数字世界的…

Apache SeaTunnel 4月回顾:明星贡献者与技术突破

各位热爱 SeaTunnel 的小伙伴们,SeaTunnel 社区 4 月份月报来啦!这里将记录 SeaTunnel 社区每月的重要更新,欢迎关注! 月度 Merge 之星 感谢以下小伙伴 4 月为 Apache SeaTunnel 做的精彩贡献(排名不分先后&#xff…

快速话术本(常用文本快速复制工具)EXE成品+软件源码

功能介绍 经常性需要重复性的输入几个不同的文本,来回复制很麻烦,这个小工具可以帮你解决,把要经常输入的文本添加进去,点击即可复制~ 链接:https://pan.baidu.com/s/14-U_9uzkvpCrpzBkQaDZeA?pwdu7ot 提取码&#…

详细介绍一下PointPillars算法的网络结构

PointPillars是一种用于3D目标检测的算法,它主要使用了点云数据和深度学习模型。 PointPillars算法的网络结构主要可以分为三个主要阶段: Pillar Feature Net(点云特征处理网络):此阶段的主要任务是将输入的点云数据转…

排序算法(Java版)

目录 1、直接插入排序2、希尔排序3、直接选择排序4、堆排序5、冒泡排序6、快速排序6.1 递归实现6.2 非递归实现 7、归并排序7.1 递归实现7.2 非递归实现 8、性能分析 今天我们学习一种算法:排序算法(本文的排序默认是从小到大顺序)&#xff0…

【mysql篇】执行delete删除大量数据后,磁盘未清空,为什么?

目录 迁移脚本删除数据以及备份数据 解决方法OPTIMIZE TABLE二进制日志按月生成数据 最近某个项目虽说用户量不大,但是,单表的数据量越来越大,mysql一般单表超过千万级别后,性能直线下降,所以利用shardingphere按月做了…

ISO14229 -1 UDS诊断服务记录-001:0x34\0x36\0x37\0x31\0x19\0x14服务报文格式介绍

目录 1、34服务-请求下载 1.1、诊断请求格式 1.2、正响应格式 1.3、负响应格式 1.4、工程应用分析 2、36服务-传输数据 2.1、请求报文格式 2.2、正响应格式 2.3、负响应NRC 3、37服务-退出传输 3.1、报文格式 3.2、正响应格式 3.3、负响应NRC 4、31服务-例程控制 …

从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习

jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…

Ubuntu22.04下安装kafka_2.11-0.10.1.0并运行简单实例

目录 一、版本信息 二、安装Kafka 1.将Kafka安装包移到下载目录中 2.下载Spark并确保hadoop用户对Spark目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1.启动Kafka 2.测试Kafka是否正常工作 一、版本信息 虚拟机产品:VMware Workstation 17 Pro 虚…