pandas 数据索引与选取的实现方法

  • Post category:Python

pandas数据索引与选取的实现方法

在pandas中,我们可以使用不同的方法进行数据的索引和选取,包括基本索引、布尔索引、位置索引和高级索引等。

基本索引

基本索引是指通过列名称或行标签进行数据选取的方法。

  • 列选择

表格中的每一列都可以通过列名称进行选择,可以使用单个列名称、列表或切片等方式进行选择。例如,我们有一个包含学生考试成绩的表格,其中列名称为“姓名”、“科目”、“成绩”,如果要选择“姓名”和“成绩”两列数据,可以使用以下代码:

import pandas as pd

df = pd.read_csv('score.csv')   # 读取含有成绩信息的csv文件

# 选择“姓名”和“成绩”两列
df[['姓名', '成绩']]
  • 行选择

表格中的每一行都可以通过行索引或行标签进行选择,使用单个行标签、列表或切片等方式进行选择。例如,我们仍然使用上面的成绩表格,如果要选择前5个学生的信息,可以使用以下代码:

# 选择前5行
df.head(5)

布尔索引

布尔索引是指通过布尔条件进行数据选取的方法。

  • 简单的布尔索引

如果我们想要选择成绩大于80分的数据,可以使用布尔条件进行筛选。

# 选择成绩大于80分的学生
df[df['成绩']>80]
  • 复合条件布尔索引

如果我们想要选择某个科目成绩大于80分且总成绩大于200分的学生数据,可以使用如下代码:

# 查找选定科目成绩大于80的学生,再进行总成绩判断
df[(df['英语']>80)&(df['数学']>80)&(df['总分']>200)]

位置索引

位置索引是指通过行号和列号进行数据选取的方法。

  • 使用iloc方法进行选择

iloc方法可以使用行号和列号进行数据的选取。

# 选择第3列第4行元素
df.iloc[3, 4]

高级索引

高级索引包括了使用条件查询、使用query或loc方法进行选择。

  • 使用query方法进行选择

query是一种比较方便的高级索引方法,其可以使用字符串形式的查询语句进行选择。

# 使用query查询
df.query('数学>80 and 英语>80')
  • 使用loc方法进行选择

loc方法可以根据条件查询或标签名称进行多条件选择。

# 使用loc查询
df.loc[df['总分']>200, ['姓名', '总分']]

示例说明

下面将通过示例说明以上介绍的数据索引和选取方法。

示例一

假设我们有一份包含全国省份、城市、人口等信息的数据(省份和城市作为多级索引),其中部分数据如下:

省份 城市 人口
北京 北京 2171
天津 1560
山东 济南 728
青岛 921

现在,我们需要统计内陆省市的人口总数。这个问题可以使用布尔索引和位置索引两种方法进行处理。

  • 布尔索引
# 使用布尔索引进行筛选
df.loc[df.index.get_level_values('省份') != '沿海', '人口'].sum()
  • 位置索引
# 使用位置索引进行筛选
df.iloc[[1, 2], [2]].sum()

示例二

假设我们有一份名为sample.csv的数据,其中包含了姓名、年龄、性别等信息。

姓名 年龄 性别
A 23 M
B 28 F
C 25 M
D 24 F

现在,我们想要查找年龄25岁以下的女性。

这个问题可以使用query和基本索引两种方法进行处理。

  • query方法
# 使用query方法查询
df.query('年龄 < 25 and 性别 == "F"')
  • 基本索引
# 使用基本索引查询
df[(df['年龄']<25) & (df['性别']=='F')]

在以上两个示例中,我们使用了不同的索引方法进行数据的筛选和选择,这些方法可以根据不同的场景和需要选择最适合的方法进行处理,以提高代码的效率和可读性。