pandas php,Pandas 修改数据

Pandas 修改数据

1. 前言

通过前几节的学习,我们掌握了 Pandas 查询、新增和删除数据的操作,基本上能够进行大部分的数据处理操作,而作为数据处理中另外一个重要的内容 —— 修改操作,Pandas 中又是如何进行的呢?

本小节我将讲述 Pandas 对数据的修改操作,包括了对索引值的修改,以及对数据值的修改操作,通过这两板块的内容,使大家能够根据自己的需要,灵活的变更数据内容。

2. 修改索引值

很多时候我们创建的数据,或者解析出来的数据,索引都是默认生成的,而我们为了方便数据的分析,需要对数据的行索引值或者列索引值进行修改,那这里 Pandas 中提供了一个函数 rename (self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’),该函数通过灵活的参数设置,能够高效便捷的进行索引值的修改,下面我们列举了常用的几个参数说明:

参数名

说明

mapper

这里是要传入的映射关系,可以是个字典或者函数

index

指定行索引

columns

指定列索引

axis

表示修改行索引(axis=0 默认)还是列索引(axis=1)

inplace

是否在原数据基础上修改,默认 inplace=False 会返回一个新的数据集

2.1 修改行索引值

# 导入pandas包

import pandas as pd

# 指定导入的文件地址

data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"

# 解析数据

data = pd.read_excel(data_path)

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

# 修改行索引和 rename({0: "aa", 2: "bb", 3: "cc"},axis=0) 等价

data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"})

print(data_res)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

aa java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

bb C 1972年 33.9 Dennis MacAlistair Ritchie

cc js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

输出解析:我们通过 index 参数指定映射关系,修改了列索引 0,2,3 的索引值为 aa,bb,cc,通过输出结果可以看出修改的效果。

2.2 修改列索引值

# 导入pandas包

import pandas as pd

# 指定导入的文件地址

data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"

# 解析数据

data = pd.read_excel(data_path)

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

# 修改行索引和 rename({0: "aa", 2: "bb", 3: "cc"},axis=0) 等价

data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"})

print(data_res)

# 修改列索引和 rename({"编程语言": "bcyy", "价格": "jiage"},axis=1) 等价

data_res=data.rename(columns={"编程语言": "bcyy", "价格": "jiage"})

print(data_res)

# --- 输出结果 ---

bcyy 推出时间 jiage 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

输出解析:我们这里通过 columns 指定了映射关系,将列索引值编程语言和价格分别修改为 bcyy 和 jiage ,通过输出结果可以看到修改的效果。

当然如果我们同时设置 index 和 columns 的映射关系,则会同时修改对应的索引值:

# 修改列索引和 rename({"编程语言": "bcyy", "价格": "jiage"},axis=1) 等价

data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"},columns={"编程语言": "bcyy", "价格": "jiage"})

print(data_res)

# --- 输出结果 ---

bcyy 推出时间 jiage 主要创始人

aa java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

bb C 1972年 33.9 Dennis MacAlistair Ritchie

cc js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

3. 修改数据值

3.1 修改单个数据值

修改单个数据值,是通过查询函数获取到某个数据,然后修改这个数据的内容,可以用函数 at []、iat []、loc []、iloc [],但要注意不同的函数所传递参数的不同,下面我们列举这四个函数的不同之处:

函数

说明

loc[]

只能使用标签索引,不能使用整数索引,通过标签索引切边进行筛选时

iloc[]

只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时

at[]

只能使用标签索引,使用时必须输入两个参数,即行索引和列索引

iat[]

只能使用整数索引,使用时必须输入两个参数,即行索引和列索引

虽然四种函数都能获取单个数据值,进而进行修改,但从运行速度上四种方法从高到底分别为: iat []、at []、iloc []、loc [],这里我们选择 iat [] 演示对单个数据值的修改操作:

# 导入pandas包

import pandas as pd

# 指定导入的文件地址

data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"

# 解析数据

data = pd.read_excel(data_path)

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

# 这里我们对 第2行,第3列进行数据修改

