我们在处理数据时,经常需要提取数据集的子集,无论是提取特定的列、根据条件筛选行,还是两者结合。在本指南中,我们将探索使用 Python 中的 pandas 库选择数据子集的各种方法。所有示例均使用 nba.csv 数据集。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
df.head()
输出结果
选择列
要选择 DataFrame 的子集,一种常见的方法是隔离特定的列。这有助于让我们专注于分析或可视化所需的相关数据。
示例 1: 在这个示例中,我们使用方括号表示法从数据集中仅提取一列 "Age"。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
a = df["Age"]
print(a.head())
输出结果
!Output单列输出
说明: df["Age"] 返回名为 "Age" 的列作为 pandas.Series,而 head() 默认显示前 5 行。
示例 2: 在这个示例中,我们通过传递列名列表来选择多列,即 "Name" 和 "Age"。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
df.head()
res = df[["Name", "Age"]]
print(res.head())
输出结果
!Output多列输出
说明: df[["Name", "Age"]] 使用列表来选择多列,结果仍然是仅包含指定列的 DataFrame。
选择行
要选择 DataFrame 的子集,另一种关键方法是根据条件筛选行。这允许我们只关注符合特定标准(如年龄或薪水阈值)的记录。
示例 1: 在这个示例中,我们筛选 "Age" 列的值大于 30 的行。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
df.head()
res = df[df["Age"] > 30]
print(res.head())
输出结果
!Output筛选后的行
说明: df["Age"] > 30 返回一个布尔 Series,通过 df[condition],我们仅检索条件为 True 的行。
示例 2: 在这个示例中,我们选择年龄大于 30 且薪水高于 1000 万的球员。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
df.head()
res = df[(df["Age"] > 30) & (df["Salary"] > 10000000)]
print(res.head())
输出结果
!Output复杂筛选
说明: 我们使用 & 来组合条件(逻辑与)。每个条件都包含在括号内,结果是同时满足两个条件的筛选后的 DataFrame。
同时选择行和列
要根据行和列选择 DataFrame 的特定子集,我们可以使用 .loc[] 或 .iloc[]。这允许我们应用过滤器并同时仅提取相关列,从而给予我们精确的控制。
示例 1: 在这个示例中,我们首先选择年龄大于 25 的球员名字,然后选择 "Lakers" 球队球员的姓名和年龄。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
a = df.loc[df["Age"] > 25, "Name"]
print(a.head())
b = df.loc[df["Team"] == "Lakers", ["Name", "Age"]]
print(b.head())
输出结果
!Output基于标签的筛选
说明:
- df.loc[condition, column] 允许我们选择符合条件的行和特定的列。
- 第一个查询返回年龄大于 25 的球员名字的 Series。
- 第二个查询返回属于 "Lakers" 球队的球员姓名和年龄的 DataFrame。
示例 2: 在这个示例中,我们使用行和列的索引位置选择前 5 行和前 3 列。
Python
import pandas as pd
df = pd.read_csv("nba.csv")
res = df.iloc[:5, :3]
print(res)
输出结果
!Output基于索引的切片
说明:
- df.iloc[rowindex, columnindex] 通过整数索引进行选择。
- :5 选择索引从 0 到 4 的行。
- :3 选择前 3 列(索引 0 到 2)。
使用 .head() 和 .tail() 进行选择
要快速查看从开