ChatGPT
Dağınık CSV ve Excel Verisini Python (pandas) ile Temizleme
Tekrarlı kayıtlar, bozuk tarihler, Türkçe karakter sorunları ve eksik değerlerle dolu veri dosyalarınız için; adım adım açıklamalı, yeniden çalıştırılabilir bir pandas temizleme betiği yazdırın.
Prompt
Sen dağınık gerçek dünya verilerini temizleme konusunda deneyimli bir veri mühendisisin. Kodun okunabilir ve tekrar çalıştırılabilir olmasına önem verirsin.
Dosyanın türü, boyutu ve kaynağı: [DOSYA]
Sütunlar ve örnek birkaç satır (kişisel verileri maskeleyerek): [ORNEK_VERI]
Gördüğüm sorunlar: [SORUNLAR]
Temiz verinin nerede kullanılacağı: [HEDEF]
Başlamadan önce: Veride yanlış yorumlayabileceğin bir kural (ör. tarih biçimi gün/ay mı ay/gün mü) varsa en fazla 3 kısa soru sor ve yanıtımı bekle.
Betik gereksinimleri:
1. Dosyayı doğru kodlama ve ayırıcıyla oku (Türkçe karakterler için utf-8 / cp1254 denemesi).
2. Sütun adlarını standartlaştır (küçük harf, boşluk yerine alt çizgi, Türkçe karakterleri koru veya dönüştür; hangisini seçtiğini açıkla).
3. Her sorun için ayrı, yorum satırıyla açıklanmış bir temizleme adımı: tip dönüşümü, tarih ayrıştırma, boşluk ve büyük-küçük harf düzeltme, tekrar kayıtları kaldırma, eksik değer stratejisi.
4. Her adımdan sonra kaç satırın etkilendiğini yazdıran kısa kontroller.
5. Temizlenen veriyi yeni bir dosyaya yaz; orijinal dosyaya dokunma.
6. Sonunda bir "temizlik raporu" yazdır: Başlangıç / bitiş satır sayısı, düzeltilen hücre sayıları.
Kurallar: Eksik değerleri gerekçesiz silme veya doldurma; her sütun için stratejini açıkla. Kodu tek bir blokta ver, ardından nasıl çalıştıracağımı anlat.
DOSYA
ORNEK_VERI
SORUNLAR
HEDEF
137 kez kopyalandı
Örnek çıktı
```python
import pandas as pd
# 1) Okuma: Türkçe karakterler için önce utf-8, olmazsa cp1254
try:
df = pd.read_csv("satislar.csv", sep=";", encoding="utf-8")
except UnicodeDecodeError:
df = pd.read_csv("satislar.csv", sep=";", encoding="cp1254")
baslangic = len(df)
# 2) Tamamen boş satırları kaldır
df = df.dropna(how="all")
print(f"Boş satır silindi: {baslangic - len(df)}")
# 3) Tutar: "1.250,50" → 1250.50
df["tutar"] = (df["Tutar"].astype(str).str.replace(".", "", regex=False)
.str.replace(",", ".", regex=False).astype(float))
# 4) Tarih: gün.ay.yıl
df["tarih"] = pd.to_datetime(df["Tarih"], format="%d.%m.%Y", errors="coerce")
...
```
Çalıştırma: Betiği temizle.py olarak kaydedin, CSV ile aynı klasörde `python temizle.py` komutunu çalıştırın. Çıktı: satislar_temiz.csv.
import pandas as pd
# 1) Okuma: Türkçe karakterler için önce utf-8, olmazsa cp1254
try:
df = pd.read_csv("satislar.csv", sep=";", encoding="utf-8")
except UnicodeDecodeError:
df = pd.read_csv("satislar.csv", sep=";", encoding="cp1254")
baslangic = len(df)
# 2) Tamamen boş satırları kaldır
df = df.dropna(how="all")
print(f"Boş satır silindi: {baslangic - len(df)}")
# 3) Tutar: "1.250,50" → 1250.50
df["tutar"] = (df["Tutar"].astype(str).str.replace(".", "", regex=False)
.str.replace(",", ".", regex=False).astype(float))
# 4) Tarih: gün.ay.yıl
df["tarih"] = pd.to_datetime(df["Tarih"], format="%d.%m.%Y", errors="coerce")
...
```
Çalıştırma: Betiği temizle.py olarak kaydedin, CSV ile aynı klasörde `python temizle.py` komutunu çalıştırın. Çıktı: satislar_temiz.csv.
İleri SeviyeKurumsal
Yorumlar (0)
Yorum yapmak için giriş yapın veya kayıt olun.
Henüz yorum yok
Promptu denediyseniz deneyiminizi veya geliştirme önerinizi paylaşın.
Yorum yapmak için giriş yap