📅  最后修改于: 2023-12-03 14:45:03.727000             🧑  作者: Mango
在数据分析中,我们通常需要从大型数据集中提取子集以进行分析。Pandas 库提供了各种方法来创建、选择和修改子数据框。在本文中,我们将涵盖以下内容:
要创建子数据框,我们可以使用以下方法之一:
import pandas as pd
# 创建示例数据框
data = {'name': ['Tom', 'Jerry', 'Lucy', 'Kate', 'Lily'],
'age': [21, 22, 20, 23, 24],
'country': ['USA', 'Canada', 'China', 'UK', 'Australia']}
df = pd.DataFrame(data)
# 通过列表创建子数据框
sub_df1 = df[['name', 'age']]
print(sub_df1)
# 通过 iloc 方法选择子数据框
sub_df2 = df.iloc[:, :2]
print(sub_df2)
# 通过 loc 方法选择子数据框
sub_df3 = df.loc[:, ['name', 'age']]
print(sub_df3)
Markdown:
使用列名称列表创建新的数据框
| | name | age | |---:|:-------|------:| | 0 | Tom | 21 | | 1 | Jerry | 22 | | 2 | Lucy | 20 | | 3 | Kate | 23 | | 4 | Lily | 24 |
使用 iloc 方法选择子数据框
| | name | age | |---:|:-------|------:| | 0 | Tom | 21 | | 1 | Jerry | 22 | | 2 | Lucy | 20 | | 3 | Kate | 23 | | 4 | Lily | 24 |
使用 loc 方法选择子数据框
| | name | age | |---:|:-------|------:| | 0 | Tom | 21 | | 1 | Jerry | 22 | | 2 | Lucy | 20 | | 3 | Kate | 23 | | 4 | Lily | 24 |
选择列的方法有以下几种:
# 通过名称选择列
sub_df4 = df[['name', 'country']]
print(sub_df4)
# 通过 iloc 方法选择列
sub_df5 = df.iloc[:, [0, 2]]
print(sub_df5)
# 通过 loc 方法选择列
sub_df6 = df.loc[:, ['name', 'country']]
print(sub_df6)
Markdown:
通过名称选择列
| | name | country | |---:|:-------|:----------| | 0 | Tom | USA | | 1 | Jerry | Canada | | 2 | Lucy | China | | 3 | Kate | UK | | 4 | Lily | Australia |
通过 iloc 方法选择列
| | name | country | |---:|:-------|:----------| | 0 | Tom | USA | | 1 | Jerry | Canada | | 2 | Lucy | China | | 3 | Kate | UK | | 4 | Lily | Australia |
通过 loc 方法选择列
| | name | country | |---:|:-------|:----------| | 0 | Tom | USA | | 1 | Jerry | Canada | | 2 | Lucy | China | | 3 | Kate | UK | | 4 | Lily | Australia |
选择行的方法有以下几种:
# 通过 iloc 方法选择行
sub_df7 = df.iloc[1:3, :]
print(sub_df7)
# 通过 loc 方法选择行
sub_df8 = df.loc[2:4, :]
print(sub_df8)
# 通过布尔值选择行
sub_df9 = df[df['age'] > 21]
print(sub_df9)
# 通过 query 方法选择行
sub_df10 = df.query('age > 21')
print(sub_df10)
Markdown:
使用 iloc 方法选择行
| | name | age | country | |---:|:-------|------:|:----------| | 1 | Jerry | 22 | Canada | | 2 | Lucy | 20 | China |
使用 loc 方法选择行
| | name | age | country | |---:|:-------|------:|:-------------| | 2 | Lucy | 20 | China | | 3 | Kate | 23 | UK | | 4 | Lily | 24 | Australia |
使用布尔值选择行
| | name | age | country | |---:|:-------|------:|:-------------| | 1 | Jerry | 22 | Canada | | 3 | Kate | 23 | UK | | 4 | Lily | 24 | Australia |
使用 query 方法选择行
| | name | age | country | |---:|:-------|------:|:-------------| | 3 | Kate | 23 | UK | | 4 | Lily | 24 | Australia |
我们可以使用以下方法之一来筛选数据集:
# 通过 query 方法过滤
sub_df11 = df.query('age > 22 & country == "UK"')
print(sub_df11)
# 通过布尔条件过滤
sub_df12 = df[(df['age'] > 22) & (df['country'] == 'UK')]
print(sub_df12)
Markdown:
使用 query 方法过滤
| | name | age | country | |---:|:-------|------:|:----------| | 3 | Kate | 23 | UK |
使用布尔条件过滤
| | name | age | country | |---:|:-------|------:|:----------| | 3 | Kate | 23 | UK |
以下是一些常见的修改数据框的方法:
# 添加一列
df['gender'] = ['M', 'M', 'F', 'F', 'F']
print(df)
# 添加一行
new_row = {'name': 'Jerry', 'age': 21, 'country': 'USA', 'gender': 'M'}
df = df.append(new_row, ignore_index=True)
print(df)
# 修改元素值
df.loc[0, 'name'] = 'John'
print(df)
Markdown:
添加一列
| | name | age | country | gender | |---:|:-------|------:|:-------------|:---------| | 0 | John | 21 | USA | M | | 1 | Jerry | 22 | Canada | M | | 2 | Lucy | 20 | China | F | | 3 | Kate | 23 | UK | F | | 4 | Lily | 24 | Australia | F |
添加一行
| | name | age | country | gender | |---:|:-------|------:|:-------------|:---------| | 0 | John | 21 | USA | M | | 1 | Jerry | 22 | Canada | M | | 2 | Lucy | 20 | China | F | | 3 | Kate | 23 | UK | F | | 4 | Lily | 24 | Australia | F | | 5 | Jerry | 21 | USA | M |
修改元素值
| | name | age | country | gender | |---:|:-------|------:|:-------------|:---------| | 0 | John | 21 | USA | M | | 1 | Jerry | 22 | Canada | M | | 2 | Lucy | 20 | China | F | | 3 | Kate | 23 | UK | F | | 4 | Lily | 24 | Australia | F | | 5 | Jerry | 21 | USA | M |
总结
以上是一些 Pandas 子数据框的基本操作,包括创建子数据框、选择列和行、过滤和修改数据框。掌握这些技巧将使我们更有效地使用 Pandas 进行数据分析。