2024-09-30 14:23:20 发布
网友
我是Python新手,我想了解如何从数据集中删除0.00000的值 在上下文中,我正在处理数据集https://www.kaggle.com/ksuchris2000/oklahoma-earthquakes-and-saltwater-injection-wells
文件InjectionWells.csv的坐标中有一些值(LAT和LONG),我需要删除这些值,但我不知道具体如何删除。这样我就可以用X经度和Y纬度做一个散点图
我尝试了以下方法,但没有成功。你能指引我吗
LAT
LONG
.describe()
percentiles
[.25, .5, .75]
>>> pd.options.display.float_format = '{:.2f}'.format # suppress unwanted dp's >>> dat[['LAT','LONG']].describe(percentiles=[.01,.05,.1,.25,.5,.9,.95,.99]) # OR: >>> dat[dat['LAT'].between(33.97,36.96) & dat['LONG'].between(-101.80,-95.48)] LAT LONG count 11125.00 11125.00 mean 35.21 -96.85 std 2.69 7.58 min 0.00 -203.63 1% 33.97 -101.80 # < 1st percentile 5% 34.20 -99.76 10% 34.29 -98.25 25% 34.44 -97.63 50% 35.15 -97.37 90% 36.78 -95.95 95% 36.85 -95.74 99% 36.96 -95.48 # < 99th percentile max 73.99 97.70
因此,LAT和LONG值的第1-99个百分位范围为:
33.97 <= LAT <= 36.96 -101.80 <= LONG <= -95.48
apply(..., axis=1)
dat2 = dat[ dat.apply(lambda row: (33.97<=row['LAT']<= 36.96) and (-101.80<=row['LONG']<=-95.48), axis=1) ] API# Operator Operator ID WellType ... ZONE Unnamed: 18 Unnamed: 19 Unnamed: 20 0 3500300026.00 PHOENIX PETROCORP INC 19499.00 2R ... CHEROKEE NaN NaN NaN ... ... ... ... ... ... ... ... ... ... 11121 3515323507.00 SANDRIDGE EXPLORATION & PRODUCTION LLC 22281.00 2D ... MUSSELLEM, OKLAHOMA NaN NaN NaN [10760 rows x 21 columns]
注意,这已经从11125行下降到10760行。所以我们减少了365行
最后,最好检查过滤后的LAT, LONG的极值是否在您预期的范围内:
LAT, LONG
>>> dat2[['LAT','LONG']].describe(percentiles=[.01,.05,.1,.25,.5,.9,.95,.99]) LAT LONG count 10760.00 10760.00 mean 35.33 -97.25 std 0.91 1.11 min 33.97 -101.76 1% 34.08 -101.62 5% 34.21 -99.19 10% 34.30 -98.20 25% 34.44 -97.62 50% 35.13 -97.36 90% 36.77 -95.99 95% 36.83 -95.80 99% 36.93 -95.56 max 36.96 -95.49
PS第1/99百分位数没有什么神奇的。你可以自己玩describe(... percentiles)。您可以使用0.005、0.002、0.001百分位数等-您可以决定什么构成异常值
describe(... percentiles)
您可以通过将数据帧的列与单个值进行比较来创建布尔序列。然后,您可以使用该系列对数据帧进行索引,以便仅选择满足条件的行:
data = df[['LONG', 'LAT']] data = data[data['LONG'] < -75]
LAT
,LONG
感兴趣李>.describe()
接受一个参数percentiles
,它是一个列表,默认为[.25, .5, .75]
,返回第25、50和75百分位李>因此,LAT和LONG值的第1-99个百分位范围为:
apply(..., axis=1)
排除这些:注意,这已经从11125行下降到10760行。所以我们减少了365行
最后,最好检查过滤后的
LAT, LONG
的极值是否在您预期的范围内:PS第1/99百分位数没有什么神奇的。你可以自己玩
describe(... percentiles)
。您可以使用0.005、0.002、0.001百分位数等-您可以决定什么构成异常值您可以通过将数据帧的列与单个值进行比较来创建布尔序列。然后,您可以使用该系列对数据帧进行索引,以便仅选择满足条件的行:
相关问题 更多 >
编程相关推荐