Bir pandalar DataFrame
bir Django Sorgu Kümesi dönüştürmek için gidiyorum?Django QuerySet DataFrame
cevap
Django perspektifinden (pandas
modeline aşina değilim) bu sorun değil. Tek endişem, çok fazla sayıda kayda sahip olmanız durumunda, bellek problemlerine maruz kalabilirsiniz. Durum buysa, bu memory efficient queryset iterator satırında bir şey gerekli olacaktır. (Yazılı snippet, akıllı kullanımınız için .values()
) yeniden yazmayı gerektirebilir).
@ GregoryGoltsov'un '.from_records()' kullanma ve 'list()' kullanma fikri, bellek verimliliği sorununu ortadan kaldırır. – hobs
Bellek verimliliği endişesi Django tarafında. ['.values ()'] (https://docs.djangoproject.com/en/1.7/ref/models/querysets/#django.db.models.query.QuerySet.values) sonuçları önbelleğe alan bir "ValuesQuerySet" döndürür Bu nedenle, yeterince büyük bir veri kümesi için, oldukça yoğun bellek olacak. –
Ahh evet. Queryset dizinine indekslemeniz gerekir * ve * hem memory hogs'u ortadan kaldırmak için liste kavraması olmadan '.from_records işlevini kullanın. Örneğin. 'pd.DataFrame.from_records (qs [i] .__ dict__, i aralığında (qs.count()))'. Ama işin bittiğinde bu sinir bozucu "" _state "sütununa sahipsin. 'qs.values () [i]' daha hızlı ve daha temiz, ama önbellekleri düşünüyorum. – hobs
import pandas as pd
import datetime
from myapp.models import BlogPost
df = pd.DataFrame(list(BlogPost.objects.all().values()))
df = pd.DataFrame(list(BlogPost.objects.filter(date__gte=datetime.datetime(2012, 5, 1)).values()))
# limit which fields
df = pd.DataFrame(list(BlogPost.objects.all().values('author', 'date', 'slug')))
Yukarıdaki gibi, aynı şeyi nasıl yaparım. En kullanışlı eklenti, ilgilendiğiniz alanları belirtir. İlgilendiğiniz mevcut alanların sadece bir alt kümesi ise, bu benim tahmin ettiğim bir performans artışı verir.
'list()' kullanma, kullanımdan kaldırılmıştır (pandalar 0.12'deyim). 'DataFrame.from_records() işlevinin kullanılması daha iyi çalışır; yani df = pd.DataFrame.from_records (BlogPost.objects.all(). Values ())'. – gregoltsov
Bu sorunun OP sorusundan kullanılması daha açık olacaktır. Örneğin, 'BlogPost'' 'SomeModel' ile aynı olması gerekiyordu? –
Belki model_to_dict kullanabilirsiniz
import datetime
from django.forms import model_to_dict
pallobjs = [ model_to_dict(pallobj) for pallobj in PalletsManag.objects.filter(estado='APTO_PARA_VENTA')]
df = pd.DataFrame(pallobjs)
df.head()
Django Pandalar yerine düzgünce bu çözer:
class MyModel(models.Model):
full_name = models.CharField(max_length=25)
age = models.IntegerField()
department = models.CharField(max_length=3)
wage = models.FloatField()
from django_pandas.io import read_frame
qs = MyModel.objects.all()
df = read_frame(qs)
Django Panda'ları büyük veri kümeleriyle nasıl ilgileniyor? https://github.com/chrisdev/django-pandas/blob/master/django_pandas/io.py#L107 Bu hat beni korkutuyor, çünkü tüm veri kümesinin bir kerede belleğe yükleneceği anlamına geldiğini düşünüyorum. –
- 1. Django QuerySet
- 2. Django: QuerySet
- 3. Bir QuerySet nesnesini Django
- 4. Django yönetici QuerySet filtreleme
- 5. Django Inner Join Queryset
- 6. Yalnızca Django Queryset
- 7. Django açıklama notuyla birlikte queryset
- 8. Django QuerySet birçok çoğa alanda
- 9. Django, queryset içinde gerçek ay
- 10. Django inlineformset_factory içinde Sorgu Queryset
- 11. Django: Belirli bir model için bir queryset alıyorum ve queryset
- 12. Aynı QuerySet
- 13. Django için SQL sorgularını inceleyin queryset delete
- 14. Django QuerySet Özel Sipariş İste göre
- 15. Django modeli bir işlev olarak queryset süzgeci
- 16. QuerySet, Object özellik yok id - Django
- 17. Filtre Django Queryset URL'ye Göre Parametre
- 18. Boş FileField için Django queryset filtresi?
- 19. Django queryset group by ve say sayıları
- 20. django queryset - ad ve soyad için arama
- 21. Django Queryset erişim dizin adına göre
- 22. Filtre uygulanmış queryset django admin'e nasıl alınır?
- 23. QuerySet burada programlama JSON Serializable Django
- 24. django queryset anahtarıyla iki tabloya nasıl bağlanır
- 25. django değerler listesi veritabanı motorları arasında queryset
- 26. Kullanım related_name QuerySet
- 27. Bir queryset gruplandırmak için django annotate() ve aggregate() nasıl kullanılır?
- 28. Django queryset güncelleştirme alanı geçerli değerini artırıyor/azaltıyor
- 29. Django: En son çocuk modelleri alanına dayalı bir QuerySet siparişi
- 30. django model yabancı anahtar queryset ilgili alanları seç
Merhaba @FrancoMariluis, konunun dışına bu konuda üzgün: README itibaren https://github.com/chrisdev/django-pandas/
vardır django projelerine pandalar kullanıyorsunuz. Django web uygulamaları aracılığıyla "matplotlib ile çizim" kullanarak grafikleri gösterirsiniz. Sizin için geçerli bir çözüm mü? Teşekkürler. – danihp
Merhaba, Django'da grafikler göstermek için iyi çalışıyor django-chartit kullanıyorum, ama bana daha esneklik verecek matplotlib kullanmayı düşünüyorum, –
iyi bir yol gibi görünüyor. –