Numpy&Pandas&Matploty

Numpy

矩阵计算操作

矩阵用空格隔开,不是逗号

可以直接通过下标索引(从0开始),第一个是行,第二个是列

可以通过切片遍历

# 导入包
import numpy as np
# 转换为矩阵
array = np.array([[1,2,3],[2,3,4]])
# 输出矩阵
print(array)
# 输出矩阵的维度(一维矩阵还是二维矩阵)
print(array.ndim)
# 输出矩阵的列数和行数
print(array.shape)
# 输出矩阵的大小(一共有多少元素)
print(array.size)
  • 定义一个矩阵

    • 自定义内容(np.array)

      array = np.array([[1,2,3],[2,3,4]])
      
    • 循环定义有序(np.arange(起点,终点,步长))

      # 起点,终点,步长
      # 一个参数,默认从0-n,步长1
      # 生成从 10 开始,20 结束,步长为 2 的有序矩阵
      a = np.arange(10,20,2)
      # 生成从 0 开始,12 结束,有序矩阵,定义为 3 行 4 列
      a = np.arange(12).reshape((3,4))
      
    • 随机矩阵(np.random.random(行数,列数))

      # 生成一个随机矩阵,定义为2行4列
      a = np.random.random((2,4))
      
  • 输出矩阵的维度(ndim)

    # 输出矩阵的维度(一维矩阵还是二维矩阵)
    print(array.ndim)
    
  • 输出矩阵的大小(行数和列数 shape)

    # 输出矩阵的列数和行数
    print(array.shape)
    
  • 输出矩阵包含的元素数(size)

    # 输出矩阵的大小(一共有多少元素)
    print(array.size)
    
  • 定义矩阵的数据类型(dtype)

    使用 dtype 参数定义矩阵的数据类型

    int64 int32 float62 float32

    位数越小,占空间越小,位数越多,占空间越多

    a = np.array([2,23,4],dtype=np.int)
    
  • 生成一个全0 全1矩阵(zeros、ones)

    # 生成全为 0 的 3 行 4 列的矩阵
    a = np.zeros((3,4))
    print(a)
    # 生成全为 1 的 3 行 4 列的矩阵
    a = np.ones((3,4))
    
  • 定义生成矩阵的大小(列数和行数 reshape((行数,列数))

    # 生成从 0 开始,12 结束,有序矩阵,定义为 3 行 4 列
    a = np.arange(12).reshape((3,4))
    
  • 基础运算

    • a+b(逐个相加)

    • a-b(逐个相减)

    • a*b(逐个相乘)

    • np.dot(a,b) 或 a.dot(b) (矩阵乘法)

    • a**3(a矩阵的3次方)

    • np.sin(a)(sin)

    • np.cos(a)(cos)

    • np.tan(a)(tan)

    • np.sum(a)(矩阵求和)

    • np.mean(a)(矩阵平均值)

    • np.max(a)(矩阵最大值)

    • np.min(a)(矩阵最小值)

    • np.median(a)(矩阵中位数)

    • np.cumsum(a)(矩阵前缀和)

    • np.diff(a)(矩阵相邻两数的差)

    • np.sort(a)(对矩阵进行排序,逐行排序)

    • np.min(a,axis=0)(每一列的最小值)

    • np.min(a,axis=1)(每一行的最小值)

      # 基础运算
      a = np.array([10,20,30,40])
      b = np.arange(4)
      
      print(a,b)
      print(a+b)
      print(a-b)
      print(b**3) # b矩阵的3次方 几次方用**几来运算
      # 求sin,cos,tan
      print(np.sin(a))
      print(np.cos(a))
      print(np.tan(a))
      # 求符合某个条件的数,返回一个01列表
      print(b<3)
      # 矩阵运算
      a = np.array([[1,1],
                  [0,1]])
      b = np.arange(4).reshape((2,2))
      print(a)
      print(b)
      # 逐个相乘,每个位置上对应相乘
      print(a*b)
      # 矩阵乘法
      print(np.dot(a,b))
      print(a.dot(b))
      
      # 生成一个随机矩阵,定义为2行4列
      a = np.random.random((2,4))
      print(a)
      # 矩阵的求和,平均值,最大值,最小值
      # sum,mean,min,max
      print(np.sum(a))
      print(np.mean(a))
      print(np.min(a))
      print(np.max(a))
      # 每一列的最小值
      print(np.min(a,axis=0))
      # 每一行的最小值
      print(np.min(a,axis=1))
      
  • 求符合某个条件的数,返回一个True/False列表

    # 返回b中小于3的列表
    print(b<3)
    
  • 求矩阵中最大值和最小的索引(下标) —— argmin,argmax

    a = np.arange(2,14).reshape((3,4))
    print(a)
    # 求矩阵中最大最小的索引(下标)
    # argmin,argmax
    print(np.argmin(a))
    print(np.argmax(a))
    
  • 矩阵行列转换(transpose和.T)

    # 对矩阵进行行列转换
    a = np.arange(3,15)
    print(np.transpose(a))
    print(a)
    print(a.T) # 行列转换
    
  • 将矩阵大于某一个数的和小于某一个数的数进行赋值(clip)

    # 将矩阵大于9的数变成9 小于5的数变成5
    print(np.clip(a,5,9))
    
  • 循环

    for row in a:
        print(row)
    for row in a.T:
        print(row)
    print(a.flatten())
    # flat是循环的迭代器
    # flatten返回的是一行列表
    for item in a.flat:
        print(item)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AxEJmDqN-1647536478792)(assets/image-20220313144713-6djae3m.png)]

  • 合并

    • 上下合并 np.vstack((a,b))

    • 左右合并 np.hstack((a,b))

    • 加维度,给每一个加一个【】 a[:,np.newaxis]

    • 维度合并

      # 合并array
      # 按行、列合并
      a = np.array([1,1,1])
      b = np.array([2,2,2])
      # 上下合并
      print(np.vstack((a,b)))
      c=np.vstack((a,b))
      # 左右合并
      print(np.hstack((a,b)))
      # 加维度,给每一个加一个【】
      print(a[:,np.newaxis])
      a = np.array([1,1,1])[:,np.newaxis]
      b = np.array([2,2,2])[:,np.newaxis]
      # 纵向合并
      c = np.concatenate((a,b,b,a))
      print(c)
      # 纵向合并 定义维度
      c = np.concatenate((a,b,b,a),axis=1)
      print(c)
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tRBlBRn9-1647536478794)(assets/image-20220313145048-4mj7blo.png)]

  • 分割

    • 平均分割

    • 不平均分割

      # numpy array 分割(纵向分割和横向分割)
      a = np.arange(12).reshape((3,4))
      print("a=")
      print(a)
      
      # 将a矩阵纵向平均分割为2块
      print(np.split(a,2,axis=1))
      
      # 横向平均分割3块
      print(np.split(a,3,axis=0))
      
      # 纵向不平均分割3块
      print(np.array_split(a,3,axis=1))
      
      # 纵向分割函数
      print(np.vsplit(a,3))
      # 横向分割函数
      print(np.hsplit(a,2))
      
  • 复制

    • 浅复制(随着发生改变)

    • 深复制(不随着发生改变)

       # numpy的复制,复制后是同时改变的,全局变量,相关联
      a = np.arange(4)
      print(a)
      b=a
      c=a
      d=b
      a[0]=11
      print(b)
      print(d)
      print(a)
      # 判断两个是否相等 a is b 写is就行了 返回true or false
      d[1:3]=[22,33] # 将下标1-(3-1)的值赋为22和33
      
      # 不关联的赋值
      b=a.copy()# deep copy 深度赋值
      print(b)
      a[0]=44
      print(b)
      print(a)
      

