学习笔记:Python数据分析
前言
NumPy 通过高效的数据结构和算法,成为 Python 科学计算的基石。其核心价值在于简化大规模数值操作的代码复杂度并大幅提升计算性能,无论是数据分析师、机器学习工程师还是科研人员,掌握 NumPy 都是进阶的必经之路。
一、Numpy是什么?
NumPy(Numerical Python)是 Python 的一个开源库,专为高效处理大型多维数组和矩阵计算而设计。它是 Python 科学计算生态系统的核心,提供了高性能的数据结构、数学函数和工具,广泛应用于数据分析、机器学习、图像处理、科学计算等领域。
二、基础操作
1.jupyter常见操作
单元格外观控制:
1.用工具栏移动
2.双击折叠out框
3.单击恢复out框
4.可以剪切单元格
1.运行cmd 输入:jupyter notebook --generate-config
2.找到生成的config.py文件
3.用记事本打开修改 notebook_dir 加入路径重新打开即可
2.数据处理
代码如下(示例1):
x = list(range(-5,6))
y=[i*i for i in x]
print(x)
print(y)
输出:
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
代码如下(示例2):
import matplotlib.pyplot as plt
plt.plot(x,y)
输出:
3.魔法命令
以%或%%开头的特殊命令,控制Jupyter提供各种辅助开发和计算的特殊功能
该类命令不是Python标准语法,只能在Jupyter中运行
一个%的指令只对一行代码起作用
两个%的指令对本单元格全部代码起作用
%%time 查看运行时间
代码如下(示例3):
%%time
i= 1
for a in range(100000):
for b in range(1000):
i=i+1
print(i)
输出程序运行结果和时间:
%who 查看定义的变量名称
代码如下(示例4):
%who
输出结果:
a b i plt x y
三、numpy创建NDArray数组
1.从列表生成数组
numpy.array(列表)
import numpy as np
list1=[1,2,3]
df=np.array(list1)
df
输出结果:
array([1, 2, 3])
df.dtype
输出结果:
dtype('int32')
如果表中有多种类型则会执行强制转换
list3=[1,2,3.5,'sss']
df3=np.array(list3)
df3
输出结果:
array(['1', '2', '3.5', 'sss'], dtype='<U32')
向上兼容: 整数---->浮点数---->str等各类对象
2.创建NDArray数组
2.1用函数生成规律性数组
2.1.1.numpy.zeros
numpy.zeros()
是 NumPy 中用于创建指定形状和数据类型的数组,并用 零值 填充的函数。它是初始化数组的常用方法,尤其在需要预分配内存空间或创建基准值数组时非常实用。
核心语法
numpy.zeros(shape, dtype=float, order='C')
shape
:数组的形状,可以是整数(如3
)或元组(如(2, 3)
)。dtype
(可选):数组的数据类型,默认是float64
。order
(可选):内存布局方式,'C'
表示行优先(C 风格),'F'
表示列优先(Fortran 风格)。
1. 创建一维数组
import numpy as np
# 创建长度为5的一维数组,元素全为0(默认float类型)
arr1 = np.zeros(5)
print(arr1) # 输出: [0. 0. 0. 0. 0.]
print(arr1.dtype) # 输出: float64
2. 创建多维数组
# 创建2行3列的二维数组(全0矩阵)
arr2 = np.zeros((2, 3))
print(arr2)
# 输出:
# [[0. 0. 0.]
# [0. 0. 0.]]
# 创建3维数组(2层,每层2行3列)
arr3 = np.zeros((2, 2, 3))
print(arr3.shape) # 输出: (2, 2, 3)
3. 指定数据类型
# 创建整数类型的数组
arr_int = np.zeros(3, dtype=int)
print(arr_int) # 输出: [0 0 0]
print(arr_int.dtype) # 输出: int64
# 创建布尔类型的数组(0对应False)
arr_bool = np.zeros(2, dtype=bool)
print(arr_bool) # 输出: [False False]
4. 与其他数组保持相同形状
# 假设有一个已有数组
existing_arr = np.array([[1, 2], [3, 4]])
# 创建与existing_arr形状相同的全0数组
zeros_like = np.zeros_like(existing_arr)
print(zeros_like)
# 输出:
# [[0 0]
# [0 0]]
应用场景
1.初始化累加器
在数值计算中,常用于初始化累加数组,例如:
result = np.zeros(10) # 初始化结果数组
for i in range(10):
result[i] = i * 2
2.作为占位符
在深度学习中,用于创建批量输入数据的占位符:
batch_input = np.zeros((32, 224, 224, 3)) # 32张224×224的RGB图像
3.构建稀疏矩阵
先创建全 0 矩阵,再填充非零值:
matrix = np.zeros((1000, 1000))
matrix[0, 0] = 1 # 在特定位置赋值
2.1.2.numpy.ones
numpy.ones()
是 NumPy 中用于创建指定形状和数据类型的数组,并用 1 值 填充的函数。它与 numpy.zeros()
类似,但初始值为 1,常用于初始化权重矩阵、计数数组或基准值数组。
核心语法
numpy.ones(shape, dtype=float, order='C')
shape
:数组的形状,可以是整数(如3
)或元组(如(2, 3)
)。dtype
(可选):数组的数据类型,默认是float64
。order
(可选):内存布局方式,'C'
表示行优先(C 风格),'F'
表示列优先(Fortran 风格)。
1. 创建一维数组
import numpy as np
# 创建长度为5的一维数组,元素全为1(默认float类型)
arr1 = np.ones(5)
print(arr1) # 输出: [1. 1. 1. 1. 1.]
print(arr1.dtype) # 输出: float64
2. 创建多维数组
# 创建2行3列的二维数组(全1矩阵)
arr2 = np.ones((2, 3))
print(arr2)
# 输出:
# [[1. 1. 1.]
# [1. 1. 1.]]
# 创建3维数组(2层,每层2行3列)
arr3 = np.ones((2, 2, 3))
print(arr3.shape) # 输出: (2, 2, 3)
3. 指定数据类型
# 创建整数类型的数组
arr_int = np.ones(3, dtype=int)
print(arr_int) # 输出: [1 1 1]
print(arr_int.dtype) # 输出: int64
# 创建布尔类型的数组(1对应True)
arr_bool = np.ones(2, dtype=bool)
print(arr_bool) # 输出: [True True]
4. 与其他数组保持相同形状
# 假设有一个已有数组
existing_arr = np.array([[1, 2], [3, 4]])
# 创建与existing_arr形状相同的全1数组
ones_like = np.ones_like(exi