Ana içeriğe geç

Python’da Veri Temizlemeye Başlangıç Rehberi

Python’da veri temizlemenin ilkelerini keşfedin ve eksik değerler, aykırı değerler, yinelenenler ve tutarsızlıklar gibi yaygın sorunları ele alarak verilerinizi analize hazırlamanın önemini öğrenin.
· 11 dk. oku

Yapay Zeka ile Keşfedin

Veri Temizlemeye Giriş

Yeni bir veri projesine başladığınızda, elde ettiğiniz veriler çoğu zaman analiziniz için ilk andan itibaren kusursuz olmaz. Bu nedenle, her yeni projenin başında verilerinizi temizleme sürecinden geçmeniz şarttır.

Veri temizleme; hataları, aykırı değerleri ve tutarsızlıkları gidermek ve tüm verilerinizin analiziniz için uygun bir biçimde olduğundan emin olmak anlamına gelir. Çok sayıda hata içeren ya da bu veri temizleme sürecinden geçmemiş verilere kirli veri denir.

Bu adım, birçok junior veri profesyoneline isteğe bağlı gibi gelebilir; ancak emin olun ki kritiktir! Doğru bir veri temizliği olmadan modeliniz yanlış bir sonuca varabilir, grafiğiniz sahte bir eğilim gösterebilir ve istatistikleriniz ciddi biçimde hatalı olabilir.

Aşırı küçük bir veri kümesini düşünün. Siz ve arkadaşlarınız şekerleri aranızda eşit paylaşıyorsunuz ve kişi başına kaç şeker düşeceğini belirlemeniz gerekiyor. Verilerinizi aşağıdaki tabloya girdiniz.

Kişi

Şeker Sayısı

Peter

5

Sandy

20

Sandy

20

Joseph

3

Amed

12

Şimdi Şeker Sayısı sütununun ortalamasını alırsanız, kişi başına 12 şeker düşmesi gerektiği sonucuna varabilirsiniz.

Oysa her kişiye 12 şeker vermeye kalkarsanız, herkes payını almadan şekeriniz biter; çünkü tablonuzda Sandy yinelenmiş. Elinizde 60 değil sadece 40 şeker var (ve aslında 5 değil 4 kişi)!

Veri kümenizi temizlemek için zaman ayırmazsanız, analizinizin yanlış sonuca varması riski doğar.

Arkadaşlar arasında şeker paylaşırken en büyük sonuç kırılan bir arkadaşlık olabilir. Ancak iş dünyasında, veri kümenizi temizlemeyi ihmal etmek; yanlış ürünü piyasaya sürmeyi önermek, yanlış sayıda çalışan işe almak, hatalı hisseye yatırım yapmak veya bir müşteriye yanlış fiyatlandırma yapmak gibi sonuçlara yol açabilir!

Daha karmaşık analizlerde veri temizleme çok daha önemlidir. Karmaşık analizlerde sonuçların ne olması gerektiğine dair beklentiniz o kadar net olmayabilir; bu da sonuçların yanlış olduğunu fark etmeyebileceğiniz anlamına gelir.

Kapsamlı bir veri temizliği ve dikkatli testlerle bu endişeleri giderebilirsiniz. Bu eğitimde Python’da veri temizleme süreciyle ilgili bilmeniz gerekenleri ele alacağız.

Kirli Veriyi Anlamak

Verinin kirli olmasına yol açan pek çok hata ve tutarsızlık türü vardır. En yaygın türlerden bazılarını ve neden sorunlu olduklarını inceleyelim.

Eksik değerler

Eksik veri setleri son derece yaygındır. Veri kümenizde birkaç yıllık veri eksik olabilir, bir müşteri hakkında yalnızca bazı bilgiler bulunabilir ya da şirketinizin tüm ürün yelpazesini içermeyebilir.

Eksik değerler analiziniz üzerinde birden fazla etkiye sahip olabilir. Kritik verilerin büyük bölümlerinin eksik olması sonuçlarınızda yanlılığa neden olabilir. Ayrıca, bir DataFrame’deki NaN değerleri veya boş hücreler bazı Python kodlarını bozabilir; bu da modelinizi kurarken büyük hayal kırıklığı yaratabilir.