Pandas

导入所需库(numpy、pandas)和数据集(train)

# 导入库
# 将 numpy 和 pandas 导入并命名为np、pd
import numpy as np
import pandas as pd

数据类型介绍

  1. Series 是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引index)组成 索引在左边,值在右边。可以通过给index赋值,自定义索引
  2. DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。

导入导出数据

操作代码
相对路径导入 cvs 数据
names 参数 自定义列名
header 参数 是否隐藏原始列名(0隐藏,默认1)
index_col 参数 定义行索引名
encoding 参数 定义编码类型(GBK、utf-8)
df = pd.read_csv('train.csv')

df = pd.read_csv('train.csv', names=['列名1','列名2','列名3'],index_col='行索引名',header=0)
另存为 cvs 数据df.to_csv('表名.csv')




观察数据的操作

操作代码
查看数据的基本信息
每一列的非空值的个数、数据类型、文件大小
df.info
查看(数值型的列)描述性统计信息
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
df.describe()
查看数据的形状
行数、列数
df.shape
查看DataFrame数据的列名、其数据类型
返回一个Index
df.columns
查看DataFrame数据的行名、行索引名、行数
返回一个Index
df.index
查看数据的前 N 行
n 默认为 5
df.head()
查看数据的后 N 行
n 默认为 5
df.tail(N)
设置最多显示N列
设置最多显示N行

pd.options.display.max_columns=N
pd.options.display.max_rows=N
查询数据占用内存(B)df.memory_usage()
观察数据是否有空值
返回一个True/False序列
df.isnull()
查看某一列的值
查看一些列
df['列名']
df['列名1','列名2','列名3']
查询某些行某些列的值df.loc[[行名1,行名2,行名3],['列名1','列名2','列名3']]
隐藏一些列,查看其他列
隐藏一些行,查看其他行

df.drop(['列名1','列名2','列名3'],axis=1)
df.drop(['行名1','行名2','行名3'],axis=0)
设置单个筛选条件并查询
设置多个筛选条件并查询
df[df["列名"]判断条件]
df[(df["列名"]判断条件0)& (df["列名"]判断条件)]
列的最大值
列的最小值

列的总和
()内可以放入表达式,要求返回值是Series
max(df['列名'])
min(df['列名'])
df['列名'].sum()

操作数据的操作

操作代码
删除某一列
删除多个列
del df['列名']
del df['列名1','列名2','列名3'
重建行索引
drop 参数 是否保留原行索引,True不保留
df.reset_index(drop=True)
索引排序
axis 参数 1列0行
ascending 参数 True 升序 False 降序
df.sort_index(axis=1, ascending=False)
列索引降序排序
值排序
ascending 参数 True 升序 False 降序
多个列排序时,按先后顺序,前相等时,按后排序
df.sort_values(by=['列名', '列名'], ascending=False)
两列相加
一一对应相加,返回一列
df['列名'] + df['列名']
删除包含缺失值的 行
返回不包含缺失值的DataFrame
返回不包含缺失值的Series
how 参数 all 全部为空缺值的行才丢弃
axis 参数 0行1列 默认0
df.dropna()
df.dropna(how='all')
df.dropna(axis=1, how='all')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霖承科技 LinChance

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值