1.概要
2.内容
Pandas 是 Python 中最常用的数据分析库之一,专为处理表格数据和时序数据设计。以下是其核心功能和使用示例:
📌 核心数据结构
-
DataFrame
二维表格型数据结构(类似 Excel),包含行索引和列名。import pandas as pd data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]} df = pd.DataFrame(data)
-
Series
一维带标签数组,可视为 DataFrame 的单列。s = pd.Series([1, 2, 3], name='Numbers')
🔧 常用操作
-
读取数据
# CSV df = pd.read_csv('data.csv') # Excel df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
数据清洗
# 删除缺失值 df.dropna() # 填充缺失值 df.fillna(0) # 删除重复行 df.drop_duplicates()
数据筛选
# 按条件筛选 df[df['Age'] > 25] # 多条件筛选 df[(df['Age'] > 25) & (df['Name'] == 'Bob')]
数据聚合
# 分组统计 df.groupby('Category')['Sales'].sum() # 透视表 df.pivot_table(index='Date', columns='Product', values='Revenue')
合并数据
# 横向合并(按列)
pd.concat([df1, df2], axis=1)
# 纵向合并(按行)
pd.concat([df1, df2], axis=0)
# 数据库风格合并
pd.merge(df1, df2, on='key_column')
🚀 高效技巧
- 向量化操作:避免逐行循环,优先使用内置函数(如
df['col'].apply()
) - 内存优化:指定数据类型减少内存占用
df = pd.read_csv('data.csv', dtype={'ID': 'int32', 'Value': 'float32'})
- 处理大数据:使用
Dask
库扩展 Pandas 功能
📊 可视化扩展
结合 Matplotlib/Seaborn 快速绘图:
import matplotlib.pyplot as plt
df['Age'].plot(kind='hist')
plt.show()
需要更具体的功能说明(如时间序列处理、文本数据处理等)或遇到具体问题?可以提供详细场景,我会给出针对性代码示例! 🐼
3.关联链接
4.关联知识
1.pandas主要作用
Pandas 是 Python 生态中核心的数据分析库,专为处理结构化数据(表格、时序、多维数据)设计。其核心价值在于提供高效、灵活的数据操作接口,覆盖从数据加载、清洗、分析到输出的全流程。以下是其核心作用的详细解析:
📊 核心数据结构
1. DataFrame(二维表格)
- 类似 Excel 的表格,包含行索引(index)和列名(columns)。
- 支持异构数据类型(每列可独立指定类型,如整数、字符串、日期等)。
- 典型场景:数据库查询结果、CSV/Excel 文件、日志数据。
import pandas as pd
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30], 'City': ['NY', 'London']}
df = pd.DataFrame(data)
2. Series(一维数组)
- 带标签的数组,可视为 DataFrame 的单列。
- 支持缺失值(NaN)和数学运算。
s = pd.Series([1, 2, 3], name='Numbers')
🧹 数据清洗与预处理
1. 处理缺失值
- 识别缺失值:
df.isnull()
- 删除缺失值:
df.dropna()
- 填充缺失值:
df.fillna(0)
或df.fillna(method='ffill')
(前向填充)
2. 处理重复值
- 标记重复行:
df.duplicated()
- 删除重复行:
df.drop_duplicates()
3. 数据类型转换
- 强制转换列类型:
df['Age'] = df['Age'].astype(float)
- 自动推断类型:
pd.to_numeric(df['Price'], errors='coerce')
(将非法值转为 NaN)
4. 异常值处理
- 基于统计阈值筛选:
df[df['Value'] > df['Value'].mean() + 3*df['Value'].std()]
- 替换异常值:
df['Value'] = np.where(df['Value'] > 100, 100, df['Value'])
🔍 数据操作与分析
1. 筛选与过滤
- 条件筛选:
df[df['Age'] > 25]
- 多条件筛选:
df[(df['Age'] > 25) & (df['City'] == 'NY')]
- 模糊匹配:
df[df['Name'].str.contains('A')]
2. 排序与排名
- 按列排序:
df.sort_values(by='Age', ascending=False)
- 生成排名:
df['Rank'] = df['Score'].rank(ascending=False)
3. 分组聚合
- 分组统计:
df.groupby('Category')['Sales'].sum()
- 多级分组:
df.groupby(['Year', 'Month'])['Revenue'].mean()
- 聚合函数:
agg()
支持同时计算多个统计量(如mean
,sum
,count
)
4. 透视表与交叉表
- 透视表:
df.pivot_table(index='Date', columns='Product', values='Revenue')
- 交叉表:
pd.crosstab(df['Gender'], df['Purchase'])
5. 窗口函数
- 滚动计算:
df['Rolling_Mean'] = df['Value'].rolling(window=3).mean()
- 扩展排序:
df['Rank'] = df['Score'].rank(pct=True)
(计算百分位排名)
🔗 数据合并与连接
1. 横向合并(按列)
- 合并 DataFrame:
pd.concat([df1, df2], axis=1)
- 类似 SQL JOIN:
pd.merge(df1, df2, on='key_column', how='inner')
(支持inner
,left
,right
,outer
)
2. 纵向合并(按行)
- 追加数据:
pd.concat([df1, df2], axis=0)
- 忽略重复列名:
pd.concat([df1, df2], axis=0, ignore_index=True)
⏰ 时间序列处理
1. 日期解析
- 字符串转日期:
pd.to_datetime(df['Date'], format='%Y-%m-%d')
- 自动推断格式:
pd.to_datetime(df['Timestamp'])
2. 重采样与滚动窗口
- 按月重采样:
df.resample('M').sum()
- 滑动窗口统计:
df['Value'].rolling('7D').mean()
3. 时间偏移
- 日期偏移:
df['Date'] + pd.DateOffset(months=1)
- 生成日期范围:
pd.date_range(start='2025-01-01', end='2025-12-31', freq='D')
📤 输入与输出
1. 文件读写
- CSV:
pd.read_csv('data.csv')
/df.to_csv('output.csv', index=False)
- Excel:
pd.read_excel('data.xlsx', sheet_name='Sheet1')
- JSON:
pd.read_json('data.json')
- 数据库:
pd.read_sql('SELECT * FROM table', connection)
2. 格式转换
- DataFrame 转 NumPy:
df.values
- NumPy 转 DataFrame:
pd.DataFrame(np.array, columns=['A', 'B'])
🚀 性能优化技巧
- 指定数据类型:减少内存占用(如
dtype={'ID': 'int32'}
) - 分块读取:处理大文件(
pd.read_csv('data.csv', chunksize=10000)
) - 向量化操作:避免逐行循环(优先使用
df['col'].apply()
) - 使用 Dask:扩展 Pandas 到大数据场景(
dask.dataframe
)
🌰 典型应用场景
- 数据预处理:清洗原始数据(如日志、传感器数据)
- 探索性数据分析(EDA):快速生成统计摘要和可视化
- 特征工程:为机器学习模型构建特征(如分箱、编码)
- 报表生成:自动化生成汇总表格和图表
Pandas 的设计哲学是让数据分析师专注于问题本身,而非底层实现。通过提供统一的 API,它大幅降低了从原始数据到可分析格式的转换成本,是数据科学工作流程中不可或缺的工具。
2.numpy
NumPy 是 Python 中用于科学计算的核心库,尤其擅长处理多维数组(ndarray)和矩阵运算。以下是其核心功能和使用示例:
📌 核心数据结构:ndarray
多维数组对象,支持高效存储和操作同类型数据。
import numpy as np
# 创建一维数组
arr = np.array([1, 2, 3])
# 创建二维数组(矩阵)
matrix = np.array([[1, 2], [3, 4]])
🔧 常用操作
-
数组创建
# 全零数组 np.zeros((2, 3)) # 2行3列 # 全一数组 np.ones((3, 3)) # 单位矩阵 np.eye(3) # 等差数列 np.arange(0, 10, 2) # [0,2,4,6,8] # 线性等分 np.linspace(0, 1, 5) # [0.0, 0.25, 0.5, 0.75, 1.0]
数学运算
a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 逐元素运算 a + b # [5,7,9] a * 2 # [2,4,6] # 矩阵乘法 np.dot(a, b) # 1*4 + 2*5 + 3*6 = 32 # 聚合统计 a.sum() # 6 a.mean() # 2.0 a.std() # 标准差
广播机制
自动扩展数组形状进行运算:
a = np.array([[1], [2], [3]]) # 形状 (3,1)
b = np.array([4, 5, 6]) # 形状 (3,)
a + b # 输出形状 (3,3)
- 索引与切片
arr = np.array([[1,2,3], [4,5,6], [7,8,9]]) arr[0] # 第一行 [1,2,3] arr[:, 1] # 第二列 [2,5,8] arr[1:3, :2] # 切片 [[4,5], [7,8]]
🚀 高效技巧
-
向量化运算:避免Python循环,利用C底层优化
# 慢:Python循环 result = [] for x in arr: result.append(x**2) # 快:NumPy向量化 arr ** 2
-
内存视图:切片不复制数据,节省内存
sub_arr = arr[1:3] # 与原数组共享内存
-
条件筛选:
arr[arr > 5] # 返回所有大于5的元素
🤝 与Pandas协同
import pandas as pd
# DataFrame转NumPy数组
df = pd.DataFrame({'A': [1,2], 'B': [3,4]})
df.values # 输出:array([[1,3], [2,4]])
# NumPy数组转DataFrame
pd.DataFrame(np.eye(2), columns=['A', 'B'])
🌰 典型应用场景
- 图像处理:RGB通道作为三维数组
- 机器学习:特征矩阵标准化(如
(x - μ) / σ
) - 信号处理:傅里叶变换(
np.fft
) - 随机数生成:
np.random.randn(3,3)
生成正态分布样本
需要更具体的功能说明(如线性代数、稀疏矩阵等)或遇到性能优化问题?可以提供详细场景,我会给出针对性代码示例! 🚀