Python pandas常用函数详解

闻溪
闻溪
发布时间:2026-10-13| 3人浏览过
原创

本文系统介绍Python pandas库的常用函数,涵盖文件读取、数据预处理、筛选、运算排序及统计聚合等核心功能。详细解析read_csv、merge、drop_duplicates等关键方法,帮助开发者高效完成数据清洗与分析任务。

本文重点解析Python中pandas库的常用函数,具体内容包括以下几个方面。

1 导入语句

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import re

2 文件读取

使用 pd.read_csv(path='file.csv') 读取CSV文件。相关参数说明如下: - header=None:使用默认列名,如0、1、2、3等。 - names=['A', 'B', 'C'...]:自定义列名。 - index_col='A'|['A', 'B'...]:指定索引列名称;若需多重索引,可传入列表。 - skiprows=[0,1,2]:跳过指定行号(从文件头0开始计数);若需从尾部跳过,可使用 skip_footer。 - nrows=N:仅读取前N行数据。 - chunksize=M:返回迭代类型 TextFileReader,每M条数据迭代一次,适用于数据量较大、内存占用较高的场景。 - sep=':':数据分隔符默认为逗号',',可根据文件格式选择合适的分隔符;若不指定参数,pandas会自动解析。 - skip_blank_lines=False:默认为True,即跳过空行;若设为False,不跳过的空行将填充为NaN。 - converters={'col1', func}:对指定列应用函数func进行转换,常用于处理编号列以避免被自动转换为int类型。

读取JSON格式数据可使用 pd.read_json('file.json'),支持传入JSON格式字符串。 读取Excel文件使用 dfex = pd.read_excel('file.xls', sheetname=[0,1..]),可读取多个Sheet页,返回包含多个DataFrame的字典。

3 数据预处理

- df.duplicated():返回各行是否为上一行的重复行。 - df.drop_duplicates():删除重复行;若需按特定列过滤,可传入参数如['col1', 'col2',...]。 - df.fillna(0):使用实数0填充NA值。 - df.dropna():参数 axis=0|1(0表示按行,1表示按列);how='all'|'any'(all表示仅当全部为NA时才删除,any表示只要有NA就删除整行/列)。 - del df['col1']:直接删除某一列。 - df.drop(['col1',...], axis=1):删除指定列,也可用于删除行。 - df.columns = col_lst:重新制定列名。 - df.rename(index={'row1':'A'}, columns={'col1':'A1'}):重命名索引名和列名。 - df.replace(dict):替换DataFrame中的值,前后值可通过字典指定,例如{1:'A', '2':'B'}。 定义函数获取字符串中的数字部分: def get_digits(str): m = re.match(r'(\d+(\.\d+)?)', str.decode('utf-8')) if m is not None: return float(m.groups()[0]) else: return 0 df.apply(get_digits):DataFrame.apply方法,仅获取小数部分,可选定特定列或行执行。 df['col1'].map(func):Series.map方法,仅对列进行函数转换。 pd.merge(df1, df2, on='col1', how='inner', sort=True):合并两个DataFrame,按共有列进行内连接(交集),结果默认排序;how='outer'表示外连接(并集)。 pd.merge(df1, df2, left_on='col1', right_on='col2'):当df1与df2无公共列名时,需指定左右两边的参考列进行合并。 pd.concat([sr1, sr2, sr3,...], axis=0):将多个Series堆叠成多行,结果仍为Series。 pd.concat([sr1, sr2, sr3,...], axis=1):将多个Series组合成多行多列,结果为DataFrame,索引取并集,无交集位置填入缺省值NaN。 df1.combine_first(df2):用df2的数据补充df1中的缺省值NaN;若df2包含更多行,也一并补充。 df.stack():将列旋转为行,即列名变为索引名,原索引变为多层索引,结果是具有多层索引的Series,实质是将数据集拉长。 df.unstack():将含有多层索引的Series转换为DataFrame,实质是将数据集压扁;若某列类别较少,可将这些类别提取为列。 df.pivot():实质是unstack的应用,用于将数据集压扁。 pd.get_dummies(df['col1'], prefix='key'):针对含有有限个值(通常为字符串,如国家)的列,借鉴位图思想,将k个国家的列量化为k列,每列用0、1表示。

