私はパンダDF
で働いているとプロパティには、次のされている、外れ値関数を入力する前にパンダのDataFrameで外れ値の境界を選ぶには?
df.info()
版画、
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6661 entries, 0 to 6660
Data columns (total 4 columns):
currency 6661 non-null object
port 6661 non-null object
supplier_id 6661 non-null int64
value 6661 non-null float64
dtypes: float64(1), int64(1), object(2)
memory usage: 260.2+ KB
None
df.columns.values
版画、
[u'currency' u'port' u'supplier_id' u'value']
データは前のようでしたcountry
とoutlier
欄を追加すると、
currency port supplier_id value
0 USD CNAQG 35 118.66
1 USD CNAQG 19 120.83
2 USD CNAQG 49 86.83
3 USD CNAQG 54 112.15
4 USD CNAQG 113 113.60
5 USD CNAQG 5 114.32
6 USD CNAQG 55 111.43
7 USD CNAQG 81 117.22
8 USD CNAQG 2 111.43
9 USD CNAQG 10 119.39
10 USD CNAQG 56 104.91
11 USD CNAQG 14 119.39
12 USD CNAQG 4 115.77
13 USD CNAQG 7 119.39
14 USD CNAQG 74 127.34
15 USD CNAQG 15 112.15
16 USD CNAQG 149 88.27
17 USD CNAQG 20 144.71
18 USD CNAQG 231 119.39
19 USD CNBIH 19 140.00
私は、外れ値を定義するための正しい値を選択する方法
CURRENCIES_DIC = {'CN':'CHINA', 'US':'USA'}
LOW_Q = 0.05
HIGH_Q = 0.95
# mark the data for respective country as outlier
def calculate_outliers(df):
df['country'] = df.port.str[:2].map(CURRENCIES_DIC)
df['outlier'] = 0
for c in df.country.unique():
q = df.value[df.country==c].quantile([LOW_Q, HIGH_Q])
df.loc[df.index[df.country==c], 'outlier'] = (df.value[df.country==c].apply(lambda x: 1 if x<q[LOW_Q] or x>q[HIGH_Q] else 0))
return df
- 、下使用し、上位四分位
0.05
と0.95
それぞれと外れ値を除外するために式を使うのか? それぞれの目的のために異常値を定義する良い方法はありますか?
私は別の式を参照してください
df[np.abs(df.Data-df.Data.mean())<=(3*df.Data.std())] #keep only the ones that are within +3 to -3 standard deviations in the column 'Data'.
それを使用する方が良いですか?私の意見で
これは、コードをリファクタリングするためにあなたの非常に親切です。 – Arefe