Skip to content

Instantly share code, notes, and snippets.

@s1rat-dev
Created February 24, 2021 19:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save s1rat-dev/aa6026fb3d31015cec2aed2a417b0f98 to your computer and use it in GitHub Desktop.
Save s1rat-dev/aa6026fb3d31015cec2aed2a417b0f98 to your computer and use it in GitHub Desktop.
[PYTHON] Kayıp veya bozuk veri analizi üzerine işlemler, (isnull,notnull,drop,dropna,fillna)
import pandas as pd
import numpy as np
data = np.random.randint(10,100,15).reshape(5,3)
df = pd.DataFrame(data,index=['a','c','e','f','h'],columns=['Column1','Column2','Column3'])
df = df.reindex( ['a','b','c','d','e','f','g','h'])
newColumn = [np.nan,30,np.nan,51,np.nan,30,np.nan,10]
df['Column4'] = newColumn
result = df
# df.drop('Column1',axis = 1, inplace = True)
# df.drop('a',axis = 0, inplace = True)
result = df.isnull() # // df.isna()
result = df.notnull() # // df.notna()
result = df.isnull().sum()
result = df['Column1'].isnull().sum()
result = df[df['Column1'].isnull()].loc[:,'Column1']
result = df[df['Column2'].notnull()][['Column2','Column4']]
###############
# DROPNA, HOW #
###############
result = df.dropna() # axis = 0 => Row
result = df.dropna(axis = 1) # axis = 1 => Column
result = df.dropna() # Verilerimiz arasında herhangi bir NaN değer barındıran satırı siler.
'''
dropna() içerinide how attribute'u barındırır
ve default bir şekilde ilk başta 'how = any' olarak başlar
Fakat how = all kullanılırsa sadece bütün kolonlorda NaN olan değerleri barındıran satır silinir.
'''
result = df.dropna(how= 'all')
##############
# SUBSET #
##############
# Örneğin ben sadece ilk iki kolondaki veri kaybının olup olmadığına bakıyorum,
# yani ilk iki kolonda veri kaybı yoksa diğerlerinde olsa bile getir diyebilirim.
result = df.dropna(subset= ['Column1','Column2'], how= 'any')
'''
Column1 Column2 Column3 Column4
a 54.0 28.0 53.0 NaN
c 81.0 72.0 47.0 NaN
e 43.0 70.0 85.0 NaN
f 45.0 71.0 99.0 30.0
h 55.0 66.0 90.0 10.0
Görüldüğü gibi Column1 ve Column2 NaN olmadığı taktirde
diğer 'Column'ların değerine bakılmaz.
'''
################
# THRESH #
################
# thresh ile satır 'NaN' değeri içerse dahi, yazılan değer kadar 'NaN' olmayan
# değer varsa o satırı alır. Silmez!
# Kısaca satır en az thresh'ten sonra yazılan değer kadar değer içermeli.(ki silinmesin)
result = df.dropna(thresh = 2)
result = df.dropna(thresh = 4)
############
# FIILNA #
############
#fillna ile 'NaN' değer olan kısımları, istediğimiz değerle doldurabiliriz.
result = df.fillna(value= 'noinput')
result = df.fillna(value= 1)
'''
df.sum() => Kolonlara ayırıp her kolondaki veriyi toplar
df.sum().sum() => Bütün veriyi toplar.
df.size => Kaç veri olduğunu hesaplar.
df.isnull().sum().sum() => Toplam 'NaN' değeri sayısını verir.
df.notnull().sum().sum() => Toplam 'NaN' olmayan değerlerin sayısını verir.
'''
#──────────────────────────────────────────────────────┑
#######################################################│
#│
result = df.sum() #│
result = df.sum().sum() #│
result = df.size #│
result = df.isnull().sum().sum() #│
result = df.notnull().sum().sum() #│
#│
#######################################################│
#──────────────────────────────────────────────────────┙
def ortalama(df):
total = df.sum().sum()
size = df.notnull().sum().sum()
return total / size
result = df.fillna(value= round(ortalama(df),2))
result = df.fillna(value= int(ortalama(df)))
print(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment