pandas作为Python数据分析的核心库,提供了丰富的数据结构和操作方法,能够高效处理结构化数据,其常用命令涵盖了数据读取、清洗、转换、分析、可视化等全流程,掌握这些命令是数据分析的基础,以下从数据读取与创建、数据查看与探索、数据清洗与预处理、数据筛选与过滤、数据分组与聚合、数据合并与重塑、时间序列处理、数据导出与可视化八个维度,详细介绍pandas的常用命令。

数据读取与创建
pandas支持从多种数据源读取数据,最常用的函数是read_csv()
和read_excel()
,分别用于读取CSV和Excel文件。pd.read_csv('data.csv', encoding='utf-8')
可读取CSV文件,pd.read_excel('data.xlsx', sheet_name='Sheet1')
可读取Excel指定工作表。read_json()
用于读取JSON文件,read_sql()
可从数据库查询结果直接创建DataFrame,创建DataFrame的常用方式包括通过字典创建,如data = {'col1': [1, 2], 'col2': [3, 4]}; df = pd.DataFrame(data)
;通过列表创建,如df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
;以及使用pd.Series
创建一维数据结构。
数据查看与探索
数据加载后,需通过命令快速了解数据概况。df.head(n)
查看前n行数据,默认为5行;df.tail(n)
查看后n行;df.info()
显示数据概要,包括列名、非空值数量、数据类型等;df.describe()
生成描述性统计,如计数、均值、标准差、最小值、四分位数等;df.shape
返回数据的行数和列数;df.columns
查看列名列表;df.index
查看索引信息;df.dtypes
查看各列数据类型;df.isnull().sum()
统计每列的缺失值数量。
数据清洗与预处理
数据清洗是分析的关键步骤,处理缺失值时,df.dropna()
可删除含缺失值的行或列,如df.dropna(axis=0, how='any')
删除任何含缺失值的行;df.fillna(value)
填充缺失值,如df['col'].fillna(df['col'].mean())
用均值填充,处理重复值时,df.drop_duplicates()
删除重复行,df.duplicated()
检测重复值,数据类型转换通过df['col'].astype('type')
实现,如将字符串转为数值类型,字符串处理使用str
访问器,如df['col'].str.lower()
转为小写,df['col'].str.contains('pattern')
检测是否包含特定模式,异常值处理可通过df[(df['col'] > lower_bound) & (df['col'] < upper_bound)]
过滤。
数据筛选与过滤
pandas支持灵活的数据筛选,按列筛选时,df[['col1', 'col2']]
选择指定列;按行筛选时,df[df['col'] > value]
根据条件筛选行,如筛选出年龄大于30的记录,逻辑运算符&
(与)、(或)、(非)可组合多个条件,需注意用括号分隔条件,如df[(df['age'] > 30) & (df['gender'] == 'Male')]
。df.loc[]
基于标签筛选,如df.loc[0:5, 'name':'age']
选择前6行的name到age列;df.iloc[]
基于位置筛选,如df.iloc[0:5, 0:2]
选择前6行前2列。df.query('col > value')
可通过字符串表达式筛选,语法更简洁。

数据分组与聚合
分组聚合是数据分析的核心操作,通过groupby()
实现。df.groupby('col').agg({'col1': 'mean', 'col2': 'sum'})
按col列分组,计算col1的均值和col2的和,聚合函数包括sum()
、mean()
、count()
、max()
、min()
、std()
、var()
等,多列分组可传入列表,如df.groupby(['col1', 'col2']).agg('size')
,分组后还可应用自定义函数,如df.groupby('col').apply(lambda x: x.max() - x.min())
。pivot_table()
用于创建透视表,如pd.pivot_table(df, values='col', index='row_col', columns='col_col', aggfunc='mean')
。
数据合并与重塑
数据合并包括纵向合并和横向合并。pd.concat([df1, df2], axis=0)
按行合并(默认),axis=1
按列合并;pd.merge(df1, df2, on='key', how='inner')
类似SQL的连接,how参数支持'inner'、'left'、'right'、'outer'四种连接方式,数据重塑通过melt()
将宽表转为长表,如df.melt(id_vars=['id'], value_vars=['col1', 'col2'], var_name='variable', value_name='value')
;pivot()
将长表转为宽表,如df.pivot(index='id', columns='variable', values='value')
。
时间序列处理
pandas提供了强大的时间序列功能,将列转为时间类型用pd.to_datetime(df['col'])
,创建时间索引通过df.index = pd.date_range(start='2023-01-01', periods=len(df))
,时间序列重采样使用resample()
,如df.resample('M').mean()
按月重采样并计算均值;时间偏移用pd.Timedelta(days=1)
,如df['date'] + pd.Timedelta(days=1)
,提取时间特征如df['year'] = df['date'].dt.year
,df['month'] = df['date'].dt.month
。
数据导出与可视化
分析结果需导出或可视化,导出数据用df.to_csv('output.csv', index=False)
导出CSV,df.to_excel('output.xlsx', index=False)
导出Excel,df.to_sql('table', con=engine)
导出数据库,可视化通过plot()
方法实现,如df['col'].plot(kind='line')
绘制折线图,kind
参数支持'bar'(柱状图)、'hist'(直方图)、'scatter'(散点图)、'box'(箱线图)等,结合matplotlib
可自定义图表样式。

以下为常用命令的总结表格:
功能类别 | 常用命令 | 说明 |
---|---|---|
数据读取 | pd.read_csv() |
读取CSV文件 |
pd.read_excel() |
读取Excel文件 | |
数据创建 | pd.DataFrame() |
通过字典或列表创建DataFrame |
数据查看 | df.head() /df.tail() |
查看前/后n行数据 |
df.info() /df.describe() |
查看数据概要/描述性统计 | |
数据清洗 | df.dropna() /df.fillna() |
删除/填充缺失值 |
df.drop_duplicates() |
删除重复值 | |
数据筛选 | df.loc[] /df.iloc[] |
基于标签/位置筛选 |
df[df['col'] > value] |
条件筛选 | |
分组聚合 | df.groupby().agg() |
分组并应用聚合函数 |
数据合并 | pd.concat() /pd.merge() |
纵向/横向合并数据 |
时间序列 | pd.to_datetime() |
转换为时间类型 |
df.resample() |
时间序列重采样 | |
数据导出 | df.to_csv() /df.to_excel() |
导出为CSV/Excel文件 |
可视化 | df.plot(kind='line') |
绘制折线图等 |
相关问答FAQs
Q1: 如何处理DataFrame中的缺失值?
A1: 处理缺失值的方法取决于数据量和业务需求,常用方法包括:①删除缺失值,使用df.dropna(subset=['col'])
删除指定列的缺失值;②填充缺失值,用均值(df['col'].fillna(df['col'].mean())
)、中位数、众数或固定值填充;③插值法,如df['col'].interpolate()
线性插值,若缺失值较少且分布随机,删除或填充均可;若缺失值较多,需分析缺失原因,避免引入偏差。
Q2: 如何实现多列分组并计算多个聚合函数?
A2: 使用groupby()
结合agg()
方法,传入字典指定每列的聚合函数,按“部门”和“性别”分组,计算“薪资”的均值和最大值、“年龄”的中位数,可写为:df.groupby(['部门', '性别']).agg({'薪资': ['mean', 'max'], '年龄': 'median'})
,字典的键为列名,值为函数名或函数列表,结果将生成多级索引的DataFrame,便于进一步分析。