Aykırı değerler

Aykırı değerler, normun çok dışında kalan ve veriyi temsil etmeyen değerlerdir. Bir yazım hatasının ya da istisnai koşulların sonucu olabilirler. Gerçek aykırı değerleri, bilgi taşıyan uç durumlardan ayırt etmek önemlidir. Aykırı değerler sonuçlarınızı çarpıtabilir ve nihayetinde yanlış yanıtı önerebilir.

Yinelenenler

Yukarıda gördüğümüz gibi, yinelenen veri girişleri, analizinizde tek bir girdinin aşırı temsil edilmesine yol açarak yanlış sonuca götürebilir. Birden fazla kez oluşan yinelemelere ve çelişen ya da güncellenmiş bilgi içeren yinelemelere dikkat edin.

Hatalı veriler

Bazen veri kümesindeki değerler basitçe yanlıştır. Bir müşterinin adının yanlış yazımı, yanlış ürün numarası, güncel olmayan bilgiler ya da yanlış etiketlenmiş veriler olabilir.

Verinizin hatalı olup olmadığını belirlemek zaman zaman zor olabilir; bu nedenle kaynağınızın doğrulanması çok önemlidir! Unutmayın, analiziniz veriniz kadar iyidir.

Tutarsızlıklar

Tutarsızlıklar birçok biçimde ortaya çıkabilir. Yazım hatasına veya bir hataya işaret edebilecek tutarsız veri girişleri olabilir. Bir müşterinin yaşının geriye gitmesi, kimliği değişen bir bileşen ya da aynı anda iki farklı fiyata sahip bir ürün görürseniz, her şeyin doğru olduğundan emin olmak için daha yakından bakmaya değer.

Bir başka sorunlu tutarsızlık türü, verinin biçimindeki tutarsızlıktır. Farklı değerler farklı birimlerde (kilometre vs. mil vs. inç), farklı stillerde (Ay Gün, Yıl vs. Gün-Ay-Yıl), farklı veri tiplerinde (float vs. integer) ya da hatta farklı dosya türlerinde (.jpg vs. .png) raporlanabilir.

Bu tutarsızlıklar, kodunuzun değerleri doğru biçimde yorumlamasını zorlaştıracak, hatta imkansız hale getirecektir. Bu da hatalı bir analize veya kodunuzun hiç çalışmamasına yol açabilir.

Veri Keşfi ve Ön İşleme

Veri kümenizi karmaşık bir analizde kullanmadan önce onu anlamanız kritiktir. Verilerinize bu tür bir anlayış geliştirmek için veri keşfi yapmalısınız. Bu adımı, analiz öncesi analiz olarak düşünebilirsiniz.

Tablo biçimindeki bir veri kümesinde veri keşfi yapmak için tipik adımlara bakalım:

  1. Her şeyden önce, veri kümenizin kaynağına bakın ve bu kaynağın verinizin kalitesini veya güvenilirliğini etkileyebilecek herhangi bir önyargısı veya gündemi olup olmadığını belirleyin.
  2. Verinizin bağlamını ve dahili olarak hesaba katılmayan, verinizi etkilemiş olabilecek diğer etkenleri öğrenin.
  3. Kaç farklı değişkeniniz olduğunu belirleyin. Tablo biçiminde bir veri kümesinde değişkenler genellikle sütunlardır; her veri girişi ise bir satırdır.
  4. Her değişken içinde kaç farklı kategori bulunduğunu belirleyin. Örneğin, değişkenlerinizden biri Meyve Türü ise bu değişkende kaç farklı meyve türünün temsil edildiğine dair iyi bir fikriniz olmalıdır.
  5. Her sütunun özet istatistiklerine bakın; ortalama, medyan, varyans ve standart sapma dahil.
  6. Mümkünse, her değişkeni ve yapabildiğiniz kadar çok değişken çiftini görselleştirin ve grafiklere gerçekten bakın. Daha fazla araştırmaya değer kaymalar, aykırı değerler, eğilimler veya korelasyonlar olup olmadığına bakın.
  7. Veri kümeniz ilişkisel bir veritabanının parçasıysa, ilişkilere yakından bakın ve farklı tabloların birbirleriyle nasıl ilişkili olduğunu anladığınızdan emin olun.
  8. Uygun olduğunda, pandas kütüphanesinin profil oluşturma özelliğini kullanarak bir profil raporu oluşturun. Bu, veri kümeniz hakkında değerli bilgiler sağlayacaktır.

