Pandas 是 Python 中用于数据分析和处理最流行的开源库之一,建立在 NumPy 之上,提供了高性能、易用的数据结构和数据分析工具。它特别适合处理结构化数据(如表格型或异质型数据)。以下是 Pandas 的基础概念详细介绍:
一、核心数据结构
Pandas 主要有两个核心数据结构:
1.Series
- 一维带标签的数组,可以保存任何数据类型(整数、字符串、浮点数、Python 对象等)。
- 类似于带索引的 NumPy 数组。
- 每个元素都有一个对应的标签(称为 index)。
importpandasaspd s=pd.Series([1,3,5,7],index=['a','b','c','d'])print(s)输出:
a 1 b 3 c 5 d 7 dtype: int64特点:
- 自动对齐索引(在运算时非常有用)
- 支持向量化操作
- 可以看作是字典和数组的结合体
2.DataFrame
- 二维表格型数据结构,类似于 Excel 表格或 SQL 表。
- 每列可以是不同的数据类型(但同一列内类型一致)。
- 具有行索引(index)和列索引(columns)。
df=pd.DataFrame({'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'City':['New York','Paris','Tokyo']})print(df)输出:
Name Age City 0 Alice 25 New York 1 Bob 30 Paris 2 Charlie 35 Tokyo特点:
- 列可命名,支持按列名访问(如
df['Name']) - 支持多种数据输入格式(字典、列表、NumPy 数组、CSV 文件等)
- 提供丰富的数据操作方法(筛选、分组、合并、透视等)
二、基本操作
1.创建 DataFrame
- 从字典、列表、NumPy 数组、CSV/Excel 文件等创建。
# 从 CSV 读取df=pd.read_csv('data.csv')# 从字典创建data={'col1':[1,2],'col2':[3,4]}df=pd.DataFrame(data)2.查看数据
df.head()# 查看前5行df.tail(3)# 查看后3行df.info()# 显示数据概要(类型、非空值等)df.describe()# 统计摘要(均值、标准差、四分位数等)df.shape# 返回 (行数, 列数)3.索引与选择
- 按列选择:
df['Name']# 返回 Seriesdf[['Name','Age']]# 返回 DataFrame - 按行选择:
df.loc[0]# 按标签索引(第0行)df.iloc[0]# 按位置索引(第0行)df.loc[0:1,'Name':'City']# 标签切片
4.条件筛选
df[df['Age']>25]df[(df['Age']>25)&(df['City']=='Tokyo')]注意:使用
&、|而不是and、or,且条件需加括号。
三、数据清洗常用操作
1.处理缺失值
df.isnull()# 检查缺失值(返回布尔 DataFrame)df.dropna()# 删除含缺失值的行df.fillna(0)# 用0填充缺失值df.fillna(method='ffill')# 前向填充2.去重
df.duplicated()# 检查重复行df.drop_duplicates()# 删除重复行3.数据类型转换
df['Age']=df['Age'].astype('float')pd.to_datetime(df['date_column'])# 转换为日期时间四、数据操作进阶
1.分组(GroupBy)
df.groupby('City')['Age'].mean()- 类似 SQL 中的
GROUP BY - 支持聚合函数:
sum(),mean(),count(),agg()等
2.合并与连接
pd.concat():沿轴拼接多个 DataFramepd.merge():类似 SQL 的 JOIN 操作
pd.merge(df1,df2,on='key')3.透视表(Pivot Table)
pd.pivot_table(df,values='Age',index='City',aggfunc='mean')五、时间序列支持
Pandas 对时间序列有强大支持:
ts=pd.date_range('2025-01-01',periods=10,freq='D')df=pd.DataFrame({'value':range(10)},index=ts)df.resample('W').sum()# 按周重采样六、性能与注意事项
- 向量化优于循环:尽量使用内置方法而非 for 循环。
- 避免链式赋值:如
df[df.A > 2]['B'] = new_val可能引发警告,应使用.loc。 - 内存优化:对于大文件,可使用
dtype参数指定列类型,或使用chunksize分块读取。
总结
| 概念 | 说明 |
|---|---|
| Series | 一维带标签数组 |
| DataFrame | 二维表格结构,核心分析对象 |
| Index | 行/列标签,支持快速查找和对齐 |
| Vectorized Operations | 高效的批量计算 |
| Data I/O | 支持 CSV、Excel、JSON、SQL 等多种格式 |
掌握这些基础概念后,你就可以高效地进行数据加载、清洗、探索和分析了。
如需进一步学习,可参考官方文档:https://pandas.pydata.org/docs/