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 数据选取、修改和切片的常用方法,这些方法可以帮助我们快速有效地进行数据分析和数据可视化,优化我们的工作效率。