pandas&numpy 数据处理~~两万字超全(上)

简介: pandas&numpy 数据处理~~两万字超全(上)

numpy


1. numpy属性

  1. 判断矩阵维度:array.ndim
  2. 判断矩阵形状:array.shape
  3. 判断矩阵元素个数:array.size
#导入numpy
import numpy as np
#创建矩阵
array = np.array([[1,2,3],
                  [3,4,5],
                  [2,3,4]
])
print(array)
    输出:
    [[1 2 3]
     [3 4 5]
     [2 3 4]]
# 几维数组
print('number of dim',array.ndim)     # number of dim 2
# 形状,几行几列数组
print('shape',array.shape)            # shape (3, 3)
# size,一共有一个元素
print('size',array.size)              # size 9


2. 创建array

  1. 创建一维序列:a = np.array([1,2,3,4])
  2. 创建二位矩阵:a = np.array([[1,2,3], [2,3,4]])
  3. 创建随机矩阵:a = np.random.random((3,4))——(3,4)表示3行4列矩阵
  4. 创建一个全部为0 的矩阵:a = np.zeros((3,4),dtype = np.int32)——(3,4)表示3行4列矩阵;dtype设置类型
  5. 创建一个全部为 1 的矩阵:a = np.ones((3,4),dtype = np.int16)
  6. 创建一个全部为 empty 的矩阵:a = np.empty((3,4))
  7. 生成一个有序序列:a = np.arange(12).reshape((3,4))——arange(12)表示0-11的数字,reshape()括号里填写几行几列
  8. 数据区间被分成线段:a = np.linspace(1,10,6).reshape(2,3)——1-10的序列,被分为6段,reshape()定义几行几列
import numpy as np
# 1. 创建一维序列
a = np.array([1,2,3,4],dtype = np.int64)   #dtype  用于查看类型,默认int32,
print(a, a.dtype)       # 输出:[1 2 3 4] int64
print(a.shape)          # 输出:(4,)  ——表示序列,不是矩阵
# 2. 创建二维矩阵
a = np.array([[1,2,3],
             [2,3,4]])
print(a)
    输出:
    [[1 2 3]
     [2 3 4]]
# 3. 创建一个随机生成的矩阵
a = np.random.random((3,4))    #括号内指定行列数即可
print(a)
    输出:
    [[0.96913245 0.42265093 0.62387946 0.83842189]
     [0.00910311 0.31142922 0.74050868 0.67094311]
     [0.79450196 0.63776097 0.3371271  0.16052966]]
# 4. 创建一个全部为0 的矩阵
a = np.zeros((3,4),dtype = np.int32)   # 括号里输入几行几列
print(a)
    输出:
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
# 5. 创建一个全部为 1 的矩阵
a = np.ones((3,4),dtype = np.int16)   # 括号里输入几行几列
print(a)
    输出:
    [[1 1 1 1]
     [1 1 1 1]
     [1 1 1 1]]
# 6. 创建一个全部为 empty 的矩阵
a = np.empty((3,4))   # 括号里输入几行几列,类型为float
print(a)  
    输出:
    [[0. 0. 0. 0.]
     [0. 0. 0. 0.]
     [0. 0. 0. 0.]]
# 7. 生成一个有序序列
a = np.arange(12).reshape((3,4))   #reshape()  确定几行几列
print(a)
    输出:
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
# 8. 一个数据区间被分成线段
a = np.linspace(1,10,6).reshape(2,3)   #1-10的序列,被分为5段,reshape()定义几行几列
print(a,a.dtype)
    输出:
    [[ 1.   2.8  4.6]
     [ 6.4  8.2 10. ]] float64


3. numpy基础运算


3.1 一维序列运算

  1. 加法:c=a+b
  2. 减法:c=a-b
  3. 乘法:c=a**b(平方)
# 定义2个一维序列
a = np.array([10,20,30,40])
b = np.arange(4)
print(a)
print(b)
    输出:
    [10 20 30 40]
    [0 1 2 3]
# 1. 减法
c= a-b
print(c)
    输出:[10 19 28 37]
# 2. 加法
d = a+b
print(d)
    输出:[10 21 32 43]
# 3. 乘法
e = b**2   #  **代表平方
f =10*np.sin(a)    # 调用numpy中sin函数
g = a*b   # 对应相乘
print(e)
print(f)
print(g)
    输出:
    [0 1 4 9]
    [-5.44021111  9.12945251 -9.88031624  7.4511316 ]
    [  0  20  60 120]
# 4. 判断矩阵中元素的大小
print(b)
print(b<3)    # 矩阵b中元素是否小于3
print(b==3)   # 矩阵b中元素是否小于3
    输出:
    [0 1 2 3]
    [ True  True  True False]
    [False False False  True]


