大家好,我是Mr数据杨,今天我们就来谈谈Python中的数据访问和修改。
首先,你们一定都听过《三国演义》吧,里面的人物和事情其实就像我们Python中的数据。比如曹操就像我们的数据元素,他的性格特点、军事才能等就像我们用访问器获取的数据,我们可以通过这些数据更好地了解他。然后,如果我们想要更改曹操的某些信息,比如他手下的将领数量或所占领的城市,那就像是我们使用访问器设置数据。
接下来是插入和删除数据。想象一下,你是曹操,你想要招揽一些新的谋士或将领,那么你就需要在你的名单中添加他们,这就像是我们插入数据。而如果有人背叛了你,你可能就需要从你的名单中删除他,这就像我们删除数据。
同样的如果你想扩大你的领土,你可能需要插入新的城市,也就是我们插入新的列。反之,如果你失去了一些城市,那么你可能需要删除一些列。
希望以上的解释能够帮助你们更好地理解Python中的数据操作,让我们一起深入这个数据操作的三国世界,去更好地了解Python吧!
文章目录
- 访问和修改数据
- 使用访问器获取数据
- 使用访问器设置数据
- 插入和删除数据
- 插入和删除行
- 插入和删除列
访问和修改数据
使用访问器获取数据
除了使用 .loc[]
访问器通过索引获取行或列的数据之外,Pandas还提供了 .iloc[]
访问器,它通过整数索引来检索行或列。
示例代码:
df.loc[10]
输出结果:
名前 阿会喃
字 -
读み -
性别 男
生年 190
登场 217
没年 225
...
酒\n興味 あり
物欲 强欲
Name: 10, dtype: object
df.iloc[0]
输出结果:
名前 阿会喃
字 -
读み -
性别 男
生年 190
登场 217
没年 225
...
酒\n興味 あり
物欲 强欲
Name: 10, dtype: object
.loc[]
和 .iloc[]
支持切片和类似NumPy的索引操作。
示例代码:
df.loc[:, '名前']
输出结果:
10 阿会喃
11 韋昭
12 伊籍
13 尹賞
14 尹大目
Name: 名前, dtype: object
df.iloc[:, 1]
输出结果:
10 阿会喃
11 韋昭
12 伊籍
13 尹賞
14 尹大目
Name: 名前, dtype: object
可以使用切片、列表或数组来获取多行或多列的数据。
示例代码:
df.loc[11:15, ['名前', '字']]
输出结果:
名前 字
11 韋昭 弘嗣
12 伊籍 機伯
13 尹賞 -
14 尹大目 -
df.iloc[1:6, [0, 1]]
输出结果:
名前 字
11 韋昭 弘嗣
12 伊籍 機伯
13 尹賞 -
14 尹大目 -
.iloc[]
可以使用与切片元组、列表和NumPy数组相同的方式跳过行和列。
示例代码:
df.iloc[1:6:2, 0]
输出结果:
11 韋昭
13 尹賞
Name: 名前, dtype: object
还可以使用Python内置的 slice()
类、numpy.s_[]
或者 pd.IndexSlice[]
。
示例代码:
df
.iloc[slice(1, 6, 2), 0]
输出结果:
11 韋昭
13 尹賞
Name: 名前, dtype: object
df.iloc[np.s_[1:6:2], 0]
输出结果:
11 韋昭
13 尹賞
Name: 名前, dtype: object
df.iloc[pd.IndexSlice[1:6:2], 0]
输出结果:
11 韋昭
13 尹賞
Name: 名前, dtype: object
使用 .loc[]
和 .iloc[]
获取特定的数据值。但是当只需要单个值时,建议使用专门的访问器 .at[]
和 .iat[]
。
示例代码:
df.at[12, '名前']
输出结果:
'伊籍'
df.iat[2, 0]
输出结果:
'伊籍'
使用访问器设置数据
可以使用访问器来修改数据,可以传递Python序列、NumPy数组或单个值来修改数据。
示例代码:
df.loc[:13, '生年'] = [40, 50, 60, 70]
df.loc[14:, '生年'] = 0
df['生年']
输出结果:
10 40
11 50
12 60
13 70
14 0
Name: 生年, dtype: int64
可以使用负索引 .iloc[]
来访问或修改数据。
示例代码:
df.iloc[:, -10] = np.array([88.0, 79.0, 81.0, 80.0, 68.0, 61.0, 84.0])
df['生年']
输出结果:
10 88.0
11 79.0
12 81.0
13 80.0
14 68.0
Name: 生年, dtype: float64
插入和删除数据
Pandas提供了几种方便的方法来插入和删除行或列。
插入和删除行
首先,创建要插入的新数据。
示例代码:
new = pd.Series(data=['Mr数据杨', 'xxx', "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"], index=df.columns)
new
输出结果:
名前 Mr数据杨
字 xxx
读み -
性别 -
生年 -
登场 -
没年 -
...
酒\n興味 -
物欲 -
dtype: object
使用 df.append()
将新数据加入DataFrame。
示例代码:
df = df.append(pd.DataFrame(new).T)
df
输出结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/994b325298f24b26938e9c
02847411bd.png)
使用 df.drop()
删除新数据。
示例代码:
df = df.drop(labels=[17])
df
输出结果:
插入和删除列
可以直接赋值来定义新列的名称和数据。
示例代码:
df['temp_data'] = np.array([71.0, 95.0, 88.0, 79.0, 91.0])
df
输出结果:
可以将新列的所有值设置为0。
示例代码:
df['temp_data'] = 0.0
df
输出结果:
使用 .insert()
在指定位置插入列数据。
示例代码:
df.insert(loc=4, column='new_temp_data', value=np.array([86.0, 81.0, 78.0, 88.0, 74.0, 70.0, 81.0]))
df
输出结果:
使用 del
关键字删除一列或多列。
示例代码:
del df['new_temp_data']
df
输出结果:
使用 df.drop()
删除列。
示例代码:
df = df.drop(labels='age', axis=1)
df
输出结果: