2017-11-10 4 views
-2

珍しい値のデータを保持するデータフレームからレコードを削除する方法
、平均から3標準偏差の値ですか?Python Pandas:不合理な値を持つレコードを削除する方法

例:

row0 2 3 4 3 
row1 2 3 4 3 
row2 2 3 432 3 
row3 2 3 4 3 

私は理由値[432]ROW2を削除したいです。

ありがとうございます。

+0

データをお願いします。特定のケースのデータセットを作成するのは高価です – Dark

+0

サンプルデータセットであなたの質問を編集し、期待される出力 – pyd

答えて

0
import numpy as np 
import pandas as pd 
data = np.array([['','Col1','Col2'], 
       ['Row1',1,2], 
       ['Row2',3,4]]) 
df= pd.DataFrame(data=data[1:,1:], 
        index=data[1:,0], 
        columns=data[0,1:]) 
#Convert to numeric     
df1=df.apply(pd.to_numeric) 
#Calculate the mean and STD 
mean=df1.stack().mean() 
std=df1.stack().std() 
df1["Col3"]=mean+(std*3) 
df1["Col4"]=mean-(std*3) 
df1.Col3 = df1.Col3.astype(int) 
df1.Col4 = df1.Col4.astype(int) 
#See whether the values fall between the mean+(3*STD) and mean-(3*STD) 
df1['Between1'] = (df1['Col1'] > df1['Col4']) & (df1['Col1'] < df1['Col3']) 
df1['Between2'] = (df1['Col2'] > df1['Col4']) & (df1['Col2'] < df1['Col3']) 
df1.head() 
#Keep only the rows that are True 
df1 = df1[df1['Between1'] == True] 
df1 = df1[df1['Between2'] == True] 
df1.head() 
+0

うまくいきました、ありがとう! –

関連する問題