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