• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Pandas'ta metin kodlaması nasıl yönetilir?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
İçe aktarma sırasında dosyanın gerçek karakter kodlamasını encoding parametresiyle belirtin; dışa aktarırken de hedef programın beklediği kodlamayı seçin. Türkçe metinlerde çoğu durumda utf-8, Excel ile uyumluluk gereken CSV dosyalarında ise utf-8-sig kullanılır. Hatalı kodlama seçimi bozuk karakterlere veya UnicodeDecodeError hatasına yol açar.

Kodlama seçimi nasıl yapılır?​


Kodlama, metin karakterlerinin dosyada bayt olarak nasıl saklandığını belirler. ç, ğ, İ ve ş gibi karakterlerin doğru okunabilmesi için dosyayı yazan uygulamanın kullandığı kodlamayı bilmeniz gerekir. Kodlamayı tahmin etmek yerine mümkünse dosyayı oluşturan sistemin ayarından doğrulayın.

Aşağıdaki örnek varsayımsaldır. veriler.csv dosyasının UTF-8 kodlamasında ve virgülle ayrılmış olduğunu kabul eder:

Python:
import pandas as pd

df = pd.read_csv("veriler.csv", encoding="utf-8")
print(df.head())

Okul, ad veya şehir adları doğru görünüyorsa okuma işlemi başarılıdır. Örneğin Çağrı değeri ÇaÄŸrı gibi görünüyorsa veri genellikle yanlış kodlamayla okunmuştur; bu durum dosyanın UTF-8 olmadığı veya UTF-8 verinin başka bir kodlama gibi yorumlandığı anlamına gelebilir.

CSV dosyasını okuma​

  1. Dosyanın kodlamasını belirleyin. Dosyayı oluşturan uygulamada veya veri sağlayıcısının açıklamasında UTF-8, UTF-8 BOM, Windows-1254 ya da başka bir kodlama yazıp yazmadığını kontrol edin. Dosyanın yalnızca uzantısı kodlamayı göstermez.
  2. Kodlamayı read_csv() çağrısına ekleyin. Bilinen kodlamayı encoding parametresine verin; örneğin pd.read_csv("veriler.csv", encoding="cp1254"). cp1254, Windows Türkçe dosyalarında karşılaşılabilen bir seçenektir; dosya gerçekten bu kodlamadaysa kullanılmalıdır.
  3. Metin sütunlarını kontrol edin. print(df.head()) ve gerekirse print(df["ad"].head()) ile Türkçe karakterlerin doğru göründüğünü doğrulayın. Dosya okunmuş olsa bile karakterler bozuksa işlem başarılı kabul edilmez.
Kodlama bilinmiyorsa art arda rastgele seçenek denemek yerine dosyanın kaynağını doğrulayın. encoding_errors="replace" veya encoding_errors="ignore" dosyanın açılmasını sağlayabilir; ancak hatalı ya da kaybolmuş karakterleri gizleyebileceği için veri temizleme ve kalıcı aktarım için ilk tercih olmamalıdır.

Yaygın kodlamalar arasındaki fark​


Aşağıdaki tablo, seçim yaparken hangi durumda hangi değeri denemenin anlamlı olduğunu gösterir.
KodlamaNe zaman kullanılır?Dikkat edilmesi gereken
utf-8Yeni sistemler ve genel amaçlı metin dosyalarıDosya farklı bir kodlamadaysa okuma hatası verebilir
utf-8-sigUTF-8 verinin Excel gibi uygulamalarda daha uyumlu açılması gerektiğindeBOM adı verilen başlangıç işaretini işler
cp1254Bazı eski Windows Türkçe dosyalarıDosyanın gerçekten bu kodlamada olduğu doğrulanmalıdır
latin1Teknik olarak her baytı eşleyerek dosyayı açma ihtiyacı olduğundaTürkçe karakterleri doğru çözeceği garanti değildir
Tablodaki seçenekler birbirinin eş anlamlısı değildir. Özellikle latin1 ile dosyanın hatasız açılması, karakterlerin doğru çözüldüğünü kanıtlamaz. Bu yöntem yalnızca her baytı bir karaktere dönüştürür ve bozuk metni fark etmeyi zorlaştırabilir.

CSV dosyasını doğru kodlamayla kaydetme​


Bir veri çerçevesini başka bir programa gönderecekseniz çıkış kodlamasını açıkça belirtin:

Python:
import pandas as pd

df = pd.DataFrame({"şehir": ["İstanbul", "Çağrı"]})
df.to_csv("cikti.csv", index=False, encoding="utf-8-sig")

Burada index=False ek bir sıra numarası sütununun yazılmasını önler. utf-8-sig ise özellikle CSV dosyasını Excel ile açacak kişiler için tercih edilebilir. Dosya bir API, Linux komutu veya başka bir Python uygulamasına aktarılacaksa hedef sistemin beklentisi utf-8 olabilir; bu nedenle kaydetme kodlamasını alıcı uygulamaya göre seçin.

Hata mesajının anlamı​


UnicodeDecodeError alırsanız pandas, seçtiğiniz kodlamayla dosyadaki en az bir baytı metne çevirememiştir. Önce read_csv() çağrısında kullandığınız kodlamayı ve dosyanın kaynağını karşılaştırın. Dosya Windows’tan geliyorsa cp1254 olasılığını, dosya yeni bir uygulamadan dışa aktarıldıysa utf-8 olasılığını değerlendirin; fakat sonucu Türkçe karakterleri gözle kontrol ederek doğrulayın.

Metinler ö, ÄŸ veya benzeri biçimde görünüyorsa veri çoğunlukla bir aşamada yanlış kodlamayla çözülmüş ya da yeniden kaydedilmiştir. Sadece encoding_errors="ignore" kullanarak sorunu kapatmayın; özgün dosyaya dönüp doğru kodlamayla yeniden okuyun ve ardından örnek satırları karşılaştırın.

Excel dosyalarında durum​


.xlsx dosyalarında metin kodlamasını genellikle CSV’deki gibi encoding parametresiyle seçmezsiniz; pandas, Excel dosyasının kendi yapısından metni okur. Kodlama sorunu çoğunlukla Excel’den CSV olarak dışa aktarma veya CSV’yi Excel’de açma aşamasında ortaya çıkar. Bu nedenle sorunlu dosyanın gerçekten .xlsx mi yoksa CSV mi olduğunu önce ayırın; CSV ise read_csv() ve to_csv() içinde kodlamayı açıkça yönetin.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst