Excel ‘de OpenPyXL ve AI Ajanları ile Veri Sözlüğü Oluşturma
0

Excel dosyalarınız için otomatik olarak veri sözlükleri oluşturmayı öğrenin

Bir Excel dosyasıyla ilk kez çalışmaya başladığınızda, içeriğindeki verilerin neler olduğunu anlamak zaman alıcı olabilir. Bu veri dosyalarının kapsamlı bir dökümantasyonu mevcut değilse, her sütunun ne anlama geldiğini çözmeye çalışmak zorlaşır. Bu sorunu çözmek için, Excel dosyalarını otomatik olarak inceleyip, içerdikleri sütunların ayrıntılı açıklamalarını içeren bir veri sözlüğü oluşturmak için Python’daki OpenPyXL kütüphanesini ve AI ajanlarını nasıl kullanabileceğimizi göstereceğim.

Veri Sözlükleri Nedir ve Neden Önemlidir?

Veri sözlüğü, bir veri kümesindeki her alanın anlamını ve özelliklerini açıklayan bir dokümantasyondur. Genellikle şunları içerir:

  • Sütun adları/alan adları
  • Veri tipleri
  • Değer aralıkları veya sınırlamaları
  • Her sütunun amacı ve anlamı hakkında açıklamalar
  • Veri kaynaklarına veya ilgili alanlara referanslar

Excel Veri sözlükleri şu açılardan önemlidir:

  1. Veri Anlama: Kullanıcıların veri kümesini daha hızlı kavramasına yardımcı olur
  2. Veri Kalitesi: Veri alanlarının amacını, biçimini ve kısıtlamalarını netleştirerek veri kalitesini artırır
  3. İşbirliği: Ekipler arasında veri hakkında ortak bir anlayış sağlar
  4. Veri Yönetişimi: Kuruluş genelinde veri standartlarını ve prensiplerini uygulamayı kolaylaştırır

Excel için OpenPyXL Kütüphanesi

Excel dosyalarını programatik olarak işlemek için Python’da birkaç seçenek bulunmaktadır, ancak OpenPyXL, Excel 2010 XLSX/XLSM/XLTX/XLTM dosyalarını okumak ve yazmak için özellikle etkili bir kütüphanedir.

Kurulumu basittir:

pip install openpyxl

OpenPyXL’in temel avantajları:

  • Excel dosyalarını okuma, yazma ve değiştirme yeteneği
  • Grafikler, formüller ve koşullu biçimlendirme desteği
  • Bellek verimli büyük dosya işleme
  • Aktif geliştirme ve iyi dokümantasyon

Excel ‘de Veri Sözlüğü Oluşturma

Veri sözlüğü oluşturma sürecini şu adımlara ayıralım:

  1. Excel dosyasını okuma
  2. Çalışma sayfalarını ve sütunları analiz etme
  3. Veri tiplerini ve değer örneklerini çıkarma
  4. Yapay zeka kullanarak sütun tanımlarını oluşturma
  5. Sonuçları bir veri sözlüğü olarak biçimlendirme

İlk olarak, bir Excel dosyasını yükleyelim ve sütun bilgilerini çıkaralım:

import openpyxl
from collections import defaultdict
import pandas as pd

def extract_column_info(excel_file_path):
    """Excel dosyasından tüm çalışma sayfaları ve sütunlar hakkında bilgi çıkarır."""
    workbook = openpyxl.load_workbook(excel_file_path, data_only=True)
    data_dict = {}
    
    for sheet_name in workbook.sheetnames:
        sheet = workbook[sheet_name]
        if sheet.max_row <= 1:  # Boş sayfaları atla
            continue
            
        # İlk satırı başlık olarak kullan
        headers = [cell.value for cell in sheet[1]]
        
        # Sütun bilgilerini topla
        sheet_data = defaultdict(lambda: {"data_type": set(), "sample_values": []})
        
        # Sütunları döngüye al (en fazla 100 satır veya mevcut satır sayısı)
        max_sample_rows = min(sheet.max_row, 101)
        for row_idx in range(2, max_sample_rows):
            for col_idx, header in enumerate(headers, 1):
                if header is None:
                    continue
                    
                cell_value = sheet.cell(row=row_idx, column=col_idx).value
                if cell_value is not None:
                    data_type = type(cell_value).__name__
                    sheet_data[header]["data_type"].add(data_type)
                    
                    # En fazla 5 örnek değer sakla
                    if len(sheet_data[header]["sample_values"]) < 5:
                        sheet_data[header]["sample_values"].append(str(cell_value))
        
        # Veri tiplerini uygun şekilde biçimlendir
        for header, info in sheet_data.items():
            info["data_type"] = ", ".join(info["data_type"])
        
        data_dict[sheet_name] = dict(sheet_data)
    
    return data_dict

Bu fonksiyon:

  1. Excel dosyasını OpenPyXL ile yükler
  2. Her çalışma sayfasını döngüye alır
  3. Başlıkları ilk satırdan çıkarır
  4. Her sütunun veri tiplerini ve örnek değerlerini toplar
  5. Veri sözlüğünü çalışma sayfası adına göre düzenler

AI ile Excel Sütun Tanımlarını Zenginleştirme

Şimdi, yapay zeka kullanarak sütun adlarına ve örnek değerlere dayalı tanımlar oluşturacağız. Bu iş için bir AI API’si (örneğin OpenAI veya Claude) kullanacağız:

