Pandas数据索引与选择技术详解

Pandas数据索引与选择技术详解

data-science-ipython-notebooks donnemartin/data-science-ipython-notebooks: 是一系列基于 IPython Notebook 的数据科学教程,它涉及了 Python、 NumPy、 pandas、 SQL 等多种数据处理工具。适合用于学习数据科学和分析,特别是对于需要使用 Python 和 SQL 等工具进行数据分析和处理的场景。特点是数据科学教程、IPython Notebook、Python、SQL。 data-science-ipython-notebooks 项目地址: https://gitcode.com/gh_mirrors/da/data-science-ipython-notebooks

概述

在数据科学项目中,高效地访问和操作数据是核心技能之一。本文基于Python数据科学手册中的内容,深入讲解Pandas库中Series和DataFrame对象的数据索引与选择技术。

Series数据选择

Series作为Pandas的一维数据结构,提供了多种数据访问方式,我们可以从两个角度来理解它:

1. 类字典操作

Series的行为与Python字典非常相似,可以通过键值对的方式访问数据:

import pandas as pd
data = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd'])

# 字典式访问
print(data['b'])  # 输出: 0.5

# 检查键是否存在
print('a' in data)  # 输出: True

# 获取所有键
print(data.keys())  # 输出: Index(['a', 'b', 'c', 'd'], dtype='object')

# 添加新元素
data['e'] = 1.25

2. 类数组操作

Series也支持NumPy风格的数组操作,包括切片、布尔掩码和花式索引:

# 显式索引切片(包含结束点)
print(data['a':'c'])

# 隐式整数索引切片(不包含结束点)
print(data[0:2])

# 布尔掩码
print(data[(data > 0.3) & (data < 0.8)])

# 花式索引
print(data[['a', 'e']])

索引器:loc与iloc

当Series使用整数作为索引时,可能会产生混淆。Pandas提供了明确的索引器:

  • loc:基于显式标签的索引
  • iloc:基于隐式整数位置的索引
data = pd.Series(['a', 'b', 'c'], index=[1, 3, 5])

# loc使用显式标签
print(data.loc[1])    # 'a'
print(data.loc[1:3])  # 包含结束点

# iloc使用隐式位置
print(data.iloc[1])    # 'b'
print(data.iloc[1:3])  # 不包含结束点

DataFrame数据选择

DataFrame是二维数据结构,可以视为共享相同索引的Series集合或结构化数组。

1. 类字典操作

可以像访问字典一样访问DataFrame的列:

area = pd.Series({'California': 423967, 'Texas': 695662})
pop = pd.Series({'California': 38332521, 'Texas': 26448193})
data = pd.DataFrame({'area': area, 'pop': pop})

# 字典式列访问
print(data['area'])

# 属性式列访问
print(data.area)

# 两种方式访问的是同一对象
print(data.area is data['area'])  # True

2. 类数组操作

DataFrame也支持类似二维数组的访问方式:

# 使用loc进行标签索引
print(data.loc['California'])  # 获取一行
print(data.loc['California':'Texas', 'pop'])  # 行和列切片

# 使用iloc进行位置索引
print(data.iloc[0])  # 第一行
print(data.iloc[:2, 1])  # 前两行,第二列

3. 其他索引技巧

  • 布尔索引:data[data.pop > 20000000]
  • 赋值操作:data['density'] = data.pop / data.area
  • 删除列:del data['area']

最佳实践

  1. 优先使用lociloc进行明确索引,避免混淆
  2. 复杂操作可以分步进行,提高代码可读性
  3. 注意显式索引(包含结束点)和隐式索引(不包含结束点)的区别
  4. 链式操作可能导致不可预期的结果,建议使用临时变量

掌握这些索引技术将大大提高你在数据分析和处理中的效率和准确性。

data-science-ipython-notebooks donnemartin/data-science-ipython-notebooks: 是一系列基于 IPython Notebook 的数据科学教程,它涉及了 Python、 NumPy、 pandas、 SQL 等多种数据处理工具。适合用于学习数据科学和分析,特别是对于需要使用 Python 和 SQL 等工具进行数据分析和处理的场景。特点是数据科学教程、IPython Notebook、Python、SQL。 data-science-ipython-notebooks 项目地址: https://gitcode.com/gh_mirrors/da/data-science-ipython-notebooks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀创宪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值