数据分析从入门到精通 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 会尝试将结果存储在这个数组中,而不是创建一个新的数组。

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

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

相关文章

webpack5基础和配置

初步体验webpack打包 webpack是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 1.初始化最简单的一个目录文件&#xff…

以steamDB的好评排名为引 - 详解wilson评分算法

写在前面 中文互联网上缺少关于二项分布估计的知识,而对二项分布参数如何准确且合理的估计的技巧,实际上在商业数据分析领域用处极多。尤其是在互联网企业,算法排名的依据很大程度要依赖这个统计量。我试图抛砖引玉,以steamDB的评…

语言模型测试系列【7】

语言模型 文心一言星火认知大模型通义千问豆包360智脑百川大模型腾讯混元助手Kimi Chat商量C知道 今天看CSDN文章,看到了斐波那契数列这个有趣的数列计算,然后就在文心一言中对答了一波,给的答案很完整,而且给出来python的实现代…

WDW-10B微机控制电子万能试验机技术方案

一.设备外观照片: 项目简介: 微机控制电子式万能试验机是专门针对高等院校、各种金属、非金属科研厂家及国家级质检单位而设计的高端微机控制电子式万能试验机、计算机系统通过全数字控制器,经调速系统控制伺服电机转动&#xff…

证照之星是什么软件 证照之星哪个版本好用?证照之星支持哪些相机 证照之星XE免费版

许多人都需要使用证件照,为了满足这一需求,人们会使用照相机、手机、电脑等工具进行拍摄。除此之外,市面上还存在专门的证件照拍摄软件,比如证照之星。那么,各位小伙伴是否了解证照之星哪个版本好用,证照之…

嵌入式RTOS面试题目

用过哪些嵌入式操作系统?使⽤RTOS和裸机代码开发有什么区别(优缺点)? 之前的⼀个项⽬是采⽤裸机代码开发的,写起来还⾏,通过状态机来管理业务逻辑和各种外设。 但是随着外设的增加,任务之间的…

【WEB前端2024】简单几步制作web3d《萌宠星球》智体节点模板(2)

【WEB前端2024】简单几步制作web3d《萌宠星球》智体节点模板(2) 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体…

【优选算法】——Leetcode——611. 有效三角形的个数

目录 ​编辑 1.题目 2 .补充知识 3.解法⼀(暴⼒求解)(可能会超时): 算法思路: 算法代码: 4.解法⼆(排序双指针): 算法思路: 以输入: nums …

2024年5月12日(星期天)骑行海囗

2024年5月12日 (星期天)骑行海口,早8:30到9:00大观公园门口集合,9:30准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,西,南,北…

wangEditor富文本编辑器与layui图片上传

记录&#xff1a;js 显示默认的wangEditor富文本编辑器内容和图片 <style>body {background-color: #ffffff;}.layui-form-select dl{z-index:100000;} </style> <div class"layui-form layuimini-form"><div class"layui-form-item"…

MT3034 算术招亲

跟MT3033新的表达式类似&#xff0c;只多了一个括号合法性的判断 #include <bits/stdc.h> using namespace std; const int N 40; bool tag[N]; bool is_op(char c) {return c || c - || c * || c / || c ^; } int priority(char op) { // 优先级排序if (op ||…

数据结构-线性表-应用题-2.2-9

线性表&#xff08;a1,a2,a3,...,an&#xff09;中的元素递增有序且按顺序存储于计算机内。要求设计一个算法&#xff0c;用最少的时间在表中查找数值为x的元素&#xff0c;若找到&#xff0c;则将其与后继元素位置相交换&#xff0c;若找不到&#xff0c;则将其插入表中并使表…

钉钉开放平台创建企业内部H5微应用或者小程序

前言&#xff1a; 在当今企业数字化转型的浪潮中&#xff0c;创建企业内部H5微应用或小程序已成为提升工作效率和促进内部沟通的重要举措。发话不多说本文将介绍如何利用钉钉平台快速创建这些应用&#xff0c;让企业内部的工作更加便捷高效。 步骤 1.在浏览器打开链接…

618好物大放送:5大必买好物,抢购倒计时开始!

嘿&#xff0c;各位购物达人们&#xff0c;年度最燃购物盛宴618已经进入准备阶段&#xff0c;是不是已经开始摩拳擦掌&#xff0c;准备迎接这场消费的狂欢了呢&#xff1f;每年的这个时候&#xff0c;各大电商平台都会推出力度空前的优惠活动&#xff0c;从数码尖货到生活日用品…

Python运维-文本处理、系统和文件信息监控、外部命令

本节主要目录如下&#xff1a; 一、文本处理 1.1、Python编码解码 1.2、文件操作 1.3、读写配置文件 1.4、解析XML文件 二、系统信息监控 2.1、监控CPU信息 2.2、监控内存信息 2.3、监控磁盘信息 2.4、监控网络信息 2.5、获取进程信息 2.6、实例&#xff1a;常见的…

CentOS操作

1.如何修改主机名 方法一&#xff1a; 修改命令&#xff1a;hostnamectl set-hostname 主机名 查看命令&#xff1a;hostname 方法二和方法三都是永久改变主机名&#xff0c;需要密码验证 方法二 修改命令&#xff1a;nmcli general hostname 主机名 查看命令&#xff…

[图解]SysML和EA建模住宅安全系统-02

1 00:00:00,900 --> 00:00:02,690 这个就是一个块定义图了 2 00:00:03,790 --> 00:00:04,780 简称BDD 3 00:00:05,610 --> 00:00:08,070 实际上就是UML里面的类图 4 00:00:08,080 --> 00:00:09,950 和组件图的一个结合体 5 00:00:13,150 --> 00:00:14,690 我…

正点原子i.MX 93开发板,双核A55+M33+NPU,双路RS485FDCAN千兆网,异核/AI/工业开发!

正点原子i.MX 93开发板新品上市&#xff01;双核A55M33NPU&#xff0c;双路RS485&FDCAN&千兆网&#xff0c;异核/AI/工业开发&#xff01; NXP的i.MX系列是一系列面向多媒体和工业应用的ARM架构微处理器。从i.MX6U到i.MX93&#xff0c;这一系列经历了显著的发展&#x…

指代消解类方法梳理

概念&#xff1a; MLM&#xff1a;带遮罩的语言模型 NSP&#xff1a;单句预测&#xff0c;任务包括两个输入序列 SBO&#xff1a;分词边界目标 1.spanBERT&#xff0c;2019 spanBERT是对bert从分词到文本跨度的优化&#xff0c;主要有两方面的优化&#xff1a;&#xff08…

Stable Diffusion Ai绘画模型推荐:二次元Coriander_Mix v1大模型推荐

负tag嵌入式:EasyNegative,badhandv4 此模型经测试是写实偏3D的效果 画质灰暗的话请加&#xff1a;VAE840000 或者负tag&#xff1a;(watermark:2),(blurry:2),fat,paintings,sketches,(worst quality:2),(low quality:2),(normal quality:2),((monochrome)), ((grayscale))…
最新文章