3.2 二维矩阵运算

  1. 矩阵乘法:
    c = a*b;逐个相乘,要求矩阵维度必须相同,2行2列与3行2列无法相乘
    c_dot = np.dot(a,b)c_dot = a.dot(b);矩阵a与矩阵b相乘
#  定义两个矩阵
a = np.array([
    [0,1],
    [2,1]
])
b = np.arange(4).reshape((2,2))
print(a)
print(b)
    输出:
    [[0 1]
     [2 1]]
    [[0 1]
     [2 3]]
# 1. 矩阵乘法
c = a*b   #对应位置相乘   要求矩阵维度必须相同,2行2列与3行2列无法相乘
print(c)
    输出:
    [[0 1]
     [4 3]]
#矩阵相乘 - 1
c_dot = np.dot(a,b)    #表达方式1
print(c_dot)
    输出:
    [[2 3]
     [2 5]]
#矩阵相乘 - 2
c_dot_2 = a.dot(b)     # 表达方式2
print(c_dot_2)
    输出:
    [[2 3]
     [2 5]]


  1. 矩阵求和、求最大值、最小值
    ①求和:np.sum()
    ②最大值:np.max()
    ③最小值:np.min()


3、求每行或者每列中的sum、最大、最小值

指定行或列用axis,axis = 1,对行操作;axis = 0,对列操作;

①矩阵中每行元素求和:np.sum(a,axis=1)

②矩阵中每列元素求最大值:np.max(a,axis = 0
③矩阵中每行元素求最小值:np.min(a,axis = 1)

# 创建一个随机生成的矩阵
a = np.random.random((2,4))    #括号内指定行列数即可
# 1. 求和、最大值、最小值
print(a)
    输出:
    [[0.40596249 0.55513475 0.6697611  0.27219617]
     [0.21702995 0.78822072 0.74077249 0.45906168]]
print(np.sum(a))   #矩阵中所有元素求和
print(np.max(a))   #矩阵中所有元素的最大值
print(np.min(a))   #矩阵中所有元素的最小值
    输出:
    4.108139341201598
    0.7882207190918352
    0.2170299493607155
# 2. 求每行或者每列中的sum、最大、最小值
#定义axis,axis = 0,按照行求;axis = 0,按照列求
print(a)
    输出:
    [[0.40596249 0.55513475 0.6697611  0.27219617]
     [0.21702995 0.78822072 0.74077249 0.45906168]]
print(np.sum(a,axis = 1))   #矩阵中每行元素求和
print(np.max(a,axis = 0))   #矩阵中每列的最大值
print(np.min(a,axis = 1))   #矩阵中每行的最小值
    输出:
    [1.90305451 2.20508483]
    [0.40596249 0.78822072 0.74077249 0.45906168]
    [0.27219617 0.21702995]


  1. 求矩阵中元素的最大数最小数对应索引:
    ①最小值对应索引:np.argmin(A)
    ②最大值对应索引:np.argmax(A)
  2. 求所有元素的平均值:
    ①方法一:np.mean(A)
    ②方法二:A.mean()
    ③方法三:np.average(A)
  3. 求每行或者每列的平均值:np.mean(A,axis = 0 / 1)
    axis = 0——每一列的平均值;axis = 1——每一行的平均值
  4. 求所有元素的中位数:np.median(A)
  5. 求所有元素累加和:np.cumsum(A)
  6. 累差:np.diff(A)
  7. 非零数的位置:np.nonzero(A)
A = np.arange(2,14).reshape((3,4))
print(A)
    输出:
    [[ 2  3  4  5]
     [ 6  7  8  9]
     [10 11 12 13]]
# 4. 求矩阵中元素的最大数最小数对应索引
print(np.argmin(A))  # 求所有元素中最小数对应的索引
print(np.argmax(A))  # 求所有元素中最大数对应的索引
    输出:
    0
    11
# 5. 求所有元素的平均值
print(np.mean(A))  
print(A.mean())
print(np.average(A))
    输出:
    7.5
    7.5
    7.5
# 6. 求每行或者每列元素的平均值;axis=0,对列计算,axis=1,对行计算
print(np.mean(A,axis = 0))
print(np.mean(A,axis = 1))
    输出:
    [6. 7. 8. 9.]
    [ 3.5  7.5 11.5]
# 7. 求所有元素的中位数
print(np.median(A))  
    输出:7.5
# 8. 求所有元素累加和
print(np.cumsum(A))
    输出:
    [ 2  5  9 14 20 27 35 44 54 65 77 90]
# 9. 累差
print(np.diff(A))   #由3行4列变为3行3列
    输出:
    [[1 1 1]
     [1 1 1]
     [1 1 1]]
# 10. 非零数的位置
print(np.nonzero(A))    
    输出:
    (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
# 输出2个array,第一个array代表行索引,带二个array代表列索引:行索引为0,列索引为0,1,2,3的元素都非零


3.3 排序

  1. 每行都升序排序:np.sort(A)
  2. 转置矩阵:A.Tnp.transpose(A)
  3. 转置后矩阵与转置前相乘:(A.T).dot(A)
  4. 截取——使用clip()函数,超出边界的元素,都变为边界数字
    np.clip(A,5,11) —— A表示矩阵,5和11为边界;小于5的数字变为5,大于11的数字变为11
A=np.arange(14,2,-1).reshape(3,4)
print(A)
    输出:
    [[14 13 12 11]
     [10  9  8  7]
     [ 6  5  4  3]]
# 1. 每行升序排序
print(np.sort(A))  
    输出:
    [[11 12 13 14]
     [ 7  8  9 10]
     [ 3  4  5  6]]
# 2. 转置矩阵 - 两种写法
print(A.T)
print(np.transpose(A))
    均输出:
    [[14 10  6]
     [13  9  5]
     [12  8  4]
     [11  7  3]]
# 3. 转置后矩阵与转置前相乘
print((A.T).dot(A))
    输出:
    [[332 302 272 242]
     [302 275 248 221]
     [272 248 224 200]
     [242 221 200 179]]
# 4. 截取clip(),超出边界的元素,都变为边界数字
print(np.clip(A,5,11))   #小于5的数字变为5,大于11的数字变为11
    输出:
    [[11 11 11 11]
     [10  9  8  7]
     [ 6  5  5  5]]


4. numpy的索引

4.1 一维序列

# 定义一个array
A = np.arange(3,15)
print(A)
    输出:
    [ 3  4  5  6  7  8  9 10 11 12 13 14]
# 1. 获取一维数组指定索引的元素值
print(A[3])   # 索引为 3 的值为6
    输出:6


4.2 二维矩阵

  1. 获取二维数组指定索引的元素值:array[行索引][列索引]
  2. 获取某行、某列值:array[行索引, 列索引]
# 定义一个array
A = np.arange(3,15).reshape((3,4))
print(A)
    输出:
    [[ 3  4  5  6]
     [ 7  8  9 10]
     [11 12 13 14]]
# 1. 获取二维数组指定索引的元素值
print(A[2][1])    #行索引为【2】,列索引为【1】对应的元素值
print(A[2,1]) 
    输出:
    12
    12
# 2. 获取某行、某列值
print(A[2,:])   #行索引为2,所有列
print(A[2,0:2])   #行索引为2,列索引为0,1
print(A[:,2])     #所有行,列索引为2
输出:
[11 12 13 14]
[11 12]
[ 5  9 13]


相关文章
|
8天前
|
数据采集 数据可视化 数据挖掘
Pandas函数大合集:数据处理神器一网打尽!
Pandas函数大合集:数据处理神器一网打尽!
19 0
|
8天前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
22 0
|
2月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
46 0
|
8天前
|
数据采集 数据挖掘 数据处理
Pandas实践:南京地铁数据处理分析
Pandas实践:南京地铁数据处理分析
16 2
|
8天前
|
数据处理 Python
Python数据转换:从Pandas到NumPy转换
Python数据转换:从Pandas到NumPy转换
12 0
|
2月前
|
SQL 数据挖掘 索引
12种Numpy&Pandas高效技巧
12种Numpy&Pandas高效技巧
|
2月前
|
数据采集 数据挖掘 数据处理
Python数据分析:Numpy、Pandas高级
在上一篇博文中,我们介绍了Python数据分析中NumPy和Pandas的基础知识。本文将深入探讨NumPy和Pandas的高级功能,并通过一个综合详细的例子展示这些高级功能的应用。
|
2月前
|
存储 数据采集 数据挖掘
NumPy 与 Pandas 的无缝集成
【8月更文第30天】在 Python 数据科学领域,NumPy 和 Pandas 是两个非常重要的库。NumPy 提供了高性能的多维数组对象以及对其进行操作的工具,而 Pandas 则是在 NumPy 的基础上增加了数据结构和数据分析工具,使得数据处理更加直观和便捷。本文将探讨 NumPy 和 Pandas 如何结合使用以增强数据处理和分析的能力。
22 0
|
2月前
|
数据采集 数据挖掘 数据处理
解锁Python数据分析新技能!Pandas实战学习,让你的数据处理能力瞬间飙升!
【8月更文挑战第22天】Python中的Pandas库简化了数据分析工作。本文通过分析一个金融公司的投资数据文件“investment_data.csv”,介绍了Pandas的基础及高级功能。首先读取并检查数据,包括显示前几行、列名、形状和数据类型。随后进行数据清洗,移除缺失值与重复项。接着转换日期格式,并计算投资收益。最后通过分组计算平均投资回报率,展示了Pandas在数据处理与分析中的强大能力。
37 0
|
3月前
|
数据挖掘 Python
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
177 0
下一篇
无影云桌面