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数据分析的一些启示和灵感。
极客笔记