Aylardır pandaları öğrenirken 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. Ancak SAS, birçok başka nedenden dolayı bir yazılım parçası olarak korkunç.
Bir gün SAS kullanımımı python ve pandalar ile değiştirmeyi umuyorum, ancak şu anda büyük veri kümeleri için çekirdek dışı bir iş akışına sahip değilim. belleğe sığıyor ama bir sabit sürücüye sığacak kadar küçük.
İlk düşüncem, büyük veri kümelerini diskte tutmak ve yalnızca ihtiyacım olan parçaları veri çerçevelerine çekmek için HDFStore
kullanmak. analiz için. Diğerleri, kullanımı daha kolay bir alternatif olarak MongoDB'den bahsetti. Sorum şu:
Aşağıdakileri gerçekleştirmek için en iyi uygulamalı iş akışlarından bazıları nelerdir:
- Düz dosyaları kalıcı, disk üzerindeki bir veritabanı yapısına yükleme
- Bir pandaların veri yapısını besleyecek verileri almak için bu veritabanını sorgulamak
- Pandalardaki parçaları manipüle ettikten sonra veritabanını güncellemek
Gerçek dünyadan örnekler çok takdir edilecektir. , özellikle "büyük veri" üzerinde panda kullanan herkesten.
Düzenle -- bunun nasıl çalışmasını istediğime bir örnek:
- Yinelemeli olarak büyük bir düz- dosyalayın ve kalıcı, disk üzerindeki bir veritabanı yapısında saklayın. Bu dosyalar genellikle belleğe sığmayacak kadar büyüktür.
- Panda'ları kullanmak için, bu verilerin belleğe sığabilecek alt kümelerini (genellikle bir seferde yalnızca birkaç sütun) okumak istiyorum.
- Seçili sütunlar üzerinde çeşitli işlemler yaparak yeni sütunlar oluştururdum.
- Ardından bu yeni sütunları veritabanı yapısına eklemem gerekirdi.
Bu adımları gerçekleştirmenin en iyi yolunu bulmaya çalışıyorum. Pandalar ve pytables ile ilgili bağlantıları okumak, yeni bir sütun eklemek sorun olabilir gibi görünüyor.
Düzenle -- Jeff'in sorularını özel olarak yanıtlamak:
- Tüketici oluşturuyorum kredi riski modelleri Veri türleri arasında telefon, SSN ve adres özellikleri, mülk değerleri, sabıka kayıtları, iflaslar vb. gibi aşağılayıcı bilgiler bulunur... Her gün kullandığım veri kümeleri, ortalama olarak yaklaşık 1.000 ila 2.000 alana sahip karma veri türleri: hem sayısal hem de karakter verilerinin sürekli, nominal ve sıralı değişkenleri. 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ütunu yeni bir bileşikte birleştirmeyi içerir. sütun. Örneğin,
var1 >2 ise, yenivar = "A" elif var2 = 4 ise yenivar = "B"
. Bu işlemlerin sonucu, veri kümemdeki her kayıt için yeni bir sütundur. - Son olarak, bu yeni sütunları disk üzerindeki veri yapısına eklemek istiyorum. d Modelle ilginç, sezgisel ilişkiler bulmaya çalışan çapraz tablolar ve tanımlayıcı istatistiklerle verileri keşfederek 2. adımı tekrarlayın.
- Tipik bir proje dosyası genellikle yaklaşık 1 GB'dir. Dosyalar, bir satırın tüketici verilerinin bir kaydından oluştuğu şekilde düzenlenir. Her satır, her kayıt için aynı sayıda sütuna sahiptir. Bu her zaman böyle olacaktır.
- Yeni bir sütun oluştururken satırlara göre alt gruplara ayırmam oldukça nadirdir. Ancak, raporlar oluştururken veya açıklayıcı bilgiler oluştururken satırları alt kümelere ayırmam oldukça yaygındır. İstatistik. Örneğin, Perakende kredi kartları gibi belirli bir iş kolu için basit bir frekans oluşturmak isteyebilirim. Bunu yapmak için, raporlamak istediğim sütunlara ek olarak yalnızca iş alanının = perakende olduğu kayıtları seçerdim. Ancak yeni sütunlar oluştururken, tüm veri satırlarını ve yalnızca işlemler için ihtiyaç duyduğum sütunları çekerdim.
- Modelleme süreci, her sütunu analiz etmemi, bazı sonuç değişkenleriyle ilginç ilişkiler aramamı gerektirir, ve bu ilişkileri tanımlayan yeni bileşik sütunlar oluşturun. Araştırdığım sütunlar genellikle küçük kümeler halinde yapılır. Örneğin, sadece mülk değerleriyle ilgilenen 20 sütundan oluşan bir diziye odaklanacağım ve bunların bir kredinin temerrüde düşmesiyle nasıl ilişkili olduklarını gözlemleyeceğim. Bunlar araştırılıp yeni sütunlar oluşturulduktan sonra, başka bir sütun grubuna geçiyorum, diyelim ki üniversite eğitimi ve süreci tekrarlıyorum. Yaptığım şey, verilerimle bazı sonuçlar arasındaki ilişkiyi açıklayan aday değişkenler yaratmak. Bu sürecin en sonunda, bu bileşik sütunlardan bir denklem oluşturan bazı öğrenme teknikleri uyguluyorum.
Veri kümesine satır eklemek nadirdir. Neredeyse her zaman yeni sütunlar (istatistik/makine öğrenimi dilindeki değişkenler veya özellikler) oluşturuyor olacağım.