Asıl soru, insanların neden DataFrame soyutlamaları için saf SQL soyutlamalarından daha üretken olduklarıdır.
TLDR; DataFrames, SQL (insan) gelişimi ve hata ayıklama işlemiyle ilgili değildir.
Temel sebep, DataFrame soyutlamalarının ayrıntılı ve okunaksız yuvalardan kaçınırken SQL ifadeleri oluşturmanıza izin vermesidir. İç içe geçmiş rutinleri yazma, onları kontrol etmeleri için yorum yapma ve ardından yorum yapma şekli tek bir dönüşüm satırı ile değiştirilir. İşleri doğal olarak bir repl'de satır satır çalıştırabilir (Spark'ta bile) ve sonuçları görüntüleyebilirsiniz.
Bir tabloya yeni bir dönüştürülmüş (dize sütunlu sütun) ekleyerek, ardından gruplayarak ve bazı toplamalar yaparak bir örnek ele alın. SQL oldukça çirkinleşiyor. Pandalar bunu çözebilir, ancak gerçekten büyük veriye veya belirli bölümlere gelince bazı şeyleri kaçırıyor (belki de yakın zamanda geliştirildi).
DataFrames, pandalarla birlikte bazı SQL planlamacılara dönüştürülmemiş olsalar bile, SQL rutinlerine yönelik üst düzey bir API olarak görülmelidir.
-
Muhtemelen bu konuda pek çok teknik tartışma olabilir, ancak aşağıdaki kullanıcı bakış açısını düşünüyorum.
SQL’lerin aksine, Panda’ların veri manipülasyonu hakkında çok daha fazla soru görebilmenizin basit bir nedeni, SQL’in tanım gereği, bir veritabanı kullanmak anlamına gelmesi ve bu günlerde oldukça fazla veri bitmesi gerekmesidir. bire bir yapılan (görevler .csv, web api, vb.). Bu durumlarda veri tabanından yükleme, saklama, işleme ve çıkarma mümkün değildir.
Bununla birlikte, kullanım durumunun Pandalar veya SQL kullanarak haklı olabileceği durumlar göz önüne alındığında, kesinlikle yanlış değilsiniz. Çok sayıda, tekrarlayan veri işleme görevlerini yerine getirmek ve çıktılarını sürdürmek istiyorsanız, her zaman önce SQL üzerinden geçmeyi denemeyi öneririm. Nedenini gördüklerimden, bu durumlarda bile birçok kullanıcının SQL üzerinden geçmemesinin iki katı olduğunu düşünüyorum.
Birincisi, pandaların SQL üzerinden elde ettiği en büyük avantaj, daha geniş bir Python evreninin bir parçası olmasıdır; bu, tek bir tıklamayla düştüğümde, verilerimi yükleyebilir, temizleyebilir, değiştirebilir ve görselleştirebilirim (hatta SQL'i Pandalar aracılığıyla çalıştırabilirim ...). Diğeri, oldukça basit bir şekilde, çok fazla kullanıcının SQL'in yeteneklerini bilmediği yönündedir. Her yeni başlayan, SQL 'in (SELECT, FROM, WHERE, vs.)' çıkarım sözdizimini ', verilerinizi bir DB'den bir sonraki yere almak için bir araç olarak öğrenir. Bazıları daha gelişmiş gruplama ve yineleme sözdiziminin bir kısmını alabilir. Ancak bundan sonra, uzmanlara (DBA, Veri Mühendisleri, vb.) Ulaşana kadar, bilgide oldukça önemli bir uçurum olma eğilimindedir.
tl; dr: Genellikle, SQL'in yeteneklerinin kapsamı çevresinde kullanım durumu, kolaylık ya da bilgi eksikliği söz konusudur.