pandas速成笔记(2)-excel增删改查基本操作

【自取】最近整理的,有需要可以领取学习:

上篇继续,本篇演示对excel的基本增删改查操作。

一、读取excel

1.1 常规读取

假设有以下excel文件: 002.xlsx

pandas速成笔记(2)-excel增删改查基本操作

用pandas可以这样读取:

python;gutter:true; import pandas as pd</p> <p>df = pd.read_excel("data/002.xlsx") print(df.shape) print(df.columns) print(df)</p> <pre><code> 显示如下: ;gutter:true;
(6, 2)
Index([‘id’, ‘name’], dtype=’object’)
id name
0 1 A
1 2 B
2 3 C
3 4 D
4 5 E
5 6 F

解释:

第1行输出(6,2),表示这是6行2列

第2行输出的是列信息,表示有id, name这2列,都是object类型

第3行输出的就是表格数据,注意最左没有列名的这列,从0到5,如果做过数据库开发的同学,应该都知道:数据表内部通常会有一个唯一键,也称为主键索引。pandas读取的excel,如果没有指定索引,默认会按数字顺序,生成1个默认的索引,即上面的0-5。

如果在读取时,微调一下,指定索引列:

python;gutter:true; df = pd.read_excel("data/002.xlsx", index_col="id")</p> <pre><code> 输出就变成了下面这样: ;gutter:true;
(6, 1)
Index([‘name’], dtype=’object’)
name
id
1 A
2 B
3 C
4 D
5 E
6 F

可以看到id变成了现在的索引列,但是要注意一点:pandas里的索引列,跟数据库表中的主键索引,还是有不同的,它允许重复! 感兴趣的同学,可以把这个excel文件的id列,找2行,改成相同的值,比如下面这样:

pandas速成笔记(2)-excel增删改查基本操作

还是刚才的代码,输出如下:

bash;gutter:true; (6, 1) Index(['name'], dtype='object') name id 1 A 2 B 3 C 4 D 5 E 5 F</p> <pre><code> 1.2 无标题行的excel读取 有时候,可能拿到的excel,没有title,只有数据,比如这样: ![pandas速成笔记(2)-excel增删改查基本操作](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20220811/27612-20220313203701757-834535239.png) ;gutter:true;
import pandas as pd

df = pd.read_excel("data/002.xlsx")
print(df)

这时候,读出来是这样:

bash;gutter:true; 1 A 0 2 B 1 3 C 2 4 D 3 5 E 4 5 F</p> <pre><code> 第1行数据会误认为是title,可以加上header=None ;gutter:true;
import pandas as pd

df = pd.read_excel("data/002.xlsx", header=None)
print(df)

这样就正常了:

bash;gutter:true; 0 1 0 1 A 1 2 B 2 3 C 3 4 D 4 5 E 5 5 F</p> <pre><code> 1.3 左侧与上边有空行的读取 再来看一种特殊情况:数据左边和上边都有空行 ![pandas速成笔记(2)-excel增删改查基本操作](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20220811/27612-20220313204345608-26827287.png) 同样可以加一些参数 skiprows=1 , usecols="C:D"表示跳过1行,列从C至D ;gutter:true;
import pandas as pd

df = pd.read_excel("data/002.xlsx", skiprows=1, usecols="C:D", index_col="ID")
print(df)

1.4 多Sheet的读取

假设excel文件,有下面2个Sheet

pandas速成笔记(2)-excel增删改查基本操作

pandas速成笔记(2)-excel增删改查基本操作

可以通过sheet_name=xxx来指定读取

python;gutter:true; import pandas as pd</p> <p>df1 = pd.read_excel("./data/test.xlsx", sheet_name="Sheet1") df2 = pd.read_excel("./data/test.xlsx", sheet_name="Sheet2") print(df1) print("----------------------") print(df2)</p> <pre><code> 输出: ;gutter:true;
name age
0 n-1 10
1 n-2 45
2 n-3 32
3 n-4 12
4 n-5 67
5 n-6 25
Name
ID
1 A
2 B
3 C
4 D
5 E
6 F
7 H

2.2 添加一列

python;gutter:true; import pandas as pd</p> <p>df = pd.read_excel("data/002.xlsx", index_col="ID") print(df) print("----------")</p> <h1>添加一列</h1> <p>df['Age'] = range(21, 27) print(df)</p> <pre><code> 输出: ;collapse:true;;gutter:true;
Name
ID
1 A
2 B
3 C
4 D
5 E
6 F
Name Age
ID
1 A 21
2 B 22
3 C 23
4 D 24
5 E 25
6 F 26
Age
ID
1 21
2 22
6 26

三、修改指定单元格

python;gutter:true; import pandas as pd</p> <p>df = pd.read_excel("data/002.xlsx", index_col="ID") print(df) print("----------")</p> <h1>修改ID=1这行的Name值</h1> <p>df.loc[1]["Name"] = "test" print(df)</p> <pre><code> 输出: ;gutter:true;
Name
ID
1 A
2 B
3 C
4 D
5 E
6 F
id:1 name:A
id:2 name:B
id:3 name:C
id:4 name:D
id:5 name:E
id:6 name:F

五、过滤数据

pandas速成笔记(2)-excel增删改查基本操作

python;gutter:true; import pandas as pd</p> <p>df = pd.read_excel("./data/test.xlsx", index_col="id") print(df) print("---------------")</p> <h1>过滤age>30的</h1> <p>df2 = df[df["age"] > 30] print(df2) print("---------------")</p> <h1>选[1,3)行,第[1,2)列,即:第2,3行,第2列</h1> <p>df2 = df.iloc[1:3, 1:2] print(df2) print("---------------")</p> <h1>选择id在(1002,1005)之间的数据</h1> <p>df2 = df.query('1002

输出:

`bash;gutter:true;
name age register_date
id
1001 n-1 10 2001-01-01
1002 n-2 45 2018-02-03
1003 n-3 32 2000-10-23
1004 n-4 12 2006-03-15
1005 n-5 67 2022-03-01
1006 n-6 25 1999-08-12
age
id
1002 45
1003 32

Original: https://www.cnblogs.com/yjmyzz/p/pandas_turorial_2.html
Author: 菩提树下的杨过
Title: pandas速成笔记(2)-excel增删改查基本操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8409/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部