data.iat[1,2]=3432

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 3432.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

输出解析:我们通过 iat [] 对第 2 行,第 3 列数据进行修改,通过输出结果可看到原数据值为 67.0,这里被修改 3432.0

3.2 修改某类数据值

有时候我们需要对数据集中的一类数据进行修改,比如我们要将所有的 “1995 年” 换成字符串 “2000 年”,这时我们就需要用到函数 replace (to_replace=None,value=None……),该函数的两个核心参数 to_replace 表示要被替换的数据,value 是替换后的数据,该函数修改后,会返回新的数据集,不会影响到原数据。

# 导入pandas包

import pandas as pd

# 指定导入的文件地址

data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"

# 解析数据

data = pd.read_excel(data_path)

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

# 这里我们对 将所有的“1995年”数据修改为“2000年”

new_data=data.replace("1995年","2000年")

print(new_data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 2000年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 2000年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

输出解析:这里可以看到原数据中所有的 “1995 年” 都被改成了 “2000 年”。这里我们要被修改的值也可以传入列表的形式,指定多个被修改的数据值,如下面代码所示:

# 这里我们传入list数据集,对这几个数据进行修改为“2000年”

new_data=data.replace(["1995年","2012年","1983年"],"2000年")

print(new_data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 2000年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 2000年 59.5 Brendan Eich

4 php 2000年 69.9 Rasmus Lerdorf

5 C++ 2000年 75.0 Bjarne Stroustrup

输出解析:通过输出结果可以看到,原数据集中的 1995 年,2012 年,1983 年都被修改为了 “2000 年”。

3.2 修改某区域数据值

我们还可以对某些行或列的数据进行统一的修改操作,这里我们可以使用函数 loc () 或 iloc () ,只是要注意传入的参数不同。下面我们使用 iloc () 修改整行或整列的数据操作:

# 导入pandas包

import pandas as pd

# 指定导入的文件地址

data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"

# 解析数据

data = pd.read_excel(data_path)

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 1995年 45.6 James Gosling

1 python 1991年 67.0 Guido van Rossum

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75.0 Bjarne Stroustrup

# 这里我们创建了一个新的数据集

data_new= pd.DataFrame([["11","22","33.5","44"], ["55","66","77.7","88"]],

columns=["编程语言","推出时间","价格","主要创始人"])

data.iloc[[0,1]]=data_new

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 11 22 33.5 44

1 55 66 77.7 88

2 C 1972年 33.9 Dennis MacAlistair Ritchie

3 js 1995年 59.5 Brendan Eich

4 php 2012年 69.9 Rasmus Lerdorf

5 C++ 1983年 75 Bjarne Stroustrup

输出解析:我们创建了一个新的数据集,用来替换原数据第 1 行和第 2 行的数据,通过输出结果可以看到被修改后的数据集。

下面我们来修改一整列的数据:

# 创建了一个Series对象

new_series=pd.Series(["11","22","3","44","55","66"] )

data.iloc[:,[1]]=new_series

print(data)

# --- 输出结果 ---

编程语言 推出时间 价格 主要创始人

0 java 11 45.6 James Gosling

1 python 22 67.0 Guido van Rossum

2 C 3 33.9 Dennis MacAlistair Ritchie

3 js 44 59.5 Brendan Eich

4 php 55 69.9 Rasmus Lerdorf

5 C++ 66 75.0 Bjarne Stroustrup

输出解析:这里我们新建一个 Series 对象用来替换第二列的数据值,通过输出结果可以看到为我们第二列的数据值被修改的结果。

4. 小结

本节课我们主要学习了如何修改数据集中的索引和数据值,并详细介绍了对行索引和列索引的修改,细化了数据值修改的几种方式,包括单个数据值的修改,一类数据的修改和某个区域的数据修改。本节课程的重点如下:

修改索引值 rename () 函数的使用;

修改数据使用 iat [] 函数,replace () 函数 ,iloc () 函数操作的方法。

bbb268b59baa564b74919be8b73dd8d1.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值