python数据分析 (numpy + pandas + matplotilb )

ANACONDA

Screenshot 2025-10-20 192056.png

Jupyter NotBook

Screenshot 2025-10-20 194104.png

快捷键

  • esc 退出输出
  • dd 删除这一行
  • a 在上方添加一行
  • b 在下方添加一行
  • m 切换markdown模式
  • y 切换代码行
  • shift + Enter 运行这行代码

NumPy 科学计算

提供一个便于数学操作的数组对象

ndarray

  • 多维性 支持高维数组
  • 同质性 元素类型需要一致
  • 高效性 基于连续内存块存储, 支持向量化运算

ndarray的特性

import numpy as np
# as 重命名模块
arr = np.array(5)  # 0维ndarray数组
print(arr)
5
print("维度:",arr.ndim)
维度: 0
arr = np.array([1,2,3])  # 1维ndarray数组
print(arr)
print("维度:",arr.ndim)
[1 2 3]
维度: 1
arr = np.array([[1,2,3],[4,5,6]])  # 2维ndarray数组
print(arr)
print("维度:",arr.ndim)
[[1 2 3]
 [4 5 6]]
维度: 2
arr = np.array([1, "abc"])  # 不同的数据类型,ndarray数组会自动转换成同一数据类型
print(arr)
print("维度:",arr.ndim)
['1' 'abc']
维度: 1
arr = np.array([1, 2.5])  # 不同的数据类型,ndarray数组会自动转换成同一数据类型
print(arr)
print("维度:",arr.ndim)
[1.  2.5]
维度: 1

ndarray 的属性

  • shape 数组的形状 arr.shape
  • ndim 维度数量
  • size 总元素个数
  • dtype 元素类型
  • T 转置
  • itemsize 单个元素占用字节数
  • nbytes 数组内存占用量
  • flags 内存存储方式
import numpy as np

arr = np.array(1)
print(arr)
print('数组的形状:',arr.shape)
print('数组的维度:',arr.ndim)
print('元素个数', arr.size)
print('元素类型', arr.dtype)
1
数组的形状: ()
数组的维度: 0
元素个数 1
元素类型 int64

arr = np.array([1,2,3])
print(arr)
print('数组的形状:',arr.shape)
print('数组的维度:',arr.ndim)
print('元素个数', arr.size)
print('元素类型', arr.dtype)
[1 2 3]
数组的形状: (3,)
数组的维度: 1
元素个数 3
元素类型 int64

arr = np.array([[1,2,3],[4,5,6]])
print(arr)
print('数组的形状:',arr.shape)  # 2*3
print('数组的维度:',arr.ndim)
print('元素个数', arr.size)
print('元素类型', arr.dtype)
print('转置', arr.T)
[[1 2 3]
 [4 5 6]]
数组的形状: (2, 3)
数组的维度: 2
元素个数 6
元素类型 int64
转置 [[1 4]
 [2 5]
 [3 6]]

# 浮点数
arr = np.array([1, 2.5])
print(arr)
print('元素类型', arr.dtype)
[1.  2.5]
元素类型 float64

ndarray的创建

import numpy as np
arr = np.array([1,2,3,4,5])
print( arr)
[1 2 3 4 5]
#基础创建方法,参数为列表
list1 = [[1,2,3,4,5],[6,7,8,9,10]]
arr1 = np.array(list1,dtype=float)
print(arr1)
print(arr1.T)
print(arr1.dtype)
[[ 1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10.]]
[[ 1.  6.]
 [ 2.  7.]
 [ 3.  8.]
 [ 4.  9.]
 [ 5. 10.]]
float64
# copy
arr2 = np.copy(arr1)  # 只有元素相同 ,地址不同
print(arr2)
[[ 1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10.]]
# 预定义形状
# 全0 全1 未定义
#全0
arr3 = np.zeros((2,3))
print(arr3)
print(arr3.dtype)
[[0. 0. 0.]
 [0. 0. 0.]]
float64
#全1
arr4 = np.ones((2,3),dtype=int)
print(arr4)
print(arr4.dtype)
[[1 1 1]
 [1 1 1]]
int64
# 未定义 不推荐
arr5 = np.empty((2,3),dtype=int)
print(arr5)
print(arr5.dtype)
[[4607182418800017408 4607182418800017408 4607182418800017408]
 [4607182418800017408 4607182418800017408 4607182418800017408]]
int64
# 其他形状
arr6 = np.full((2,3),2025)
print(arr6)
print(arr6.dtype)
[[2025 2025 2025]
 [2025 2025 2025]]
int64
# 其他形状
arr7 = np.zeros_like(arr6) # 根据arr6的形状创建
print(arr7)
print(arr7.dtype)
arr8 = np.ones_like(arr6) # 根据arr6的形状创建
print(arr8)
print(arr8.dtype)
arr9 = np.full_like(arr6,2025)
print(arr9)
print(arr9.dtype)
[[0 0 0]
 [0 0 0]]
int64
[[1 1 1]
 [1 1 1]]
int64
[[2025 2025 2025]
 [2025 2025 2025]]
int64

image-ISgE.png

image-XGqN.png

image-LNxU.png

image-YcmY.png

ndarry数据类型

  • bool
  • int 8、16、32、64(uint)
  • float 8、16、32、64
  • complex68 | 128

索引切片

  • 索引从0开始
  • 行/列切片
  • 连续切片
  • sellct 切片
  • bool 切片
import numpy as np
# 一维数组 索引与切片
arr = np.random.randint(1,100,20)
print(arr)
[34 35 49 37  4 35 86 61 21 95 90 16 68 75  4 10 48 74 29  8]
print(arr[0])
print(arr[:])  # 切片
print(arr[2:5])  # start:end+1
print(arr[slice(2,15,3)])  # slice(start,end,step)
print(arr[(arr>10) & (arr<50)])  # bool 索引
34
[34 35 49 37  4 35 86 61 21 95 90 16 68 75  4 10 48 74 29  8]
[49 37  4]
[49 35 21 16  4]
[34 35 49 37 35 21 16 48 29]
# 二维数组 索引与切片
arr = np.random.randint(1,100,(4,8))
print(arr)
[[90 16 15 55 28 21 81 87]
 [60  8 49 16 94 20 72 78]
 [83 94 66 10 69 55 90 43]
 [94 60 53  4 15 62 28 14]]
print(arr[0,3])
print(arr[1,:])  # 前面是行索引,后面是列索引
print(arr[:,1])  # 切片
print(arr[(arr>10) & (arr<50)]) # bool 索引 变成一维数组
print(arr[2][arr[2] > 50]) # 嵌套
55
[60  8 49 16 94 20 72 78]
[16  8 94 60]
[16 15 28 21 49 16 20 43 15 28 14]
[83 94 66 69 55 90]

ndarry运算

image-sgus.png

image-qvQQ.png

numpy 基本函数

image-nYio.png

pandas

学习人工智能的第二人格 /.