Keşif ve ön işlemenin önemi

Tüm bunlar planladığınız analiz için gereksiz gibi görünebilir; ancak bu adımları her zaman atmanız için birkaç önemli neden vardır. İlk olarak, bunu yapmak veri kümenizin sınırlarını çok iyi anlamanızı sağlar; bu da nihai analizlerinizin sonuçlarına güvenebilmeniz için esastır.

İkinci olarak, veri keşfi daha önce düşünmediğiniz önemli eğilimlere ve analizlere sizi yönlendirebilir. Bunlar, planladığınız analizlere katkı sağlayabilir veya dikkate almanız gereken karmaşıklaştırıcı bir faktör sunabilir.

Üçüncü olarak, bu ön analiz kirli veriye sahip olabileceğinize dair ilk ipucunuz olabilir. Bu, o aykırı değeri ilk kez gördüğünüz, olması gerekenden iki kat fazla kategori olduğunu fark ettiğiniz ya da veri toplama yönteminin geçen yıl ile önceki yıl arasında farklı olduğunu keşfettiğiniz an olabilir. Bunların tümü, veri kümeniz hakkında merak duymanızı teşvik etmesi gereken kritik bilgilerdir.

Veri keşfi hakkında daha fazla bilgi için DataCamp’in Python ile Veri Keşfi kursuna veya tamamen yeni başlayanlar için bu öğreticiye göz atın.

Python’da Veri Temizleme Teknikleri

Python’da veri temizleme tekniklerine, yaygın kirli veri sorunlarıyla nasıl başa çıkılacağını ele alarak ayrıntılarıyla girelim.

Eksik değerlerin ele alınması

Büyük bir veri kümesine sahip olduğunuzda kaçınılmaz olarak bir veya daha fazla kayıtta bazı alanlar eksik olacaktır. Bu yalnızca değerli verileri kaçırdığınız anlamına gelmez; NaN girişleri bazı Python işlevlerini de aksatabilir ve modelinizi hatalı hale getirebilir.

Bir eksik değer bulduğunuzda, o kaydı analizden çıkarmayı ya da yerine makul bir değer atamayı seçebilirsiniz. Veri kümeniz makul derecede küçükse, en iyi hareket tarzını belirleyebilmek için eksik değer içeren satırlara bakmanızı öneririm.

import pandas as pd # Identify rows with NaN valuesrows_with_nan = df[df.isnull().any(axis=1)] #View the rows with NaN valuesprint(rows_with_nan)

Bir kaydı silmek genellikle ilk tercih değildir; çünkü analizden potansiyel olarak değerli bilgileri çıkarır.

Ancak bazen silme en iyi seçenek olabilir; örneğin kayıt, saklamaya değecek kadar başka bilgi sunmuyorsa (sadece tarih olup değerli bilgi içermemesi gibi).

Silme, eksik değer içeren kayıtlarla başa çıkmanın en kolay yoludur. Bu nedenle zamanınız kısıtlıysa ve kaydın geri kalanı analiz için önemli değilse, NaN içeren kayıtları silmek bir seçenektir.

Pandas kütüphanesindeki .dropna() yöntemini kullanarak, NaN içeren satırları bir DataFrame’den düşebilirsiniz.

import pandas as pd # Assuming df is your DataFramedf.dropna(inplace=True)

Eksik değerleri ele almanın genel olarak tercih edilen yöntemi, makul bir değer atamaktır. Atanacak makul bir değer bulmak başlı başına bir sanattır; ancak iyi bir başlangıç noktası olabilecek yerleşik yöntemler mevcuttur.

Pandas’ın .fillna() yöntemi, dağılımı değiştirmemek için eksik değerleri ortalama ile doldurur.

