pandas DataFrame 数据选取,修改,切片的实现

1. pandas DataFrame 数据选取

pandas 是 Python 中的一个优秀数据分析库,用于处理各种格式的数据,有着功能强大,使用方便的特点,在数据科学领域中应用广泛。DataFrame 是 pandas 中最常用的数据结构,它类似于 Excel 表格,是由行和列组成的二维表格。选择 DataFrame 的某些数据,就需要使用选取操作。

1.1 使用 loc 和 iloc 进行选取

loc 和 iloc 是 pandas 中比较常用的用于选取 DataFrame 数据的方法,其中 loc 是基于标签的索引,iloc 是基于位置的索引。

loc 选取方式示例:

import pandas as pd

import numpy as np

# 生成示例数据

df = pd.DataFrame(np.random.randn(5, 4),

columns=['a', 'b', 'c', 'd'],

index=['one', 'two', 'three', 'four', 'five'])

# 选取第三行

print(df.loc['three'])

# 选取第三行第二列

print(df.loc['three', 'b'])

# 选取从第三行到第五行(包括第五行)的数据

print(df.loc['three':'five'])

# 选取行标签为 three 和 five,列标签为 b 和 d 的交叉数据

print(df.loc[['three', 'five'], ['b', 'd']])

iloc 选取方式示例:

# 选取第三行

print(df.iloc[2])

# 选取第三行第二列

print(df.iloc[2, 1])

# 选取从第三行到第五行(不包括第五行)的数据

print(df.iloc[2:4])

# 选取第三行和第五行(不包括第五行),第二列和第四列的交叉数据

print(df.iloc[[2, 4], [1, 3]])

需要注意的是,在使用 loc 和 iloc 选取数据时,选取的行和列都可以使用切片选取多行或多列,也可以使用列表选取指定的行或列。

1.2 使用条件进行选取

除了使用 loc 和 iloc 选取数据外,我们还可以使用条件进行选取,这也是 pandas 中比较常用的一种选取方式,可以使用 DataFrame 的布尔索引进行条件选取。

使用条件选择示例:

# 选取第一列(a列)中大于0的数据

df[df['a'] > 0]

# 选取第一列(a列)中大于0的数据,并选取第二列(b列)

df[df['a'] > 0]['b']

# 选取第一行大于0的数据

df[df.loc['one'] > 0]

2. pandas DataFrame 数据修改

在进行数据分析时,我们可能需要对 DataFrame 中的某些数据进行修改,pandas 提供了多种方法可以对 DataFrame 中的数据进行修改,下面我们就来介绍一下几种常用的方法。

2.1 修改列名

使用 columns 属性可以对 DataFrame 中的列名进行修改,只需将需要修改的列名以列表的形式传入即可,如下示例。

修改列名示例:

# 将第一列的列名 a 修改为 A

df.rename(columns={'a': 'A'}, inplace=True)

2.2 添加、修改或删除列

我们可以使用赋值的方式为 DataFrame 添加新的一列,或者修改已有列的数据,DataFrame 还提供了删除列的方法,可以使用 drop 方法实现。

添加列示例:

# 添加一个全为 1 的新列到 DataFrame 中

df['new_col'] = 1

修改列示例:

# 修改第一列数据中小于0的部分为0

df.loc[df['a'] < 0, 'a'] = 0

删除列示例:

# 删除第一列

df.drop('a', axis=1, inplace=True)

2.3 修改行数据

与修改列数据类似,我们也可以对 DataFrame 中的行数据进行修改,需要注意的是,这种修改方式常常需要使用 loc 或 iloc 选取某一行或多行的数据,再进行修改。

修改行数据示例:

# 将第一行的数据中小于0的部分改为0

df.loc['one'][df.loc['one'] < 0] = 0

3. pandas DataFrame 数据切片

在进行数据分析时,我们经常需要对 DataFrame 中的数据进行切片,pandas 提供了多种方式可以对 DataFrame 的数据进行切片,以满足不同的需求。

3.1 使用 loc 和 iloc 进行切片

与选取数据类似,我们也可以使用 loc 和 iloc 选取某一行或多行的数据,再进行修改。

使用 loc 进行切片示例:

# 选取从第三行(包括第三行)到第五行(包括第五行)的数据

df.loc['three':'five']

使用 iloc 进行切片示例:

# 选取从第三行(包括第三行)到第五行(不包括第五行)的数据

df.iloc[2:4]

3.2 使用 query 进行切片

pandas 还提供了 query 方法,可以直接使用 SQL 语法进行数据切片,这种方法对于多条件切片时非常灵活方便,具有较高的可读性。

使用 query 进行切片示例:

# 选取 a 列大于0.2,且 b 列小于-0.5 的数据

df.query('a > 0.2 and b < -0.5')

3.3 使用 isin 进行切片

isin 是 pandas 提供的一种用于判断元素是否属于某个集合的方法,往往用于筛选符合多个条件的数据。

使用 isin 进行切片示例:

# 选取 a 列中值为 0 和 1 的行数据

df[df['a'].isin([0, 1])]

总结

本文介绍了 pandas DataFrame 数据选取、修改和切片的常用方法,这些方法可以帮助我们快速有效地进行数据分析和数据可视化,优化我们的工作效率。

后端开发标签