pandas 如何删掉第一行_Pandas-数据筛选

本文介绍了Pandas中如何进行数据筛选,包括根据条件筛选数据,使用&和|进行多条件判断。同时,讲解了如何使用pandas对数据进行分类打标签,以及行的查看、修改、新增和删除操作。最后,展示了如何使用groupby找到最佳销售团队。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们对 pandas 有了初步的认识,今天我们来学习一些 pandas 中更高阶的知识点。

数据筛选

还是以上一关的2019年销售数据.csv为例,我们想要筛选出那些总销售额低于平均值的销售员,同样也只要一行代码即可:

fa84e73687f2b1daf317c1c4c330b705.png

这和 NumPy 中数组的布尔索引是一样的,中括号里是筛选条件,返回值是所有符合条件的数据。df['总和'] < df['总和'].mean()的结果如下:

fb3428e7fa6551e036bce977c6962ea9.png

符合条件的为 True,不符合条件的为 False。最终df[df['总和'] < df['总和'].mean()]会去除所有结果为 False 的行,只保留下结果为 True 的。最终的返回结果如下:

f8c2c6748af6f4a2d9108d2b169452b3.png

这些人的业绩低于公司业绩的平均值,绩效不合格,需要重点关注他们,帮他们提高业绩。

我们也可以写多个条件进行判断,在 pandas 中要表示同时满足,各条件之间要用 & 符号连接。如果要表示只要满足之一,各条件之间要用 | 符号来连接。并且每个条件要用括号括起来,举个例子:

ea93a7ceb3bc5f35719e6e1641d88d9e.png

b98690b9f1a7bf9ee3b0e0f8aeb039ae.png

给数据打标签

pandas 的cut()方法常用于数据的分类和打标签,它的主要参数和用法如下:

18f1ce7bc50af372ccdf294834aab88e.png

第一个参数是要分类的列,参数 bins 是分类的方式,即分类区间。默认是左开右闭,上面的例子中表示按 (0, 1000](1000, 2000](2000, 3000] 分为三组。如果你想要左闭右开的方式,可以再添加一个参数 right=False

最后的参数 labels 分别对应了这三组的标签名。即 (0, 1000] 表示不合格,(1000, 2000] 表示良好,(2000, 3000] 表示优秀。

44bda0ea17564bbc34c77d20afb5484c.png

应用到我们的例子当中,需要按平均值来分类,对应的代码如下:

b7c00f3e2bc42c367de0136e5d5e2184.png

调用head()方法查看上述的前 5 条结果,显示如下:

0aef6b8541c2db0c35896f860dd5a1b8.png

绩效分打好了,我们还需要将其作为一列添加到表格当中,方法如下:

022d9fae9b81ecf77fc14ba2833a3a4b.png

我们调用print(df.head())来查看一下效果。

8d76a87be5adb7ad6377d1b8b40f009b.png

可以看到,使用 pandas,只要一行代码就完成了对员工的绩效评分。

之前我们都是对列进行操作,接下来我们一起看看关于行的操作。

行的查改增删

首先,我们用 DataFrame 构建一个简单的表格:

c9d5edfeed5d4d3a664091888ac8a97f.png

然后我们能得到下面这样的表格:

d10fc9b1a8befa91a48640bc42b29932.png

列是通过列名来获取的,同理,行是通过最左边的索引来获取。在不指定的情况下,索引值默认从 0 开始依次递增。我们可以使用loc基于索引进行表格行的查改增删。

查看行

以查看上面表格中第一行的数据为例,代码如下:

d779c1fa534f73730c0865051a4e3a67.png

注意,loc并不是一个方法,而是类似于字典。所以我们使用的是[]而不是(),这里千万不要用错。这样我们就能得到第一行的数据,运行结果如下:

dd9a25254db463bf5c31af52f91b46fd.png

17c446544020d254f34aa18070cc414d.png

如果你在构建表格时像下面这样单独设置了索引,同样也可以用对应的索引值来获取表格行的数据:

c44f0d39c2fb76454327d512e65822e9.png

上面的代码中,表格的索引是日期。我们查看对应日期的数据时就需要将对应的日期作为索引,运行结果如下:

554f4155c1839c5aaa603f739ba9ca58.png

除了第一个参数索引外,还支持第二个参数列名。即同时基于行和列获取指定的数据,比如:

e97c5a7bd3d6b815b594fba062662119.png

上面代码的意思是获取行为 0 且列为辣条的数据,运行的结果为 14。

87b2f41c5b0939c4faf5e94c0b65a699.png

同时,行和列还支持分片的写法,我们来看几个例子:

d22806656a3f5a5f9540241c0bb24084.png

需要注意的是,这里的分片和 Python 中列表的分片不太一样,这里的分片结果是前后都包含的,而列表分片只包含前面不包含后面。上面代码的运行结果分别如下:

06dae087da0deb4b1676f85f1df2b137.png

你也可以通过省略冒号前后的内容来实现全选,例如:df.loc[:, '辣条':'可乐'],这一点和列表的分片是一样的。

loc 同时也支持布尔索引来进行数据的筛选,比如获取辣条销量大于 15 的数据:

0433ec7821a9444f8c9601b809bc8a72.png

上面的写法等价于df[df['辣条'] > 15],不同之处在于loc还能通过第二个参数筛选出只想查看的列,比如:

c15bf8df6c877c332d69f32b3349422c.png

ad543f582599370f6ab356161b231741.png

多条件筛选的写法前面说过,这里不再赘述。最后来总结一下loc的语法:

dcf52d306939e90e9e864b2a9d7f2015.png

除了比较常用的 loc 之外,我们还能使用 iloc。用法和 loc 一样,区别在于 loc 使用的参数是索引,而 iloc 的参数是位置,即第几行。

因此,在不指定索引的情况下,lociloc 的效果是一样的。但当单独指定了索引,我们想获取前 3 行数据时可以像下面这样写:

90a6d943348bcd6d0791852390ec4abb.png

索引变成了日期,想要按位置获取数据的话只能使用iloc,这时如果使用df.loc[:3]将会报错。上面的代码运行结果如下:

799a10eb7985ca5abfeacf7efc63ebd3.png

注意,iloc的分片和 Python 的列表分片一样,要和loc的分片规则区分开来。

修改行

假设某行的数据有问题,我们需要进行修正。修改起来同样也很简单,直接赋值即可。这里分为两种情况:

  1. 赋值为一个数字;
  2. 赋值为长度和列数相等列表。

c8e2b2e7a5b6bcacc3c2026c7bf58e16.png

对于第一种情况,这一行所有的数据都会被修改成同样的数字:

dc8440419ac97f7bbee4308da30ac0b7.png

c273f0546f93b2a87bd4c705895d12bd.png

第二种情况则是按列表顺序修改对应的列:

110bd8b991890d1e5e1401a6afc58279.png

e0084496ec896248e378682cd2d3013b.png

c49003d7f0944293537711860f24ab1d.png

当然你也可以使用例如df.loc[0, '辣条'] = 23定位到行和列来修改特定的数据。

新增行

你应该也发现了,行和列的基本操作都是类似的,只是具体的方式不同。新增行也是如此,只需传入表格中不存在的索引即可。

c2b9eec3970843dddb87803b8dc5e656.png

68e6da9e5db8f9a6068b312214ad1b00.png

20fadeaeeeafe76a27efb070250693e5.png

删除行

删除行和删除列一样,都是使用drop()方法。删除列的使用传入了axis=1表示对列进行删除,axis默认为 0,因此删除行时省略axis参数即可。

fe1e8ff461ed0fc1cb9e3f16ffce0e2c.png

a1f7a244199ce21a0bf0441c778c2f8d.png

在前面的案例中,公司老板嘉奖完最佳销售员工后,想知道哪个团队的总销售额最高,再给最佳销售团队颁个奖。这个任务对 pandas 来说也是小菜一碟,我们一起来看看如何解决。

最佳销售团队

pandas 提供了groupby()方法用于数据的分组,第一个参数用于指定按哪一列进行分组。我们要按团队分组就可以像下面这样写:

fd2e84834bb280c9d7d87697512f0078.png

但仅仅进行分组是没有结果的,还需要调用max()min()mean()sum()等方法进行分组后的计算。要找出最佳销售团队的话,就需要对其求和,即调用sum()方法。

5e1000102a63f67713df5791fed8c094.png

分组统计后的结果如下:

06e0d24a89f1de539a94a4773231578b.png

pandas 自动帮我们对第一到第四季度以及总和的销售额进行了求和,能很清晰地看出每个团队的销售情况。

a4164cda1b89c26f7b4355cb7742ab68.png

我们再对它按总和排个序来找到最佳销售团队:

ecf054b8e08374fc4369a0dd653f42a0.png

0b9c8de2c56c7bd4fc794d8f960638fc.png

可以看到,A 团队是最佳销售团队,而 C 团队则销售额垫底。

我们还能调用 mean() 方法查看各个团队的平均销售额:

1654377fe1d9d0b9c0f8ecc2511fa3f4.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值