import anthropic
import time
from tenacity import retry, stop_after_attempt, wait_exponential

client = anthropic.Anthropic(api_key="YOUR_API_KEY")

@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def generate_column_description(column_name, data_type, sample_values):
    """AI kullanarak sütun adı ve örnek değerlere dayalı bir açıklama oluşturur."""
    try:
        prompt = f"""
        Bir veri sözlüğü için aşağıdaki sütun hakkında kısa bir tanım yazın:
        
        Sütun Adı: {column_name}
        Veri Tipi: {data_type}
        Örnek Değerler: {', '.join(sample_values) if sample_values else 'Örnek yok'}
        
        Lütfen bu sütunun neyi temsil ettiğini ve neden önemli olabileceğini açıklayan kısa (bir veya iki cümlelik) bir tanım yazın.
        """
        
        response = client.messages.create(
            model="claude-3-sonnet-20240229",
            max_tokens=150,
            messages=[
                {"role": "user", "content": prompt}
            ]
        )
        
        # Yanıttaki yeni satırları ve fazla boşlukları temizle
        description = response.content[0].text.strip()
        return description
    
    except Exception as e:
        print(f"Error generating description for column {column_name}: {e}")
        return "Tanım oluşturulamadı."

Bu fonksiyon:

  1. Sütun adı, veri tipi ve örnek değerleri içeren bir prompt oluşturur
  2. AI API’sine bir istek gönderir
  3. Yanıtı işler ve temiz bir açıklama döndürür
  4. Hata durumunda yeniden deneme mantığı içerir

Çözümün Uygulanması

Artık temel bileşenlere sahip olduğumuza göre, tam çözümü birleştirelim:

import openpyxl
from collections import defaultdict
import anthropic
import time
import pandas as pd
from tenacity import retry, stop_after_attempt, wait_exponential

def create_data_dictionary(excel_file_path, output_path=None):
    """
    Excel dosyasından bir veri sözlüğü oluşturur ve sonuçları bir Excel dosyasına kaydeder.
    """
    # Sütun bilgilerini çıkar
    data_dict = extract_column_info(excel_file_path)
    
    # Her sütun için açıklamalar oluştur
    for sheet_name, columns in data_dict.items():
        print(f"Processing sheet: {sheet_name}")
        for column_name, info in columns.items():
            print(f"  Generating description for column: {column_name}")
            description = generate_column_description(
                column_name, 
                info["data_type"], 
                info["sample_values"]
            )
            info["description"] = description
            # API hız sınırlamalarını aşmamak için kısa bir bekleme
            time.sleep(0.5)
    
    # Sonuçları bir DataFrame'e dönüştür ve Excel olarak kaydet
    if output_path is None:
        output_path = f"{excel_file_path.rsplit('.', 1)[0]}_data_dictionary.xlsx"
    
    with pd.ExcelWriter(output_path) as writer:
        for sheet_name, columns in data_dict.items():
            # Her sütun için bilgileri bir listeye ekle
            rows = []
            for column_name, info in columns.items():
                rows.append({
                    "Sütun Adı": column_name,
                    "Veri Tipi": info["data_type"],
                    "Örnek Değerler": ", ".join(info["sample_values"]),
                    "Açıklama": info["description"]
                })
            
            # DataFrame oluştur ve Excel'e yaz
            if rows:
                df = pd.DataFrame(rows)
                df.to_excel(writer, sheet_name=sheet_name, index=False)
    
    print(f"Data dictionary created and saved to {output_path}")
    return data_dict

Kullanım Örneği

Bu kodu kullanmak için sadece Excel dosyanızın yolunu belirtin:

# Veri sözlüğü oluştur
data_dict = create_data_dictionary("örnek_veri.xlsx")

Çıktı dosyası şunları içerecektir:

  1. Her çalışma sayfası için ayrı bir sekme
  2. Her sütun için aşağıdaki bilgileri içeren bir tablo:
    • Sütun adı
    • Veri tipi
    • Örnek değerler
    • AI tarafından oluşturulan açıklama

Sonuç

Bu yaklaşımı kullanarak, herhangi bir Excel dosyası için kapsamlı bir veri sözlüğü otomatik olarak oluşturulabilir. Bu, özellikle aşağıdaki durumlarda faydalıdır:

  • İlk kez karşılaştığınız veri setleriyle çalışırken
  • Ekip üyeleri için veri dokümantasyonu oluştururken
  • Veri kalitesi ve yönetişimi süreçlerini geliştirirken

Bu çözüm, manuel dokümantasyon yükünü önemli ölçüde azaltır ve veri analizi süreçlerinizde daha fazla şeffaflık ve verimlilik sağlar.

Önerilen iyileştirmeler:

  1. Daha ayrıntılı veri profili oluşturma (boş değerler, benzersiz değerler)
  2. Grafik ve pivot tablolar gibi diğer Excel öğelerini belgeleme
  3. Daha gelişmiş veri tipi tespiti (örneğin tarih formatlarını tanıma)
  4. Özel bir web arayüzü ile etkileşimli veri sözlükleri oluşturma

Bu tekniği kullanarak, veri anlama sürecinizi hızlandırabilir ve veri kümelerinizin daha iyi dokümante edilmesini sağlayabilirsiniz.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir