1. Pandas DataFrame
中的数据访问和修改
Pandas 中的 DataFrame
是一种二维表格数据结构,类似于电子表格或数据库表格。在 DataFrame
中,你可以存储不同类型的数据(如数字、字符串等)。以下是关于如何访问和修改 DataFrame
中数据的常见方法:
1. 创建一个 DataFrame
首先,我们可以通过多种方式创建一个 DataFrame
:
import pandas as pd
# 从字典创建 DataFrame
data = {
'Name': ['Tom', 'Jerry', 'Mickey'],
'Age': [20, 22, 23],
'Score': [85, 90, 88]
}
df = pd.DataFrame(data)
2. 访问 DataFrame
中的数据
(1) 按列访问
每一列可以像访问字典的值一样通过列名访问:
# 访问单独的一列
df['Name']
(2) 按行访问
可以使用 .iloc[]
或 .loc[]
来按行访问数据。
.iloc[]
是基于位置(索引)访问数据。.loc[]
是基于标签(行名)访问数据。
# 按位置访问第一行
df.iloc[0]
# 按标签(行名)访问第一行,假设有索引
df.loc[0] # 如果没有自定义索引,默认索引为0、1、2...
(3) 按行列访问特定单元格
使用 .loc[]
或 .iloc[]
结合行和列标签来获取单元格的值:
# 访问特定的行列值
df.loc[0, 'Name'] # 按标签方式
df.iloc[0, 0] # 按位置方式
3. 修改 DataFrame
中的数据
(1) 修改单元格的值
可以直接通过 .loc[]
或 .iloc[]
修改某个单元格的值:
# 修改第一行第一列的值
df.loc[0, 'Age'] = 21
(2) 修改整个列
如果你想修改整列数据,可以直接通过列名赋新值:
# 修改整个 "Score" 列
df['Score'] = [90, 92, 94]
(3) 修改整行
你也可以修改整行的数据:
# 修改第二行的所有数据
df.loc[1] = ['Jerry', 23, 95]
4. 添加/删除列
(1) 添加新列
你可以通过给 DataFrame
添加一个新的列来扩展它:
# 添加一个新列 "Grade"
df['Grade'] = ['A', 'B', 'A']
(2) 删除列
使用 drop()
方法删除列:
# 删除 "Grade" 列
df = df.drop('Grade', axis=1)
5. 过滤数据
你可以通过条件来过滤数据:
# 筛选出 Age 大于 21 的行
df_filtered = df[df['Age'] > 21]
总结
- 按列访问:
df['Column Name']
- 按行访问:
df.iloc[]
(按位置)、df.loc[]
(按标签) - 修改数据:通过
.loc[]
或.iloc[]
修改单个值,或者通过列名直接修改整列 - 添加列:
df['New Column'] = value
- 删除列:
df.drop('Column Name', axis=1)
这些是 Pandas DataFrame
中访问和修改数据的常见方法。如果你有任何具体问题,或者想要了解更深的内容,随时可以问我!
2. Pandas DataFrame
数据修改和访问综合实战
好的!现在我们来做一个更实战的例子,结合 Pandas DataFrame
的数据访问和修改的各个操作。我们将创建一个 DataFrame
,然后进行不同的操作,包括修改数据、添加新列、删除列等。
步骤 1: 创建一个示例 DataFrame
import pandas as pd
# 创建一个示例 DataFrame
data = {
'Name': ['Tom', 'Jerry', 'Mickey', 'Donald', 'Goofy'],
'Age': [20, 22, 23, 21, 24],
'Score': [85, 90, 88, 87, 92]
}
df = pd.DataFrame(data)
步骤 2: 访问数据
(1) 访问单列(比如“Name”列)
# 访问 Name 列
names = df['Name']
print(names)
(2) 访问单行(比如第2行)
# 访问第二行数据
second_row = df.iloc[1]
print(second_row)
(3) 访问特定单元格(比如第一行,第一列)
# 访问第一行第一列
name_first = df.loc[0, 'Name']
print(name_first)
步骤 3: 修改数据
(1) 修改单个单元格的数据(比如将第一行的 Age 修改为 21)
# 修改第一行的 Age
df.loc[0, 'Age'] = 21
print(df)
(2) 修改一列的数据(比如将 “Score” 列的所有值加10)
# 将 "Score" 列的分数加10
df['Score'] = df['Score'] + 10
print(df)
(3) 修改整行的数据(比如修改第二行)
# 修改第二行的所有数据
df.loc[1] = ['Jerry', 23, 95]
print(df)
步骤 4: 添加新列
(1) 添加一个新的列(比如“Grade”)
# 添加一个新列 Grade
df['Grade'] = ['A', 'B', 'A', 'B', 'A']
print(df)
步骤 5: 删除列
(1) 删除一个列(比如删除“Grade”列)
# 删除 Grade 列
df = df.drop('Grade', axis=1)
print(df)
步骤 6: 过滤数据
(1) 筛选出 Age 大于等于22 的数据
# 筛选出 Age 大于等于 22 的行
df_filtered = df[df['Age'] >= 22]
print(df_filtered)
步骤 7: 结合多种操作
(1) 修改、添加列、删除列并过滤数据的结合
# 修改“Score”列,使每个人的分数减去5
df['Score'] = df['Score'] - 5
# 添加一个新的列
df['Passed'] = df['Score'] >= 90
# 删除 "Age" 列
df = df.drop('Age', axis=1)
# 筛选出 Score >= 90 的数据
df_passed = df[df['Score'] >= 90]
print(df_passed)
总结
- 访问列:
df['Column Name']
- 访问行:
df.iloc[index]
或df.loc[index]
- 修改单元格数据:
df.loc[row, 'Column'] = new_value
- 修改列: 通过直接赋值给列名来修改整列
- 添加列:
df['New Column'] = values
- 删除列:
df.drop('Column Name', axis=1)
- 过滤数据: 使用条件
df[condition]
这就是一个完整的 Pandas DataFrame
数据修改和访问的实战示例。希望这些示例能帮助你更好地理解如何操作 DataFrame
数据!如果有任何问题,随时向我提问!