数据分析day1

博客涉及Python和NumPy相关信息技术内容,但具体信息缺失。Python是常用的后端开发语言,NumPy是Python中用于科学计算的重要库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### 什么是数据分析
- 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
    - 使得数据的价值最大化
        - 分析用户的消费行为
            - 制定促销活动的方案
            - 制定促销时间和粒度
            - 计算用户的活跃度
            - 分析产品的回购力度
        - 分析广告点击率
            - 决定投放时间
            - 制定广告定向人群方案
            - 决定相关平台的投放
        - ......
- 数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动
    - 保险公司从大量赔付申请数据中判断哪些为骗保的可能
    - 支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
    - 短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频

### 为什么学习数据分析
- 有岗位的需求
    - 数据竞赛平台
- 是Python数据科学的基础
- 是机器学习课程的基础

### 数据分析实现流程
- 提出问题
- 准备数据
- 分析数据
- 获得结论
- 成果可视化

### 课程内容介绍
- 基础模块使用学习
- 项目实现
- 金融量化

### 开发环境介绍
- anaconda
    - 官网:https://www.anaconda.com/
    - 集成环境:集成好了数据分析和机器学习中所需要的全部环境
        - 注意:
            - 安装目录不可以有中文和特殊符号
- jupyter
    - jupyter就是anaconda提供的一个基于浏览器的可视化开发工具
- jupyter的基本使用
    - 启动:在终端中录入:jupyter notebook的指令,按下回车
    - 新建:
        - python3:anaconda中的一个源文件
        - cell有两种模式:
            - code:编写代码
            - markdown:编写笔记
    - 快捷键:
        - 添加cell:a或者b
        - 删除:x
        - 修改cell的模式:
            - m:修改成markdown模式
            - y:修改成code模式
        - 执行cell:
            - shift+enter
        - tab:自动补全
        - 代开帮助文档:shift+tab

# 数据分析三剑客
- numpy
- pandas(重点)
- matplotlib

### numpy模块
- NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。

#### numpy的创建
- 使用np.array()创建
- 使用plt创建
- 使用np的routines函数创建

- 使用array()创建一个一维数组

import numpy as np
arr = np.array([1,2,3])
arr

- 使用array()创建一个多维数组

arr = np.array([[1,2,3],[4,5,6]])
arr

- 数组和列表的区别是什么?
    - 数组中存储的数据元素类型必须是统一类型
    - 优先级:
        - 字符串 > 浮点型 > 整数

arr = np.array([1,2.2,3])
arr

- 将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响

import matplotlib.pyplot as plt
img_arr = plt.imread('./1.jpg')#返回的数组,数组中装载的就是图片内容
plt.imshow(img_arr)#将numpy数组进行可视化展示

img_arr = img_arr - 100 #将每一个数组元素都减去100
plt.imshow(img_arr)

- zero()
- ones()
- linespace()
- arange()
- random系列

np.ones(shape=(3,4))

np.linspace(0,100,num=20) #一维的等差数列数组

np.arange(10,50,step=2) #一维等差数列

np.random.randint(0,100,size=(5,3))

#### numpy的常用属性
- shape
- ndim
- size
- dtype

arr = np.random.randint(0,100,size=(5,6))
arr

arr.shape #返回的是数组的形状

arr.ndim #返回的是数组的维度

arr.size #返回数组元素的个数

arr.dtype #返回的是数组元素的类型

type(arr) #数组的数据类型

#### numpy的数据类型
- array(dtype=?):可以设定数据类型
- arr.dtype = '?':可以修改数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YznhiIYF-1606960956057)(attachment:image.png)]

arr = np.array([1,2,3])
arr.dtype

#创建一个数组,指定数组元素类型为int32
arr = np.array([1,2,3],dtype='int32')
arr.dtype

arr.dtype = 'uint8' #修改数组的元素类型

arr.dtype

#### numpy的索引和切片操作(重点)

- 索引操作和列表同理

arr = np.random.randint(1,100,size=(5,6))
arr

arr[1]  #取出了numpy数组中的下标为1的行数据

arr[[1,3,4]] #取出多行

- 切片操作
    - 切出前两列数据
    - 切出前两行数据
    - 切出前两行的前两列的数据
    - 数组数据翻转
    - 练习:将一张图片上下左右进行翻转操作
    - 练习:将图片进行指定区域的裁剪

#切出arr数组的前两行的数据
arr[0:2] #arr[行切片]

#切出arr数组中的前两列
arr[:,0:2] #arr[行切片,列切片]

#切出前两行的前两列的数据
arr[0:2,0:2]

arr

#将数组的行倒置
arr[::-1]

#将数组的列倒置
arr[:,::-1]

#所有元素倒置
arr[::-1,::-1]

#将一张图片进行左右翻转
img_arr = plt.imread('./1.jpg')
plt.imshow(img_arr)

img_arr.shape

plt.imshow(img_arr[:,::-1,:]) #img_arr[行,列,颜色]

#图片上下翻转
plt.imshow(img_arr[::-1,:,:])

#图片裁剪的功能
plt.imshow(img_arr[66:200,78:300,:])

#### 变形reshape

arr#是一个5行6列的二维数组

#将二维的数组变形成1维
arr_1 = arr.reshape((30,))

#将一维变形成多维
arr_1.reshape((6,5))

#### 级联操作
    - 将多个numpy数组进行横向或者纵向的拼接
- axis轴向的理解
    - 0:- 1:- 问题:
    - 级联的两个数组维度一样,但是行列个数不一样会如何?

np.concatenate((arr,arr),axis=1)

arr_3 = np.concatenate((img_arr,img_arr,img_arr),axis=0)
plt.imshow(arr_3)

#### 常用的聚合操作
- sum,max,min,mean

arr

arr.sum(axis=1)

arr.max(axis=1)

#### 常用的数学函数
- NumPy 提供了标准的三角函数:sin()、cos()、tan()
- numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
    - 参数说明:
        - a: 数组
        - decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置

np.sin(2.5)

np.around(3.84,2)

#### 常用的统计函数
- numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
- numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
- numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
- 标准差std():标准差是一组数据平均值分散程度的一种度量。
    - 公式:std = sqrt(mean((x - x.mean())**2))
    - 如果数组是 [1234],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949- 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
    

arr[1].std()

arr[1].var()

### 矩阵相关
- NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个 的矩阵是一个由行(row)列(column)元素排列成的矩形阵列。

- numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0#eye返回一个标准的单位矩阵
np.eye(6)

- 转置矩阵
    - .T

arr.T

- 矩阵相乘
    - numpy.dot(a, b, out=None) 
        - a : ndarray 数组
        - b : ndarray 数组
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVFyxlgg-1606960956059)(attachment:image.png)]
    - 第一个矩阵第一行的每个数字(21),各自乘以第二个矩阵第一列对应位置的数字(11),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
    - 线性代数基于矩阵的推导:
        - https://www.cnblogs.com/alantu2018/p/8528299.html

a1 = np.array([[2,1],[4,3]])
a2 = np.array([[1,2],[1,0]])

np.dot(a1,a2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值