Tablolardaki Metin Verilerle Çalışma Ustalık Sınıfı
Bir tablonun satır veya sütunundan veri çıkarmak için, Excel ve Google E-Tablolar'daki tek seferlik görevler için yerleşik metin fonksiyonlarını (MID, FIND, SPLIT) kullanın; büyük hacimli verileri otomatikleştirmek için ise Python/SQL'de düzenli ifadeler ve dize yöntemlerini tercih edin. Araç seçimi veri formatının karmaşıklığına bağlıdır: sabit uzunluk pozisyon fonksiyonları gerektirirken, değişken yapılar düzenli ifadeler veya ayırıcılara göre bölme işlemi gerektirir.
Kısa cevap: Excel'deki basit görevler için =MID() veya =TEXTAFTER() kullanın. Google E-Tablolar'da =REGEXEXTRACT() idealdir. Binlerce satırı işlemek için Python (Pandas kütüphanesi) ile bir betik yazmak veya SUBSTRING içeren bir SQL sorgusu kullanmak daha iyidir.
İşleme Yöntemi Seçim İlkeleri
Veri çıkarmanın etkinliği, kaynak verinin yapısına doğrudan bağlıdır. Çalışmaya başlamadan önce hücre formatını analiz edin:
- Sabit konum: Veriler her zaman aynı karakterlerde bulunur (örneğin, ülke kodu her zaman ilk 2 karakterdir).
- Ayırıcılar: Değerler virgül, noktalı virgül, tire veya boşluklarla ayrılmıştır.
- Karmaşık kalıplar: Veriler değişken bir yapıya sahiptir (örneğin, "Sipariş No:123 oluşturuldu" logundan sipariş numarasını çıkarma).
Performans ipucu: Tablo 10.000'den fazla satır içeriyorsa, Excel'de karmaşık formül zincirlerinden kaçının; bu, dosyayı yavaşlatır. Böyle durumlarda verileri dışa aktarın ve bunları bir Python betiği veya veritabanı sorgusu ile işleyin.
Tek Bir Satırdan (Hücreden) Veri Çıkarma
Hedef bilgi tek bir hücrenin metni içinde bulunduğunda, dize manipülasyon fonksiyonları uygulanır.
Karakter Konumlarıyla Çalışma
İstenen parçanın tam uzunluğu veya konumu bilindiğinde kullanılır.
- Excel / Google E-Tablolar:
MIDfonksiyonu.- Sözdizimi:
=MID(metin, başlangıç_konumu, karakter_sayısı) - Örnek: 5. karakterden başlayarak 3 karakter çıkarma:
=MID(A2, 5, 3)
- Sözdizimi:
- SQL:
SUBSTRINGfonksiyonu.- Örnek:
SELECT SUBSTRING(column_name FROM 5 FOR 3) FROM table;
- Örnek:
- Python: Dize dilimleme (slicing).
- Örnek:
result = text[4:7](indeksleme 0'dan başlar).
- Örnek:
Ayırıcılara Göre Bölme
Listeler, etiketler veya bileşik değerler (Ad;Soyad) için uygundur.
- Excel 365:
TEXTSPLITfonksiyonu.- Örnek:
=INDEX(TEXTSPLIT(A2, ","), 2)— virgülden sonraki ikinci öğeyi döndürür.
- Örnek:
- Google E-Tablolar:
INDEXile birlikteSPLITfonksiyonu.- Örnek:
=INDEX(SPLIT(A2, ","), 1, 2)
- Örnek:
- Python (Pandas):
str.splityöntemi.- Örnek:
df['col'].str.split(',', expand=True)[1]
- Örnek:
Boşluklara dikkat: Ayırıcılara göre bölme yapılırken genellikle fazla boşluklar kalır. İleri işleme sırasında hatalardan kaçınmak için sonucu her zaman TRIM (Excel/SQL/Python) fonksiyonu içine alın.
Düzenli İfadelerin Kullanımı
Dize yapısı karmaşık olduğunda ve basit bölme işlemine uygun olmadığında vazgeçilmezdir.
- Google E-Tablolar:
REGEXEXTRACTfonksiyonu.- Örnek: "Ürün Kodu: 4589" metninden sayıları çıkarma:
=REGEXEXTRACT(A2, "\d+")
- Örnek: "Ürün Kodu: 4589" metninden sayıları çıkarma:
- Excel:
REGEX.EXTRACTfonksiyonu (yeni sürümlerde mevcuttur) veya eklentiler. - Python:
remodülü.- Örnek:
re.search(r'\d+', text).group()
- Örnek:
Tablo Sütunlarının Toplu İşlenmesi
Sütunlarla çalışırken görev ölçeklendirilir: çıkarma mantığını tüm satırlara aynı anda uygulamak gerekir.
Dizi Formülleri
Formülü aşağı doğru sürüklemek yerine dizi hesaplamaları kullanın.
- Google E-Tablolar: Mantığı
ARRAYFORMULAiçine alın.- Örnek:
=ARRAYFORMULA(IF(B2:B=""; ""; MID(B2:B, 2, 5)))— çıkarma işlemini otomatik olarak B sütununun tamamına uygular.
- Örnek:
- Excel: Dinamik diziler,
TEXTSPLITgibi fonksiyonlar kullanıldığında sonucu bitişik hücrelere döndürerek ("dökülme") otomatik olarak çalışır.
SQL'de Toplama ve Filtreleme
Veriler bir veritabanında saklanıyorsa, çıkarma işlemi sorgu düzeyinde gerçekleşir.
-- Sadece aktif kategori için açıklamanın ilk 10 karakterini çıkar
SELECT SUBSTRING(description, 1, 10) AS short_desc
FROM products
WHERE category = 'Electronics';
Çıkarılan parçaları tekrar bir dizede birleştirmek için STRING_AGG (PostgreSQL/SQL Server) veya GROUP_CONCAT (MySQL) kullanın.
Python'da Vektörizasyon (Pandas)
Pandas kütüphanesi, vektörizasyon sayesinde milyonlarca satırı saniyeler içinde işlemeye olanak tanır.
import pandas as pd
# 'info' sütununda "id:123;date:2024" şeklinde metin olduğunu varsayalım
# Tüm sütun için düzenli ifade kullanarak yalnızca ID'yi çıkarıyoruz
df['order_id'] = df['info'].str.extract(r'id:(\d+)')
# Karmaşık bir sütunu birkaç yeni sütuna bölüyoruz
df[['city', 'street']] = df['address'].str.split(', ', expand=True)
Farklı Görevler İçin Araçların Karşılaştırılması
| Görev | En İyi Araç | Neden |
|---|---|---|
| 10–50 satırın hızlı analizi | Excel / Google E-Tablolar | Programlama gerektirmez, görsel kontrol sağlar. |
| Karmaşık kalıp (loglar, karışık metin) | Google E-Tablolar (REGEX) veya Python | Güçlü düzenli ifade motorları. |
| >100.000 satır işleme | Python (Pandas) veya SQL | Yüksek hız, düşük bellek tüketimi. |
| Rapor otomasyonu | Python | Betiği kaydetme ve zamanlanmış çalıştırma imkanı. |
Ayrıştırma Sırasındaki Yaygın Hatalar
- Boş değerlerin göz ardı edilmesi: Hücre boşsa formüller
#VALUE!veyaNaNhataları verebilir. Her zaman kontroller ekleyin (örneğin,IF(ISBLANK(...))). - Bölgesel ayarların dikkate alınmaması: Rusça Excel'de argüman ayırıcı noktalı virgüldür (
;), İngilizce Excel'de ise virgüldür (,). Formüller kopyalandığında bozulmasının sık görülen nedeni budur. - Kodda "sihirli sayılar": Sabit konum numaralarının kullanılması (örneğin, 5. ile 10. karakterleri almak), veri formatı biraz değiştiğinde tehlikelidir. Bunun yerine bir işaretçiye (ayırıcıya) göre arama yapmak daha iyidir.
- Karakter kodlaması: Veritabanından CSV'ye aktarma ve ardından betiklerde işleme sırasında Kiril alfabesiyle ilgili sorunlar ortaya çıkabilir. UTF-8 kodlamasını kullanın.
SSS
İki parantez arasındaki metni nasıl çıkarırım?
Google E-Tablolar'da şunu kullanın: =REGEXEXTRACT(A1, "\((.*?)\)"). Excel'in yeni sürümlerinde: =REGEX.EXTRACT(A1, "\((.*?)\)").
Bitişik olmayan birkaç sütundan verileri tek bir hücreye çıkarabilir miyim?
Evet. Excel'de CONCATENATE veya & operatörünü kullanın: =A2 & " " & C2. Python'da: df['new'] = df['col1'] + " " + df['col3'].
Ayırıcı metnin içinde geçiyorsa ne yapmalıyım?
Bölme sayısı için bir sınır kullanın (split fonksiyonlarında limit argümanı) veya bağlamı dikkate alan daha katı düzenli ifadeler kullanın (örneğin, ayırıcı sadece boşluklarla çevriliyse).