4 数据筛选

- df.columns:返回Index类型的列名集合。 - df.index:返回Index类型的索引名集合。 - df.shape:返回包含行数和列数的元组。 - df.head(n=N):返回前N条数据。 - df.tail(n=M):返回后M条数据。 - df.values:以numpy.ndarray对象形式返回值的二维数组。 - df.index:DataFrame的索引,注意索引不可直接赋值修改。 - df.reindex(index=['row1', 'row2',...], columns=['col1', 'col2',...]):根据新索引重新排序。 - df[m:n]:切片操作,选取第m至n-1行。 - df[df['col1'] > 1]:选取满足条件的行。 - df.query('col1 > 1'):选取满足条件的行。 - df.query('col1==[v1,v2,...]'):选取指定值列表的行。 - df.ix[:,'col1']:选取某一列。 - df.ix['row1', 'col2']:选取某一元素。 - df.ix[:,:'col2']:切片选取某一列之前(包括col2)的所有列。 - df.loc[m:n]:获取从m到n行(推荐方式)。 - df.iloc[m:n]:获取从m到n-1行。 - df.loc[m:n-1,'col1':'coln']:获取从m到n行的col1至coln列。

sr=df['col']:取某一列,返回Series对象。 sr.values:Series的值,以numpy.ndarray对象形式返回。 sr.index:Series的索引,以index对象形式返回。

5 数据运算与排序

- df.T:DataFrame转置。 - df1 + df2:按索引和列相加,得到并集,缺失值以NaN填充。 - df1.add(df2, fill_value=0):使用指定值(如0)填充缺失值。 - df1.add/sub//mul/div:四则运算的方法。 - df - sr:DataFrame的所有行同时减去Series。 - df * N:所有元素乘以N。 - df.add(sr, axis=0):DataFrame的所有列同时减去Series。

- sr.order():Series升序排列。 - df.sort_index(axis=0, ascending=True):按行索引升序排列。 - df.sort_index(by=['col1', 'col2'...]):按指定列优先排序。 - df.rank():计算排名rank值。

6 数学统计

- sr.unique:Series去重。 - sr.value_counts():Series统计频率,并从大到小排序;DataFrame无此方法。 - sr.describe():返回基本统计量和分位数。

- df.describe():按各列返回基本统计量和分位数。 - df.count():求非NA值的数量。 - df.max():求最大值。 - df.min():求最小值(原文误写为最大值)。 - df.sum(axis=0):按各列求和。 - df.mean():按各列求平均值。 - df.median():求中位数。 - df.var():求方差。 - df.std():求标准差。 - df.mad():根据平均值计算平均绝对离差。 - df.cumsum():求累计和。 - sr1.corr(sr2):求相关系数。 - df.cov():求协方差矩阵。 - df1.corrwith(df2):求相关系数。

- pd.cut(array1, bins):求一维数据的区间分布。 - pd.qcut(array1, 4):按指定分位数进行区间划分,4可替换为自定义的分位数列表。

- df['col1'].groupby(df['col2']):按列2分组,列2作为key。 - df.groupby('col1'):DataFrame按列1分组。 - grouped.aggregate(func):分组后根据传入函数进行聚合。 - grouped.aggregate([f1, f2,...]):根据多个函数聚合,结果表现为多列,函数名作为列名。 - grouped.aggregate([('f1_name', f1), ('f2_name', f2)]):重命名聚合后的列名。 - grouped.aggregate({'col1':f1, 'col2':f2,...}):对不同列应用不同函数的聚合,函数也可以是多个。

df.pivot_table(['col1', 'col2'], rows=['row1', 'row2'], aggfunc=[np.mean, np.sum], fill_value=0, margins=True):根据row1、row2对col1、col2进行分组聚合,可指定多种聚合方法,并用指定值替换缺省值。

pd.crosstab(df['col1'], df['col2']):计算交叉表,统计分组的频率。

总结

以上就是本文关于Python pandas常用函数详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。