Numpy学习笔记
NumPy(Numerical Python)是一个强大的数学库,广泛应用于数据分析、科学计算、机器学习等领域。以下是NumPy的核心知识点,按类别进行组织:
1. 基础知识
导入NumPy:使用 import numpy as np 导入NumPy库。
ndarray:NumPy的核心对象是ndarray,是一个多维数组,具有相同数据类型的元素。
python
arr = np.array([1, 2, 3]) # 创建一维数组
2. 创建数组
使用列表或元组创建数组:
python
arr = np.array([1, 2, 3]) # 从列表创建
arr_2d = np.array([[1, 2], [3, 4]]) # 从二维列表创建
常见创建函数:
np.zeros(shape):创建全零数组。
np.ones(shape):创建全一数组。
np.arange(start, stop, step):创建等差数列数组。
np.linspace(start, stop, num):创建等间隔的数组。
np.random.random(size):生成指定形状的随机数组。
3. 数组属性
ndarray.shape:返回数组的形状(维度)。
ndarray.ndim:返回数组的维度。
ndarray.size:返回数组的元素个数。
ndarray.dtype:返回数组的数据类型。
ndarray.itemsize:返回数组每个元素的字节数。
python
arr.shape # (3,)
arr.dtype # dtype('int64')
4. 数组操作
索引和切片:
一维数组:arr[0]
二维数组:arr[1, 2] 或 arr[1][2]
切片:arr[1:3]、arr[:, 1](获取第1列)
形状变换:
arr.reshape(new_shape):改变数组形状。
arr.flatten():将多维数组展平成一维数组。
python
arr.reshape(2, 3) # 2行3列的二维数组
arr.flatten() # 展平为一维数组
连接与分割:
np.concatenate([arr1, arr2], axis=0):沿着指定轴连接数组。
np.split(arr, indices):按指定位置分割数组。
python
np.concatenate([arr1, arr2], axis=0) # 沿行连接
np.split(arr, 3) # 分割成3个子数组
5. 数学操作
数组运算:
数组间的加减乘除:+, -, *, /
逐元素操作:np.add(arr1, arr2), np.multiply(arr1, arr2)
数学函数:
np.sum(arr):计算数组的总和。
np.mean(arr):计算数组的均值。
np.median(arr):计算数组的中位数。
np.std(arr):计算数组的标准差。
np.min(arr) 和 np.max(arr):计算最小值和最大值。
np.exp(arr)、np.log(arr)、np.sqrt(arr):对数组元素进行指数、对数、平方根运算。
6. 广播机制(Broadcasting)
广播的概念:当两个不同形状的数组进行运算时,NumPy会自动将小数组“广播”到大数组的形状,使得运算能够进行。
示例:
python
arr1 = np.array([1, 2, 3])
arr2 = np.array([10])
result = arr1 + arr2 # 广播机制:arr2被自动扩展为[10, 10, 10]
7. 线性代数操作
矩阵乘法:np.dot(a, b) 或 np.matmul(a, b)
求逆:np.linalg.inv(a)
求特征值和特征向量:np.linalg.eig(a)
求解线性方程组:np.linalg.solve(a, b)
矩阵行列式:np.linalg.det(a)
8. 随机数生成
基本随机数生成:
np.random.random(size):生成随机浮点数。
np.random.randint(low, high, size):生成指定范围的整数。
随机分布:
np.random.normal(mean, std, size):生成正态分布的随机数。
np.random.choice(arr, size):从数组中随机选择元素。
np.random.shuffle(arr):随机打乱数组。
9. 高级操作
条件操作:
np.where(condition, x, y):根据条件选择元素。
np.select(conditions, choices):根据多个条件选择元素。
排序与搜索:
np.sort(arr):排序数组。
np.argsort(arr):返回排序的索引。
np.searchsorted(arr, value):查找插入位置。
去重与唯一元素:
np.unique(arr):返回唯一元素。
np.intersect1d(arr1, arr2):找出两个数组的交集。
10. 文件输入输出
读取和保存数组:
np.loadtxt():从文本文件中读取数组。
np.savetxt():将数组保存到文本文件。
np.load() 和 np.save():加载和保存二进制格式数组。
python
np.savetxt('array.txt', arr)
arr = np.loadtxt('array.txt')
11. 内存管理
更改数据类型:
arr.astype(dtype):将数组转换为指定的数据类型。
内存视图:
np.copy():创建数组的副本。
12. 性能优化
矢量化:利用NumPy的内建函数(如np.sum(), np.mean()等)来避免使用Python的for循环,从而提升效率。
并行计算:NumPy利用多线程并行计算来加速某些运算。
以下为学习代码











Pandas学习笔记
Pandas 是一个非常强大的 Python 数据分析库,专门用于处理表格数据,如 CSV 文件、Excel 文件、SQL 数据库等。它提供了数据结构和多种函数,可以高效地清洗、操作、分析数据。下面是一些常用的 Pandas 操作和技巧。
1. 导入 Pandas
python
import pandas as pd
2. 创建 DataFrame 和 Series
Series 是一种一维数据结构,类似于列表或字典。
DataFrame 是一个二维数据结构,类似于表格。
创建 Series:
python
s = pd.Series([1, 2, 3, 4])
print(s)
创建 DataFrame:
python
data = {'Name': ['Tom', 'Jerry', 'Mickey'],
'Age': [20, 21, 19]}
df = pd.DataFrame(data)
print(df)
3. 读取和写入数据
读取数据:
从 CSV 文件读取数据:
python
df = pd.read_csv('file.csv')
从 Excel 文件读取数据:
python
df = pd.read_excel('file.xlsx')
写入数据:
将 DataFrame 保存为 CSV 文件:
python
df.to_csv('output.csv', index=False)
将 DataFrame 保存为 Excel 文件:
python
df.to_excel('output.xlsx', index=False)
4. 查看数据
查看前几行数据:
python
print(df.head()) # 默认查看前 5 行
查看后几行数据:
python
print(df.tail()) # 默认查看后 5 行
查看 DataFrame 的信息:
python
print(df.info()) # 查看列的数据类型、非空值数量等信息
查看描述性统计:
python
print(df.describe()) # 输出数据的基本统计信息(均值、标准差、最小值、四分位数等)
5. 数据选择与过滤
选择某一列:
python
print(df['Name']) # 选择单列
选择多列:
python
print(df[['Name', 'Age']]) # 选择多列
按条件筛选数据:
python
# 筛选 Age > 20 的行
filtered_df = df[df['Age'] > 20]
print(filtered_df)
6. 修改数据
修改某个单元格:
python
df.at[0, 'Age'] = 22 # 修改第一行 Age 列的值
修改整列:
python
df['Age'] = df['Age'] + 1 # 将 Age 列的每个值都加 1
7. 数据合并与连接
按列连接:
python
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
df_combined = pd.concat([df1, df2], axis=0) # axis=0 按行连接
print(df_combined)
按行连接:
python
df_combined = pd.concat([df1, df2], axis=1) # axis=1 按列连接
print(df_combined)
按键合并:
python
df1 = pd.DataFrame({'key': ['A', 'B'], 'value': [1, 2]})
df2 = pd.DataFrame({'key': ['A', 'B'], 'value': [3, 4]})
merged_df = pd.merge(df1, df2, on='key')
print(merged_df)
8. 数据透视表(Pivot Table)
python
# 创建一个透视表
pivot_table = df.pivot_table(values='Age', index='Name', aggfunc='mean')
print(pivot_table)
9. 缺失值处理
查看缺失值:
python
print(df.isnull()) # 返回一个布尔值的 DataFrame,表示是否为缺失值
填充缺失值:
python
df.fillna(0, inplace=True) # 将所有缺失值填充为 0
删除缺失值:
python
df.dropna(inplace=True) # 删除包含缺失值的行
10. 分组操作
按列分组:
python
grouped = df.groupby('Name')
print(grouped['Age'].mean()) # 按 Name 列分组并计算每组 Age 的均值
11. 排序数据
按列排序:
python
df_sorted = df.sort_values(by='Age', ascending=False) # 按 Age 列降序排序
print(df_sorted)
12. 时间序列操作
转换为日期时间格式:
python
df['Date'] = pd.to_datetime(df['Date'])
设置日期为索引:
python
df.set_index('Date', inplace=True)
按日期范围筛选:
filtered_df = df['2020-01-01':'2020-12-31']
print(filtered_df)
以下为学习内容




还有很多很多内容尚未展示,只展示了个人认为重要的部分,有不足之处还望见谅,也可以留下你宝贵意见,这对我真的很重要!!!!

1379

被折叠的 条评论
为什么被折叠?