import pandas as pd # Assuming df is your DataFrame# Replace NaN values with the mean of the columndf.fillna(df.mean(), inplace=True)

Sci-kit learn kütüphanesinde de iyi çalışan basit bir atama işlevi vardır.

from sklearn.impute import SimpleImputerimport pandas as pd # Assuming df is your DataFrameimputer = SimpleImputer(strategy='mean')df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)

Daha karmaşık bir atama yöntemine ihtiyacınız varsa, iyi bir değer bulmak için KNN veya regresyon atamasını kullanmayı düşünebilirsiniz. Nihayetinde seçeceğiniz yöntem verinize, ihtiyaçlarınıza ve mevcut kaynaklarınıza bağlı olacaktır.

Aykırı değer tespiti ve işleme

Aykırı değerlerle başa çıkmak biraz zordur. Görünürde aykırı olan bazı değerler aslında önemli verilerdir; örneğin borsanın COVID-19 ve Küresel Resesyon gibi krizlere verdiği tepkiler. Ancak diğerleri yazım hatası veya alakasız, nadir koşulların sonucu olabilir ve çıkarılmalıdır.

Farkı bilmek çoğu zaman verinizi bağlam içinde anlamakla ilgilidir; önceki veri keşfiniz buna yardımcı olmuştur; ayrıca analiziniz için net bir hedefe sahip olmanız gerekir.

Birçok aykırı değer veriler görselleştirildiğinde görünür; ancak aykırı değerleri belirlemek için istatistiksel yöntemler de kullanabilirsiniz.

Yaygın bir yöntem, her veri noktası için Z-skoru hesaplamak ve aşırı Z-skoruna sahip değerleri elemekdir.

import numpy as npimport pandas as pd # Generate some sample datanp.random.seed(0)data = np.random.randint(low=0, high=11, size=1000)# Add some outliersdata[0] = 100data[1] = -100 # Calculate Z-scoresz_scores = (data - np.mean(data)) / np.std(data) # Identify outliers based on Z-score threshold (e.g., 3)threshold = 3outliers = np.where(np.abs(z_scores) > threshold)[0] print("Outliers identified using Z-score method:")print(data[outliers])

Bir başka yöntem, dağılımın çeyrekler arası aralığını (IQR) hesaplamak ve Q1−(1,5 x IQR) veya Q3 + (1,5 x IQR) olan değerleri potansiyel aykırı olarak sınıflandırmaktır.

import numpy as npimport pandas as pd # Generate some sample datanp.random.seed(0)data = np.random.randint(low=0, high=11, size=1000)# Add some outliersdata[0] = 100data[1] = -100 # Calculate quartiles and IQRq1 = np.percentile(data, 25)q3 = np.percentile(data, 75)iqr = q3 - q1 # Identify outliers based on IQRlower_bound = q1 - (1.5 * iqr)upper_bound = q3 + (1.5 * iqr)outliers = np.where((data < lower_bound) | (data > upper_bound))[0] print("Outliers identified using IQR method:")print(data[outliers])

Aykırı değerleri belirledikten ve sorunlu olduklarına karar verdikten sonra onlarla başa çıkmak için çeşitli yöntemler vardır. Aykırı değerin bir hatadan kaynaklandığını belirlediyseniz, hatayı düzeltmek aykırı değeri ortadan kaldırabilir.

Diğer durumlarda, aykırı değeri veri kümesinden çıkarmak veya dağılımın genel şeklini koruyan daha az uç bir değerle değiştirmek mümkün olabilir.

Kapatma (capping), dağılımınıza bir üst-alt sınır koyup bu sınırların dışındaki değerleri belirli bir değerle değiştirdiğiniz bir yöntemdir.

import pandas as pdimport numpy as np # Create a sample DataFrame with outliersdata = {    'A': [100, 90, 85, 88, 110, 115, 120, 130, 140],    'B': [1, 2, 3, 4, 5, 6, 7, 8, 9]}df = pd.DataFrame(data) # Define the lower and upper thresholds for capping (Here I used the 5th and 95th percentiles)lower_threshold = df.quantile(0.05)upper_threshold = df.quantile(0.95) # Cap outlierscapped_df = df.clip(lower=lower_threshold, upper=upper_threshold, axis=1) print("Original DataFrame:")print(df)print("\nCapped DataFrame:")print(capped_df)

