吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 862|回复: 16
收起左侧

[学习记录] python从入门到刚入门-pandas

[复制链接]
sha1zhi1yu3 发表于 2024-11-20 16:58

2.常用Python数据分析开源库介绍

  • NumPy(Numerical Python)

    • 它是 Python 语言的一个扩展程序库。是一个运行速度非常快的数学库.
    • 主要用于数组计算
    • 包含:
    • 一个强大的N维数组对象 ndarray
    • 广播功能函数
    • 整合 C/C++/Fortran 代码的工具
    • 线性代数、傅里叶变换、随机数生成等功能
  • Pandas

    • Pandas是一个强大的分析结构化数据的工具集
    • 它的使用基础是Numpy(提供高性能的矩阵运算)
    • 用于数据挖掘和数据分析,同时也提供数据清洗功能
    • Pandas利器之 Series,是一种类似于一维数组的对象
    • Pandas利器之 DataFrame,是Pandas中的一个表格型的数据结构
  • Matplotlib

    • 它是一个功能强大的数据可视化开源Python库
    • Python中使用最多的图形绘图库
    • 可以创建静态, 动态和交互式的图表
  • Seaborn

    • 它是一个Python数据可视化开源库, 建立在matplotlib之上,并集成了pandas的数据结构
    • Seaborn通过更简洁的API来绘制信息更丰富,更具吸引力的图像
    • 面向数据集的API,与Pandas配合使用起来比直接使用Matplotlib更方便
  • Sklearn

    • scikit-learn 是基于 Python 语言的机器学习工具
    • 简单高效的数据挖掘和数据分析工具
    • 可供大家在各种环境中重复使用
    • 建立在 NumPy ,SciPy 和 matplotlib 上
  • jupyter notebook

    • 它不是开源库, 它是一个开源Web应用程序, 可以创建和共享代码、公式、可视化图表、笔记文档

    • 是数据分析学习和开发的首选开发环境, 作用如下:

    • 数据清理和转换

    • 数值模拟

    • 统计分析

    • 数据可视化

    • 机器学习等

      1.Numpy

1.1属性

  • Numpy简介

    • NumPy(Numerical Python)是Python数据分析必不可少的第三方库
    • NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身要高效
    • 本身是由C语言开发,NumPy被Python其它科学计算包作为基础包
  • 重要功能如下

    1. 高性能科学计算和数据分析的基础包
    2. ndarray,多维数组,具有矢量运算能力,快速、节省空间
    3. 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
    4. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
  • Numpy的属性

    NumPy的数组类被称作ndarray,通常被称作数组。

    <table>
    <tr>
    <td>.ndim</td><td>数组轴的个数</td>
    </tr>
    <tr>
    <td>.shape</td> <td>数组的维度</td>
    </tr>
    <td>.size</td><td>数组元素个数</td>
    <tr>
    <td>.dtype</td><td>数组元素类型</td>
    </tr>
    <tr>
    <td>.itemsize</td><td>数组每个元素的占用字节数</td>
    </tr>
    </table>
    > 数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排 m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性。

  • 函数写法

    #  shape, ndim, size属性 可以 函数写法 实现.
    # 格式: np.函数名(数组)
    print(f'数组的维度: {np.shape(arr)}')         # (3, 5)   3个元素(一维数组), 每个元素(一维数组)又有5个元素(值)
    print(f'数组轴的个数: {np.ndim(arr)}')        # 几维数组, 轴就是几,  2  
    print(f'数组元素个数: {np.size(arr)}')        # 15 
    print(f'数组类型: {type(arr)}')              # <class 'numpy.ndarray'>

1.2 创建Numpy对象-ndarry

  • ndarray介绍

    • NumPy数组是一个多维的数组对象(矩阵),称为ndarray(N-Dimensional Array)
    • 具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点
    • 注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。
  • 数组形式

    import numpy as np 
    arr1 = np.array([2, 3, 4])
    arr2 = np.array([1.1, 2.3, 3.5])
  • zeros() /ones()/empty()

    函数zeros创建一个全是0的数组,
    >
    > 函数ones创建一个全1的数组,
    >
    > 函数empty创建一个内容随机并且依赖于内存状态的数组。默认创建的数组类型(dtype)都是float64

    zero1 = np.zeros((3, 4))    # 3个一维数组, 每个长度为: 4
    print('数组zero1: ', zero1)
    
    ones1 = np.ones((2, 3, 4))  # 2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中
    print('数组one1: ', ones1)
    
    empty1 = np.empty((2, 3))
    print('数组empty1: ', empty1)
    
    print(zero1.dtype, ones1.dtype, empty1.dtype)
  • arange(), 类似 python 的 range() ,创建一个一维 ndarray 数组。

    np_arange = np.arange(10, 20, 5,dtype=int)   # 起始, 结束, 步长, 类型
    print("arange创建np_arange:", np_arange)
    print("arange创建np_arange的元素类型:", np_arange.dtype)
    print("arange创建np_arange的类型:", type(np_arange))
  • matrix()   or   mat(),  是 ndarray 的子类,只能生成 2 维的矩阵

    matrix类型是 ndarray类型的 子类型.

    x1 = np.mat("1 2;3 4")
    print(x1)
    x2 = np.matrix("1,2;3,4")
    print(x2)
    x3 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
    print(x3)
  • 创建随机数矩阵

    • random.rand()    生成指定维度大小 的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
    • random.randn() 生成正态分布
    • random.randint(size=(数据区间))  生成指定维度大小 的随机多维整型数据(二维), 可指定区间
    • random.uniform(size=(数据区间)) 生成指定维度大小 的随机多维浮点型数据(二维), 可以指定区间(1, 5)产生1到5之间均匀分布的样本值
    import numpy as np
    
    # 生成指定维度大小(3行4列)的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
    arr = np.random.rand(3, 4)
    print(arr)
    print(type(arr))
    
    # 生成指定维度大小(3行4列)的随机多维整型数据(二维), randint()可指定区间(-1, 5)
    arr = np.random.randint(-1, 5, size=(3, 4))
    print(arr)
    print(type(arr))
    
    #生成指定维度大小(3行4列)的随机多维浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
    arr = np.random.uniform(-1, 5, size=(3, 4))
    print(arr)
    print(type(arr))
  • ndarray的数据类型转换 astype() dtype属性

    np.zeros((3,4),dtype=np.float64)

    数组对象.astype(数据类型)

