• Python高阶操作--数据分析的理解


    数据分析:

    什么是数据分析:
    1. 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
    2. 数据分析是用适当的方法对手机来的大量数据进行分析,帮助人们做出判断,以便来采取适当的行动
    数据分析实现流程:
    1. 提出问题
    2. 准备数据
    3. 分析数据
    4. 获得结论
    5. 成果可视化
    数据分析三剑客:
    1. numpy
    2. pandas
    3. malplotlib

    numpy:一维或者是一个多维的数组(低版本的列表)

    下载:pip install numpy
    导入: import numpy as np

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

    创建:
    1. 使用np.array()创建
    2. 使用plt创建
    3. 使用np的routines函数创建
    一维数组的创建:
    np.array([1,2,3,4,5,6])
    多维数组的创建
    np.array([[1,2,3,4],[5,6,7,8],[9,9,9,9]])
    
    数组和列表有什么区别:
    1. 数据中存储的数组元素的数据类型必须是统一的
    2. 数据类型是有优先级的:字符串>浮点型>整型
    读取外部图片加载:

    导入: from matplotlib.pyplot as plt

    使用:plt.imread('图片地址')

    展示:plt.imshow()

    属性:

    zeros():数组中元素全部是0

    ones():数组中元素全部是1

    linespace():

    arange():在什么范围内,可以设置步数

    random():随机

    常用属性:

    shape:显示的是一个维度数据,

    ndim:

    size:

    dtype:

    索引和切片

    索引操作和列表的索引操作同理

    切片:

    1. 切出前两行数据:arr[0:2]
    2. 切出前两列数据:arr[行,列]--arr[:,0:2]
    3. 切出前两行前两列:arr[0:2,0:2]
    4. 上下翻转:arr[::-1,:,:]
    变形:reshape

    将一维/多维数组进行改变一维/多维

    级联操作:concatenate

    是对numpy数组进行横向或者纵向的拼接、

    axis轴向的理解:

    ​ 0:代表列

    ​ 1:代表行

    匹配级联:级联的多个数组的形状是一样

    不匹配级联:

    1. 级联的多个数组的形状是不一样(但维度必须一样)
    2. 多个数组的行数一样就进行行级级联
    3. 多个数组的列数一样就进行列级级联
    常用的聚合操作

    sum,max,min,mean

    常用的数学函数
    • NumPy 提供了标准的三角函数:sin()、cos()、tan()
    • numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
      • 参数说明:
        • a: 数组
        • decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
    常用的统计函数
    • 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,即 sqrt(5/4) ,结果为 1.1180339887498949。
    • 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
    矩阵相关
    • NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个 的矩阵是一个由行(row)列(column)元素排列成的矩形阵列
    • matlib.empty() 函数返回一个新的矩阵,语法格式为:numpy.matlib.empty(shape, dtype),填充为随机数据
      • 参数介绍:
        • shape: 定义新矩阵形状的整数或整数元组
        • Dtype: 可选,数据类型
    • numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零。
      • numpy.matlib.eye(n, M,k, dtype)
        • n: 返回矩阵的行数
        • M: 返回矩阵的列数,默认为 n
        • k: 对角线的索引
        • dtype: 数据类型
    • numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。
    • 矩阵相乘
      • numpy.dot(a, b, out=None)
        • a : ndarray 数组
        • b : ndarray 数组
      • 第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
      • 线性代数基于矩阵的推导:

    pandas:

    • numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!

      import pandas as pd
      from pandas import Series,DataFrame
      import numpy as np
      
    Series:

    Series是一种类似与一维数组的对象,由下面两个部分组成:

    • values:一组数据(ndarray类型)
    • index:相关的数据索引标签
    创建:
    • 由列表或numpy数组创建
    • 由字典创建
    索引:
    1. 隐式索引:默认索引
    2. 显式索引:增强数据的可读性,使用index指定索引
    属性:

    shape:

    size:

    index:

    values:

    常见方法:

    head():取前几个

    tail():取后几个

    unique():

    isnull(),notnull():非空

    add(),sub(),mul(),div():

    Series的运算法则:

    做引一致的元素值进行算术运算,否则补空

    关于Series的空值(缺失值)过滤:

    ​ isnull,notnull:判断某些元素是否为空值NaN,然后使用布尔值充当索引进行二次计算

    DataFrame:

    DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

    • 行索引:index
    • 列索引:columns
    • 值:values

    DataFrame的创建

    • ndarray创建
    • 字典创建
    DataFrame(data=np.random.randint(0,100,size=(4,6)))
    
    dic = {
        'name':['张三','李四','王老五'],
        'salary':[10000,20000,15555]
    }
    df = DataFrame(data=dic,index=['a','b','c'])
    
    属性:
    1. values
    2. columns
    3. index
    4. shape
    索引:

    对列进行索引

    df['列名']:取出一列
    df[['列名1','列名2']]:取出多列
    

    对行进行索引

    df.loc['行名']:取出一行
    df.loc[['行名','行名']]:取出多行
    

    对元素进行索引

    df.iloc[行名,列名]:取出一个元素
    df.loc[['行名','行名'],'列名']:取出多个元素
    
    切片:

    对行进行切片

    df[0:2]
    

    对列进行切片

    df.iloc[:,0:2]
    
    汇总:
    时间类型的转换:pd.to_datetime(col)
    将某一列设置为行索引:df.set_index()
    df.info():
    • 返回df中一些原始信息
      • 数据的行数
      • 每一列元素的数据类型
      • 检测列中是否有缺失数据
    df['date'] = pd.to_datetime(df['date']):将data列中的字符串数据转换成时间序列的数据类型
    一组布尔值可以作为df的行索引,不可作为列索引
    shift(1):将Series的数据整体向下移动一位
  • 相关阅读:
    Spire.PDF
    C# 下载PDF文件(http与ftp)
    7、软件复用 软件技术系列文章
    15、博客飘叶效果 博客界面改造文章(202211)
    Windows 11 ISO原版镜像文件下载(2022年11月)
    公司管人 我的闪存
    Windows 10 ISO原版镜像文件下载(2022年11月)
    回收站管理器 开源研究系列文章
    2、编码规范 软件技术系列文章
    最值得收藏的 Web 开发资源荟萃
  • 原文地址:https://www.cnblogs.com/heyulong1214/p/12925275.html
Copyright © 2020-2023  润新知