Panda öğrenirken aylarca bu sorunun cevabını bulmaya çalıştım. SAS'ı günlük işlerim için kullanıyorum ve çekirdek dışı desteği için harika. Bununla birlikte, SAS, başka birçok nedenden dolayı bir yazılım parçası olarak korkunçtur.
Bir gün SAS kullanımımı python ve pandalarla değiştirmeyi umuyorum, ancak şu anda büyük veri kümeleri için çekirdek dışı bir iş akışından yoksunum. Dağıtılmış bir ağ gerektiren "büyük veri" den bahsetmiyorum, daha ziyade belleğe sığmayacak kadar büyük ancak bir sabit sürücüye sığacak kadar küçük dosyalar.
İlk düşüncem, HDFStore
büyük veri kümelerini diskte tutmak ve yalnızca ihtiyaç duyduğum parçaları analiz için veri çerçevelerine çekmek. Diğerleri MongoDB'yi kullanımı daha kolay bir alternatif olarak belirtmiştir. Sorum şu:
Aşağıdakileri gerçekleştirmek için en iyi uygulama iş akışları nelerdir:
- Düz dosyaları kalıcı bir disk üstü veritabanı yapısına yükleme
- Panda veri yapısına beslenecek verileri almak için bu veritabanını sorgulama
- Pandalarda parçaları işledikten sonra veritabanını güncelleme
Gerçek dünya örnekleri, özellikle "büyük veriler" üzerinde panda kullanan herkes için çok takdir edilecektir.
Düzenle - bunun nasıl çalışmasını istediğinize bir örnek:
- Büyük bir düz dosyayı aralıksız olarak içe aktarın ve kalıcı, disk üstü veritabanı yapısında saklayın. Bu dosyalar genellikle belleğe sığmayacak kadar büyüktür.
- Pandaları kullanmak için, bu verilerin belleğe sığabilecek alt kümelerini (genellikle bir seferde sadece birkaç sütun) okumak istiyorum.
- Seçilen sütunlarda çeşitli işlemler yaparak yeni sütunlar oluşturabilirim.
- Sonra bu yeni sütunları veritabanı yapısına eklemek zorunda kalacak.
Bu adımları gerçekleştirmenin en iyi yolunu bulmaya çalışıyorum. Pandalar ve pire ile ilgili bağlantıları okumak, yeni bir sütun eklemenin bir sorun olabileceği görülüyor.
Edit - Jeff'in sorularına özellikle cevap vermek:
- Tüketici kredi riski modelleri oluşturuyorum. Veri türleri telefon, SSN ve adres özelliklerini; mülk değerleri; Adli sicil kayıtları, iflaslar, vs. gibi aşağılayıcı bilgiler ... Her gün kullandığım veri kümelerinin, ortalama olarak sayısal ve karakter verilerinin sürekli, nominal ve sıra değişkenleri olmak üzere ortalama karışık veri türlerinde yaklaşık 1.000 ila 2.000 alanı vardır. Nadiren satır ekliyorum, ancak yeni sütunlar oluşturan birçok işlem gerçekleştiriyorum.
- Tipik işlemler, koşullu mantık kullanarak birkaç sütunun yeni bir bileşik sütunda birleştirilmesini içerir. Örneğin
if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'
,. Bu işlemlerin sonucu, veri kümemdeki her kayıt için yeni bir sütundur. - Son olarak, bu yeni sütunları diskteki veri yapısına eklemek istiyorum. Model için ilginç, sezgisel ilişkiler bulmaya çalışan verileri çapraz tablolar ve açıklayıcı istatistikler ile inceleyerek 2. adımı tekrar ediyorum.
- Tipik bir proje dosyası genellikle yaklaşık 1 GB'dir. Dosyalar, bir satırın tüketici verilerinin bir kaydını içereceği şekilde düzenlenir. Her satır, her kayıt için aynı sayıda sütuna sahiptir. Her zaman böyle olacak.
- Yeni bir sütun oluştururken satırlara göre alt kümeler oluşturmak oldukça nadirdir. Ancak, rapor oluştururken veya açıklayıcı istatistikler oluştururken satırları alt kümelere ayırmak benim için oldukça yaygın. Örneğin, Perakende kredi kartları gibi belirli bir iş kolu için basit bir sıklık oluşturmak isteyebilirim. Bunu yapmak için, hangi satırları rapor etmek istediğime ek olarak yalnızca iş kolunun = perakende olduğu kayıtları seçerim. Ancak, yeni sütunlar oluştururken, tüm veri satırlarını ve yalnızca işlemler için ihtiyacım olan sütunları çekerdim.
- Modelleme süreci, her sütunu analiz etmemi, bazı sonuç değişkenleriyle ilginç ilişkiler aramamı ve bu ilişkileri tanımlayan yeni bileşik sütunlar oluşturmamı gerektirir. Keşfettiğim sütunlar genellikle küçük setler halinde yapılır. Örneğin, sadece mülk değerleri ile ilgilenen bir dizi 20 sütuna odaklanacağım ve bunların bir kredinin temerrüde düşme ile nasıl ilişkili olduğunu gözlemleyeceğim. Bunlar keşfedildikten ve yeni sütunlar oluşturulduktan sonra, başka bir sütun grubuna geçiyorum, üniversite eğitimi diyorum ve süreci tekrar ediyorum. Yaptığım şey verilerim ve bazı sonuçlar arasındaki ilişkiyi açıklayan aday değişkenler oluşturmak. Bu sürecin sonunda, bu bileşik sütunlardan bir denklem oluşturan bazı öğrenme tekniklerini uyguluyorum.
Veri kümesine hiç satır eklemem nadirdir. Neredeyse her zaman yeni sütunlar yaratacağım (istatistik / makine öğrenimi konusundaki değişkenler veya özellikler).