Как да премахна извънредни стойности в набор от данни, който има както категорични, така и числени данни?

Опитвам се да премахна отклоненията от колоната „Цена“ в набор от данни. Успях да създам рамка от данни на извънредните стойности със съответните им стойности в други колони, но се боря да изключа тези записи от основния набор от данни. Как да направя това?

това е кодът, който използвах за създаване на новата рамка с данни, посочена по-горе:

lower_limit = pq1 - 1.5 *iqr
upper_limit = pq3 + 1.5 *iqr

newdf = df[((df['price'] < lower_limit) | (df['price'] > upper_limit))]
newdf

Опитах се да използвам знака тилда (~), преди да задам булевите операции, но това не даде желаните резултати.


person Cedric Bansah    schedule 24.09.2020    source източник
comment
Опитайте df.loc[... вместо df[... и прочетете документите на pandas относно индексирането   -  person Griffin    schedule 24.09.2020


Отговори (2)


Обратното може да бъде:

newdf = df[((df['price'] > lower_limit) & (df['price'] < upper_limit))]
person gtomer    schedule 24.09.2020

Можете да използвате атрибута .loc, за да получите извадка от вашата оригинална рамка с данни, която изключва елементите на рамката с данни newdf чрез индексите:

lower_limit = pq1 - 1.5 *iqr
upper_limit = pq3 + 1.5 *iqr

newdf = df[((df['price'] < lower_limit) | (df['price'] > upper_limit))]
df_not_outliers = df.loc[set(df.index) - set(newdf.index)]
person Galo Castillo    schedule 25.09.2020