我正在进行一个数据清理项目,在这个项目中,我必须删除price_per_sqft
的一些异常值。。因此,我使用了groupby
函数,通过统计,该公式创建了一个没有异常值的数据帧,并将concat
与输出数据帧。。。
但在输出中,这种类型的单词会返回位置名称,所以我如何才能获得一个干净的位置名称而不是这个。。?
代码:
def remove_pps_outliers(df):
df_out = pd.DataFrame()
for key, subdf in df.groupby('location'):
m = np.mean(subdf.price_per_sqft)
st = np.std(subdf.price_per_sqft)
reduced_df = subdf[(subdf.price_per_sqft>(m-st)) & (subdf.price_per_sqft<=(m+st))]
df_out = pd.concat([df_out,reduced_df],ignore_index=True)
return df_out
df6 = remove_pps_outliers(df5)
df6.head()
输出:在此处输入图像描述
如果没有";第一阶段";或";第一块";像这样的关键字。。。在此处输入图像描述
一个基本的修复方法是只替换不需要的字符。幸运的是,在本例中,'1st Phase '
和'1st Block '
都包含10个字符,因此您可以使用:
df6['location'] = df6['location'].str.slice_replace(0,10,'')