Pandas基础功能全面解析
引言
Pandas是Python数据分析的核心库,提供了高效便捷的数据结构和数据分析工具。本文将深入讲解Pandas中最基础但最重要的功能,帮助初学者快速掌握Pandas的核心操作。
数据结构创建
Pandas有三种主要数据结构:
- Series:一维数组,带索引
- DataFrame:二维表格,行列都有索引
- Panel:三维数据结构(在较新版本中已不推荐使用)
import pandas as pd
import numpy as np
# 创建Series
s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
# 创建DataFrame
index = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.randn(8, 3), index=index, columns=['A', 'B', 'C'])
# 创建Panel(仅作演示,新版本中建议使用MultiIndex DataFrame)
wp = pd.Panel(np.random.randn(2, 5, 4),
items=['Item1', 'Item2'],
major_axis=pd.date_range('1/1/2000', periods=5),
minor_axis=['A', 'B', 'C', 'D'])
数据预览技巧
head()和tail()方法
查看数据的前几行或后几行是数据分析中最常用的操作:
long_series = pd.Series(np.random.randn(1000))
# 查看前5行(默认)
long_series.head()
# 查看后3行
long_series.tail(3)
数据属性和底层结构
基本属性
- shape:返回数据的维度
- index:Series的行索引
- columns:DataFrame的列名
- values:获取底层数据数组(不推荐在新代码中使用)
# 修改列名
df.columns = [x.lower() for x in df.columns]
# 获取形状
print(df.shape)
底层数据结构
Pandas现在推荐使用.array
或.to_numpy()
来获取底层数据:
# 获取Series的底层数组
s.array
# 转换为NumPy数组
s.to_numpy()
# 处理时区数据
ser = pd.Series(pd.date_range('2000', periods=2, tz="CET"))
ser.to_numpy(dtype=object) # 保留时区
ser.to_numpy(dtype="datetime64[ns]") # 丢弃时区
加速运算
Pandas支持使用numexpr
和bottleneck
库加速运算:
# 启用/禁用加速
pd.set_option('compute.use_bottleneck', True)
pd.set_option('compute.use_numexpr', True)
这些优化库在处理大型数据集时能显著提升性能。
灵活的二元运算
广播机制
DataFrame和Series之间的运算遵循广播规则:
# 按列广播
df.sub(row, axis='columns')
# 按行广播
df.sub(column, axis='index')
缺失值处理
可以在运算中指定填充值:
df.add(df2, fill_value=0)
比较操作
Pandas提供了丰富的比较方法:
df.gt(df2) # 大于
df.ne(df) # 不等于
这些操作返回布尔值DataFrame,可用于条件筛选。
统计描述
Pandas提供了全面的统计方法:
df.mean() # 平均值
df.std() # 标准差
df.cumsum() # 累计和
可以指定轴方向:
df.mean(0) # 按列计算
df.mean(1) # 按行计算
数据标准化示例
# 标准化数据(Z-score标准化)
ts_stand = (df - df.mean()) / df.std()
注意事项
- 避免直接使用
.values
属性,推荐使用.array
或.to_numpy()
- 比较操作时注意NaN的处理(NaN不等于NaN)
- 使用
.equals()
方法比较整个数据结构 - 布尔运算时使用
.any()
或.all()
避免歧义
结语
掌握这些基础功能是使用Pandas进行数据分析的第一步。建议读者在实际项目中多加练习,逐步熟悉这些操作的用法和适用场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考