Bazı durumlarda, karekök dönüşümü ya da logaritmik dönüşüm gibi, aykırı değerlerin etkisini azaltacak şekilde verinizi dönüştürebilirsiniz.

Verinizi dönüştürürken dikkatli olun; aksi halde uzun vadede daha fazla sorun yaratabilirsiniz. Dönüşüm yapmaya karar vermeden önce göz önünde bulundurmanız gereken birkaç nokta vardır.

  1. Altta yatan veri dağılımını anlayın: Herhangi bir dönüşümü uygulamadan önce verinizin dağılımını ve belirli dönüşümlerin bunu nasıl etkileyeceğini anlamak önemlidir.
  2. Uygun bir dönüşüm seçin: Veri dağılımınıza uygun bir dönüşüm yöntemi seçin.
  3. Sıfır ve negatif değerleri yönetin: Bazı dönüşümler sıfır veya negatif değerler içeren veriler için uygun olmayabilir. Örneğin logaritma alırken küçük bir sabit eklemek sorunları önlemeye yardımcı olabilir.
  4. Dönüştürülmüş veriyi doğrulayın: Dönüşümleri uyguladıktan sonra, oluşan dağılımın analizinizin varsayımlarını karşıladığından emin olmak için veriyi doğrulayın.
  5. Yorumlanabilirliği düşünün: Dönüştürülmüş veriler, orijinal veriler kadar kolay yorumlanamayabilir. Paydaşların, dönüşümün sonuçların yorumlanmasına etkilerini anladığından emin olun.

Veri dönüşümleri hakkında daha fazla bilgi için DataCamp’in Python ile İstatistiğe Giriş veya Python ile İstatistik Temelleri gibi bir istatistik kursunu öneririm.

Yinelemelerle başa çıkma

Yinelenenlerin analizlerimizi nasıl altüst edebileceğini gördük. Neyse ki, Python yinelenenleri belirlemeyi ve ele almayı kolaylaştırır.

Python’un pandas kütüphanesindeki duplicated() yöntemiyle bir DataFrame’deki yinelenen satırları kolayca belirleyip inceleyebilirsiniz.

import pandas as pd# Assuming 'df' is your DataFrameduplicate_rows = df[df.duplicated()]

Bu, yinelenen satırları içeren bir DataFrame döndürecektir. Bu yinelenen satırlar DataFrame’ine sahip olduğunuzda, çok fazla değillerse bunlara bakmanızı öneririm.

Yinelenmelerin çoğu bire bir kopya olabilir ve Pandas’taki drop_duplicates() yöntemiyle basitçe düşülebilir:

# Removing duplicatescleaned_df = df.drop_duplicates()

Bazı durumlarda, yineleyen kayıtları birleştirip bilgileri toplamak daha uygun olabilir. Örneğin, yinelemeler aynı varlık için birden fazla girdiyi temsil ediyorsa, bunları toplama işlevleriyle birleştirebiliriz:

# Merging duplicates by aggregating valuesmerged_df = df.groupby(list_of_columns).agg({'column_to_merge': 'sum'})

Bu, yinelenen satırları tek bir satırda birleştirir ve toplam, ortalama vb. gibi belirlenen işlevlere göre değerleri toplar.

import pandas as pd#Sample DataFramedata = {     'customer_id' : [102, 102, 101, 103, 102]     'product_id' : ['A', 'B', 'A', 'C', 'B']     'quantity_sold : [5, 3, 2, 1, 4]}df = pd.DataFrame(data)df}

# Merging duplicates by aggregating valuesmerged_df = df.groupby(['cutomer_id', 'product_id']).agg({'quantity_sold': 'sum'}).reset_index()merged_df

Tutarsızlıkların giderilmesi

Farklı türdeki tutarsızlıklar farklı çözümler gerektirir. Yanlış veri girişlerinden veya yazım hatalarından kaynaklanan tutarsızlıklar, bilgili bir kaynak tarafından düzeltilmelidir. Alternatif olarak, yanlış veriler koşullara bağlı olarak eksik bir değer gibi atama ile değiştirilebilir veya veri kümesinden tamamen çıkarılabilir.

