numpy和pandas学习记录

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)

以下为学习内容

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值