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的数据整体向下移动一位
原文地址:https://www.cnblogs.com/heyulong1214/p/12925275.html