0、前言:
- 在《数据分析06——Pandas中的数据抽取》中已经介绍了在Pandas中如何进行数据查找,而查找这个功能是增加修改和删除的前提。
- 首先创建一个DataFrame数据,用于后面的举例。
- 补充,在jupyter中要查看某个函数的参数详情,可以把光标放在函数上,然后按下shift+table。
import pandas as pd
data = [[109, 107, 100],
[105, 114, 135],
[98, 88, 120],
[145, 150, 130]]
name = ['刘备', '关羽', '张飞', '诸葛亮']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(
data=data,
index=name,
columns=columns)
1、增加:
- 增加列数据
df[['美术']]=[[15],[12],[13],[14]]
df[['物理', '化学']] = [[88, 88],
[79, 79],
[60, 60],
[50, 60]]
- 通过loc方法增加数据:df.loc[:, ‘物理’] = [88, 79, 60, 60] # 这种方法数据只能加在末尾
- 通过insert方法:df.insert(1, ‘物理’, [88, 79, 60, 50]) # 表示在第二列位置新加一列物理
- 增加行数据
- 给末尾增加赵云的成绩:df.loc[‘赵云’] = [100, 120, 99, 98]
- 增加多行数据:
df2 = pd.DataFrame(
{'语文': [100, 123, 138],
'数学': [120, 142, 60],
'英语': [99, 139, 99],
'物理': [105, 110, 96]},
index=['马超', '黄忠', '姜维'])
df3 = df.append(df2)
2、修改:
- 修改列索引:
- 通过属性赋值:df.columns = [‘语文’, ‘物理(上)’, ‘数学’, ‘英语’]
- 通过rename方法:
df.rename(
columns={'语文': '语文(上)',
'英语': '英语(上)'},
inplace=True)
df
- 总结:属性修改要写上所有属性,即使有的属性不用修改,而rename的方法就比较准确了,改谁写谁。
- 修改行索引:
- 通过属性赋值:df.index = [1, 2, 3, 4, 5]
df.rename(
index={
'刘备': 101,
'关羽': 102,
'张飞': 103,
'诸葛亮': 104,
'赵云': 105},
inplace=True)
- 总结:属性修改要写上所有属性,即使有的属性不用修改,而rename的方法就比较准确了,改谁写谁。
- 修改列数据:df.loc[:, ‘语文’] = [115, 108, 112, 118, 115]
- 修改行数据:df.loc[‘张飞’] = [120, 115, 109, 105]
- 修改具体的值:
- df.iloc[0, 0] = 115
- df.loc[‘张飞’, ‘语文’] = 115
3、删除:
- 删除列数据:
- df.drop(columns=‘数学’, inplace=True) # inplace表示是否修改本地数据
- df.drop(labels=‘数学’, axis=1, inplace=True)
- 删除行数据:
- df.drop(index=‘张飞’, inplace=True)
- df.drop(labels=‘张飞’, axis=0, inplace=True)
- 删除指定条件的数据
index = df[df['物理'].isin([50, 79])].index
df.drop(index=index, inplace=True)
总结:
- 抽取数据是进行增删改的基础,对于同一种需求,在pandas中实现方法很多,有时候同一个函数方法,也可以采用不同的参数实现同一种作用,所以pandas真的很灵活。