Python数据分析pandas模块用法实例详解

陈默
陈默
发布时间:2026-10-13| 5人浏览过
原创

本文详细解析Python中pandas模块的核心用法,涵盖Series与DataFrame的创建、属性获取及多种索引方式。通过实例演示字典、数组等数据源的转换,深入讲解loc、iloc等高级索引技巧,并指出ix方法的弃用情况,帮助开发者掌握高效的数据处理技能。

本文通过具体实例介绍Python数据分析中pandas模块的使用方法,旨在为读者提供实用的参考指南。

pandas

关于pandas的十分钟快速入门教程,可访问官方网站查阅:10 minutes to pandas。

此外,官方还提供了更复杂的cookbook供深入学习。

  • pandas是一个功能强大的数据分析工具包,它建立在Numpy之上,提供了更高级的数据结构和操作工具。正如Numpy的核心是ndarray,pandas的核心则是Series和DataFrame这两个数据结构,分别对应一维序列和二维表格结构。

创建对象

标准的导入方式如下:


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

Series

  • Series可视为一个长度固定且有序的字典,它能够存储任意类型的数据(包括整数、字符串、浮点数或Python对象),构成一维带标签的数组。
  • 一个Series对象主要包含两个属性:index(索引)和values(值)。
  • 在创建Series时,数据源可以是Python字典、ndarray数组或标量值(例如5)。
  • 无论创建时是否指定index,系统都会设置默认的下标;但若使用数组作为索引,则会保留创建时指定的索引值。
  • 创建Series时可以指定name属性,后续也可通过rename方法进行修改。

ser1 = pd.Series(range(10,15),index=list('ABCDE'))
print(ser1)
# 下标和索引等同
print(ser1['A'])
print(ser1[0])

输出结果示例:

A 10 B 11 C 12 D 13 E 14 dtype: int64 10 10

在选取连续多个数据时,使用下标切片不包含结束位置,而使用索引切片则包含结束位置。


print(ser1['A':'D'])
print(ser1[0:3])

输出结果示例:

A 10 B 11 C 12 D 13 dtype: int64 A 10 B 11 C 12 dtype: int64

选取多个数据或进行条件筛选(布尔索引)的操作示例如下。


# 注意里面是一个列表
print(ser1[[0,1,3]])
# 布尔索引
print(ser1[(ser1>12)&(ser1<15)])

DataFrame

DataFrame是一个二维的带标签数据结构,可以类比为电子表格或SQL表,也是Series对象的集合。它通常是pandas中最常用的对象类型。与Series类似,DataFrame支持多种输入形式:

  • 包含一维ndarray、列表、字典或Series的字典。
  • 二维numpy.ndarray数组。
  • 结构化或记录类型的ndarray。
  • Series对象。
  • 另一个DataFrame对象。

df1 = pd.DataFrame(np.random.randint(10,50,(3,4)), - index=list('ABC'),columns=list('abcd'))
  • 其中,index表示行索引,columns表示列索引。
  • 当使用字典创建DataFrame时,字典的键名即为列索引,且键值可以是列表,系统会自动进行补齐处理。

获取单行、单列或单个数据的具体操作如下。


# 列取值,取出的是一个series对象
print(df1['a'])
print(df1['a'].values)
# 取出一行数据的某一行数据,也就是单个数据
print(df1['a']['B']) # 这两个一样
print(df1['a'][1])

获取不连续的多列数据,以及获取连续多列数据(默认情况下不支持直接切片,需使用高级索引)。


# 取不连续多列
print(df1[['a','c']])

行索引支持直接切片,但默认情况下不支持直接获取不连续的多行数据,下标选取同理。


print('行索引取值##############')
print(df1['A':'A'])
# 取连续多行就是df1['A':'C']

高级索引(花式索引)

高级索引通常应用于DataFrame,此处略过Series的相关讨论。

loc标签索引


df1 = pd.DataFrame(np.random.randint(10,50,(5,4)), index=list('ABCDE'),columns=list('abcd'))
# 取单行,类型是series
print(df1.loc['A'])
print(type(df1.loc['A']))
# 取连续多行,类型是DataFrame
print(df1.loc['A':'C'])
# 如果没有index索引就用下标,可以取连续多行连续多列
print(df1.loc['A':'D','a':'c'])
# 取不连续多行不连续多列
print(df1.loc[['A','C'],['a','c']])

iloc位置索引

iloc的用法与loc类似,但下标索引遵循左闭右开原则,而loc则包含最后一位元素。


# DataFrame
print(df1.iloc[0:2, 0]) # 注意和df1.loc['A':'C', 'a']的区别
print(df1.loc['A':'C', 'a'])

ix 标签与位置混合索引

博主使用的pandas 0.24.2版本中,.ix方法已被弃用(尽管仍可使用并会发出警告),因此此处不再展开介绍。

  • ix是上述两种索引的综合体,既可以使用索引编号,也可以使用自定义索引,具体使用需视情况而定。
  • 如果索引中同时包含数字和英文字符,不建议使用这种方式,因为这容易导致定位混乱。

增加数据

1 2
增加一行数据 1.df1.loc[‘D'] = [1,2,3,4,5] 2.df1.loc[‘D'] = [np.random.randint(10,20)]
增加一列数据 df1.

如需了解更多Python相关内容,可参考本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

希望本文所述内容能对大家的Python程序设计有所帮助。

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

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 算法库。