1.2.1 数列

与数学中的数列不一样  两个函数不能指定 公差和公比 输入 起始值和结束值 并指定数列中的数值个数

公共参数

​ endpoint=True 默认是True(即: 包括结束值)

​ (起始点,结束点,等比数列个数) [起始点,结束点]

  • 等比数列 logspace()

    logspace(起始点,结束点,等比数列个数,base=底数) 开始点和结束点是10的幂  [起始点,结束点]

    # np.logspace 等比数列, logspace中,开始点和结束点是10的幂
    # 我们让开始点为0,结束点为0,元素个数为10,看看输出结果。
    
    print(np.logspace(1,4,4)) # [   10.   100.  1000. 10000.]
    
    # 假如,我们想要改变基数,不让它以10为底数,我们可以改变base参数,将其设置为2
    print(np.logspace(1,4,4,base=2)) #[ 2.  4.  8. 16.
  • 等差数列

    np.linspace(起始点,结束点,数列个数)  [起始点,结束点]

    # np.linspace等差数列
    # np.linspace是用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数。
    # 第一个例子,用到三个参数,第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数。
    print(numpy.linspace(1,4,4)) # [1. 2. 3. 4.]

1.3 Numpy的内置函数

  • 基本函数
  # 基本函数如下
  np.ceil(): 向上最接近的整数,参数是 number 或 array
  np.floor(): 向下最接近的整数,参数是 number 或 array
  np.rint(): 四舍五入,参数是 number 或 array
  np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array
  np.multiply(): 元素相乘,参数是 number 或 array
  np.divide(): 元素相除,参数是 number 或 array
  np.abs():元素的绝对值,参数是 number 或 array
  np.where(condition, x, y): 三元运算符,x if condition else y
  # 注意: 需要注意multiply/divide 如果是两个ndarray进行运算 shape必须一致

  # 示例代码
  arr = np.random.randn(2, 3)
  print(arr)
  print(np.ceil(arr))
  print(np.floor(arr))
  print(np.rint(arr))
  print(np.isnan(arr))
  print(np.multiply(arr, arr))
  print(np.divide(arr, arr))
  print(np.where(arr > 0, 1, -1))
  • 统计函数

    np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array
    np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
    np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array
    np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
    np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array

  • 比较函数

    np.any(): 至少有一个元素满足指定条件,返回True
    np.all(): 所有的元素满足指定条件,返回True

    # 实例代码
    arr = np.random.randn(2, 3)
    print(arr)
    print(np.any(arr > 0))  # True
    print(np.all(arr > 0))  # False
  • 去重函数

    np.unique():找到唯一值并返回排序结果,类似于Python的set集合

    # np.unique():找到唯一值并返回排序结果,类似于Python的set集合
    
    # 实例代码
    arr = np.array([[1, 2, 1], [2, 3, 4]])
    print(arr)
    print(np.unique(arr)) # [1,3,4]
  • 排序函数

    np.sort()函数排序, 返回排序后的副本

    ndarray.sort(), 在原数据上进行修改

    arr = np.array([1, 2, 34, 5])
    print("原数组arr:", arr)
    
    # np.sort()函数排序, 返回排序后的副本
    sortarr1 = np.sort(arr)
    print("numpy.sort()函数排序后的数组:", sortarr1)
    
    # ndarray直接调用sort, 在原数据上进行修改
    arr.sort()
    print("数组.sort()方法排序:", arr)
1.3Numpy运算
  • 基本运算

    两个ndarray, 一个是arr_a  另一个是arr_b

    两个对象的 shape 必须完全一样 才能 + - * /

    计算方式是 对应位置进行 + - * /

    结果 的shape 不变

  • 矩阵运算

    必须完全满足下列条件 才可以使用对应寒素

    • 场景1 arr_a 行列数 = arr_b行列数 对应位置相乘

    np.multiply(a, b)

    • 场景2  A的列数 = B的行数  且 A的列数 != B的列数

    dot(arr_a,arr_b)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zyt8023 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

IDdongdong 发表于 2024-11-20 17:11
楼主加油
laotzudao0 发表于 2024-11-20 17:34
hntjb 发表于 2024-11-20 17:39
ziyezy 发表于 2024-11-20 17:40
楼主加油
wwzzs 发表于 2024-11-20 18:46
学习了,谢谢。。。
咸鱼土豆 发表于 2024-11-20 18:52
加油~~最近也在尝试读一些程序的源码 帮助很大
lxkroom 发表于 2024-11-20 19:01
Numpy的属性这里解析不太正常啊
D22832 发表于 2024-11-20 19:40
学习了学习了
zyt8023 发表于 2024-11-20 19:45
期待后续更新&#9996;&#65038;&#758;&#9593;&#41460;&#9593;&#758;&#9996;&#65038;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-5 06:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表