Veri biçimlendirmesindeki tutarsızlıklar bazı standartlaştırma yöntemleriyle düzeltilebilir. Bir dizgeden baştaki ve sondaki boşlukları kaldırmak için .strip() yöntemini kullanabilirsiniz. .upper() ve .lower() yöntemleri dizgelerde harf büyüklüğünü standartlaştırır. Tarihleri pd.to_datetime ile datetime’a dönüştürmek, tarih biçimlendirmesini standartlaştırır.

Ayrıca, bir DataFrame’in sütunundaki her değerin aynı veri tipinde olmasını .astype() yöntemiyle sağlayabilirsiniz.

İhtiyaç duyabileceğiniz diğer biçim tutarsızlığı düzeltmeleri şunları içerir:

  • Birim dönüştürme
  • E-posta, telefon ve adres standartlaştırma
  • Dizgilerden noktalama işaretlerini kaldırma
  • Yaygın kısaltmaları ele almak için değer eşlemesi kullanma
value_mapping = {'M': 'Male', 'F': 'Female'}standardized_value = value_mapping.get('M', 'Unknown')

Veri Dönüşümü ve Özellik Mühendisliği

Veri dönüşümü ve özellik mühendisliği, ham verileri makine öğrenmesi algoritmaları ve istatistiksel analiz için daha uygun bir biçime dönüştürmeye yönelik ön işleme teknikleridir. Bu bölümde, Python’da yaygın bazı veri dönüşümü ve özellik mühendisliği tekniklerini kısaca inceleyeceğiz.

Normalleştirme ve standartlaştırma

Normalleştirme ve standartlaştırma, özellikleri benzer bir ölçeğe getirmek için kullanılan iki tekniktir; bu, birçok makine öğrenmesi algoritması için önemlidir.

Normalleştirme veriyi genellikle 0 ile 1 arasında sabit bir aralığa ölçekler. Bu, tüm özelliklerin aynı ölçekte olmasını sağlar ve büyük büyüklükteki özelliklerin diğerlerine baskın olmasını engeller.

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)

Standartlaştırma ise veriyi ortalaması 0 ve standart sapması 1 olacak şekilde dönüştürür. Bu teknik, verinin farklı ölçeklere ve değişen aralıklara sahip olduğu durumlarda kullanışlıdır ve her bir özelliğin model üzerinde karşılaştırılabilir etkiye sahip olmasını sağlar.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)

Verinizin özel özellikleri ve hedeflediğiniz modelin gereksinimleri, verinizi nasıl ölçeklendireceğinizi belirler. Normalleştirme ve standartlaştırma arasındaki fark hakkında daha fazla bilgi edinmek için Normalizasyon vs. Standardizasyon: Farkı Nasıl Anlarsınız başlıklı özel öğreticimize göz atın.

Kategorik değişkenlerin kodlanması

Kategorik değişkenlerin kodlanması, sayısal olmayan özelliklerle çalışırken makine öğrenmesinde temel bir ön işleme adımıdır. Kategorik değişkenler türler, sınıflar veya etiketler gibi nitel verileri temsil eder. Bu değişkenlerin makine öğrenmesi algoritmalarında kullanılabilmesi için sayısal bir biçime dönüştürülmeleri gerekir.

Kategorik değişkenleri kodlamak için yaygın bir teknik, her kategoriyi ikili bir vektöre dönüştüren tek-seçenekli (one-hot) kodlamadır. Bu yöntem, kategoriler arasında doğal bir sıralama veya hiyerarşi olmadığında yani nominal kategorik değişkenlerle çalışırken özellikle kullanışlıdır.

import pandas as pd

encoded_data = pd.get_dummies(data, columns=['categorical_column'])
import pandas as pd

# Create a sample DataFrame with a categorical column
data = {
    'ID': [1, 2, 3, 4, 5],
    'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']
}
df = pd.DataFrame(data)

# Perform one-hot encoding
encoded_data = pd.get_dummies(df, columns=['Color'])

print("Original DataFrame")
print(df)

