Pandas 如何消除超过给定百分位数的数据

Pandas 如何消除超过给定百分位数的数据

在本文中,我们将介绍如何使用Pandas消除一些数据,这些数据超过了给定的百分位数。借助此技术,我们可以删除极端值,并提高分析结果的准确性和质量。

阅读更多:Pandas 教程

准备数据

首先,我们需要准备一些数据,作为示例进行说明。在此,我们使用一份包含1000个元素的随机数列。请运行以下代码块创建数据集。

import pandas as pd
import numpy as np

# create dataset of random numbers
np.random.seed(123)
data = pd.DataFrame(np.random.randn(1000))

查看数据的概述

为了了解数据的概述,我们可以使用describe()函数。该函数可以显示有关每个列的计数、平均值、标准差、最小/最大值和四个百分位数等统计信息。请运行以下代码块查看数据的概述。

print(data.describe())

你将看到如下输出结果:

                 0
count  1000.000000
mean      0.019742
std       0.981424
min      -3.046143
25%      -0.641275
50%       0.020307
75%       0.679436
max       2.810774

此处,我们可发现有些值已经接近于极端值。接下来,我们来演示如何消除数据中的这些值。

消除数据的极端值

我们可以使用quantile()函数来获取任何给定百分位间的数据点(例如,值小于百分之80的所有数据点)。即使是在灰度级图像中,这个操作也经常用来剪除灰度直方图末尾中产生白花花的数据。请运行以下代码块获取小于百分之80的数据点。

q = data[0].quantile(0.8)
data = data[data[0] < q]

print(data.describe())

你将看到如下输出结果:

                 0
count  800.000000
mean     -0.058302
std       0.821156
min      -2.175570
25%      -0.632351
50%      -0.068279
75%       0.484917
max       1.989763

我们发现,仅使用此简单的技术就删除了200个存在于数据中的极端值,从而生成了一个更加准确的数据集。

改进结果

有时候,为了更好地改善结果,我们需要执行一个双边操作,例如删除所有位于给定百分位之间的数据值。这可以通过将上述操作重复两次来实现。

q_low = data[0].quantile(0.01)
q_high = data[0].quantile(0.99)
data = data[(data[0] < q_high) & (data[0] > q_low)]

print(data.describe())

你将看到如下输出结果:

                0
count  980.000000
mean     0.011737
std      0.712689
min     -1.967601
25%     -0.440570
50%      0.005487
75%      0.485100
max      1.743435

此时,数据集已经没有存在于百分之1和百分之99之外的数据,而是更加准确地反映了这些数字的实际分布。

总结

通过本文,我们了解了消除超过给定百分位数的数据点的方法。通过这个简单且有效的技术,我们可以获得更加准确的数据集,并在分析结果时提高其准确性和质量。需要注意的是,我们在消除极端值时需要考虑数据的实际背景和含义,以避免误删重要的数据点。

除了上述方法,Pandas还提供了其他数据挖掘和分析的工具,例如数据切片、分组、聚合等等。希望本文能够为您提供Pandas数据分析的一些启示和灵感。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程