print("\nEncoded DataFrame:")
print(encoded_data)

Bir başka yaklaşım etiket kodlamadır; her kategoriye benzersiz bir tamsayı atanır. Her kategori sayısal bir değere eşlenir ve kategorik etiketler etkili bir şekilde sıralı sayılara dönüştürülür. Bu yöntem, kategoriler arasında doğal bir sıra veya derecelendirme bulunduğunda, yani sıralı kategorik değişkenler için uygundur.

from sklearn.preprocessing import LabelEncoderencoder = LabelEncoder()encoded_data['categorical_column'] = encoder.fit_transform(data['categorical_column'])
from sklearn.preprocessing import LabelEncoderimport pandas as pd#Create a sample DataFrame with categorical column data = {    'ID' : [1, 2, 3, 4, 5]    'Color' : [ 'Red', 'Blue', 'Green', 'Red', 'Green' ]}df = pd.DataFrame(data)#Perform label encodingencoder  = LabelEncoder()df ['Color_LabelEncoded'] = encoder.fit_transform(df['Color'])print("Original DataFrame:")print(df[['ID', 'Color']])print("\nDataFrame with Label Encoded Column:")print(df[['ID', 'Color_LabelEncoded']])

Uygun kodlama yöntemini, kategorik değişkenin doğasına ve makine öğrenmesi algoritmasının gereksinimlerine göre seçmek önemlidir. Nominal değişkenler için genellikle one-hot kodlama tercih edilirken, sıralı değişkenler için etiket kodlama uygundur.

Özellik mühendisliği teknikleri

Özellik mühendisliği, makine öğrenmesi modeli geliştirmede yeni özellikler oluşturmayı veya mevcutları değiştirmeyi içeren bir adımdır. Ham veriler, öğrenme görevine doğrudan katkı sağlayan özelliklerden yoksun olduğunda ya da mevcut özellikler, öğrenme algoritmasının etkili biçimde kullanabileceği bir formda olmadığında yaygındır.

Örneğin, konut fiyatlarından oluşan bir veri kümesiyle çalıştığınızı ve odaların sayısı, yaşam alanının metrekare büyüklüğü ve mülkün durumu gibi çeşitli özelliklere dayalı olarak satış fiyatını tahmin etmek istediğinizi düşünün. Ancak veri kümesi, evin genel durumunu doğrudan yakalayan bir özellik içermiyor.

Bu durumda mevcut özellikleri birleştirerek veya ilgili bilgileri çıkararak yeni bir özellik oluşturabilirsiniz.

Örneğin, mutfağın durumu, bodrumun kalitesi, mülkün yaşı, yakın tarihli tadilatlar vb. gibi evin bireysel bileşenlerinin durum puanlarını bir araya getirerek "Genel Durum" adlı bir özellik oluşturabilirsiniz.

Özellikler ile hedef değişken arasındaki ilişki doğrusal olmadığında, mevcut özellikleri çeşitli üst derecelere yükselterek polinomik özellikler üretilebilir. Bu yaklaşım, doğrusal olarak ayrıştırılamayan değişkenler arasındaki karmaşık ilişkilerin yakalanmasına yardımcı olur.

from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(degree=2)
polynomial_features = poly.fit_transform(data)

Diğer durumlarda, yüksek boyutlu veri kümeleriyle veya özellikler arasında çoklu doğrusal bağlantı ile uğraşıyor olabilirsiniz. Temel Bileşenler Analizi (PCA) gibi teknikler, ilgili bilginin çoğunu korurken veri kümesinin boyutunu azaltmak için kullanılabilir.

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
transformed_features = pca.fit_transform(data)

Özellik mühendisliği, modelinizin kullanması için doğru verilerin doğru biçimde olmasını sağlar. Özellik mühendisliğinde pek çok teknik vardır ve hangilerini kullanacağınız, neyi başarmaya çalıştığınıza fazlasıyla bağlı olacaktır.

Sizin için faydalı olabilecek daha fazla teknik için bu özellik mühendisliği kursuna göz atın.

Python’da Veri Temizleme: En İyi Uygulamalar ve İpuçları

Veri temizleme, herhangi bir veri analizi veya makine öğrenmesi projesinde kritik bir adımdır. Veri temizleme sürecinizi kolaylaştırırken aklınızda bulundurmanız gereken bazı en iyi uygulamalar şunlardır:

Ham veriyi ayrı saklayın

Orijinali her zaman saklayın!

Bu, veri temizlerken en önemli ipucudur. Ham veri dosyalarının bir kopyasını temizlenmiş ve işlenmiş sürümlerden ayrı tutun. Bu, her zaman bir referans noktanız olmasını ve gerektiğinde orijinal veriye kolayca dönebilmeyi sağlar.

Ben şahsen, herhangi bir değişiklik yapılmadan önce ham veri dosyasının bir kopyasını çıkarır ve hangisinin orijinal olduğunu bilmek için dosya adına “-RAW” soneki eklerim.

Veri temizleme kodunuzu belgeleyin

Her temizleme adımının amacını ve yapılan varsayımları açıklamak için kodunuza yorumlar ekleyin.

İstenmeyen sonuçlara dikkat edin

Veri temizleme çabalarınızın dağılımı önemli ölçüde değiştirmediğinden veya istenmeyen yanlılıklar getirmediğinden emin olmak isteyeceksiniz. Temizlikten sonra tekrarlanan veri keşfi, doğru yolda olduğunuzdan emin olmanıza yardımcı olabilir.

Bir veri temizleme günlüğü tutun

Uzun bir temizleme süreciniz varsa veya süreç otomatikse, her temizleme adımının ayrıntılarını kaydettiğiniz ayrı bir belge tutmak isteyebilirsiniz.

Tarih, yapılan spesifik işlem ve karşılaşılan sorunlar gibi ayrıntılar ileride faydalı olabilir.

Bu belgeyi veriler veya kodla aynı proje klasörü gibi kolayca erişilebilir bir yerde saklamayı unutmayın. Otomatik ve düzenli olarak güncellenen bir veri hattı söz konusuysa, bu günlüğün veri temizleme sürecinin otomatik bir parçası olmasını düşünün. Bu, her şeyin sorunsuz çalıştığını kontrol etmenizi sağlar.

Yeniden kullanılabilir fonksiyonlar yazın

Yaygın veri temizleme görevlerini belirleyin ve bunları yeniden kullanılabilir fonksiyonlara sığdırın. Böylece aynı temizleme adımlarını birden fazla veri kümesine uygulayabilirsiniz. Bu, özellikle şirketinize özgü kısaltmaları eşlemek istediğinizde faydalıdır.

Hiçbir şeyi atlamadığınızdan emin olmak için DataCamp’in Veri Temizleme Kontrol Listesini kullanın!

Sonuç

Veri temizleme sadece sıradan bir görev değildir; her başarılı veri analizi ve makine öğrenmesi projesinin temelini oluşturan kritik bir adımdır. Verinizin doğru, tutarlı ve güvenilir olmasını sağlayarak, bilinçli kararlar almak ve anlamlı içgörüler elde etmek için sağlam bir zemin hazırlarsınız.

Kirli veriler, ister arkadaşlar arasında şeker paylaşıyor olun ister iş kararları alıyor olun, hatalı sonuçlara ve kusurlu analizlere yol açabilir ve bu da ciddi sonuçlar doğurabilir. Verinizi temizlemeye zaman ve emek harcamak uzun vadede karşılığını verir; analizlerinizin güvenilir, sonuçlarınızın uygulanabilir olmasını sağlar.

Daha fazla bilgi ve etkileşimli alıştırmalar için DataCamp’in veri temizleme kursuna göz atın. Uygulamalı bir meydan okuma için ise bu veri temizleme eşlikli kodlama çalışmasını deneyin.

Amberle McKee

Yazar

Amberle McKee

Biyolojik araştırma ortamında verilerle çalışma konusunda 13 yıllık deneyime sahip bir doktora sahibiyim. Python, MATLAB ve R dahil olmak üzere birkaç programlama dilinde yazılım geliştiriyorum. Öğrenme sevgimi dünyayla paylaşma konusunda tutkuluyum.

Konular

İlgili