datetimefield concatenate and python django pandas

python - concatenate - Conversión de Django QuerySet a pandas DataFrame



format django datetimefield (4)

Desde la perspectiva de Django (no estoy familiarizado con los pandas ) esto está bien. Mi única preocupación es que si tiene una gran cantidad de registros, puede tener problemas de memoria. Si este fuera el caso, sería necesario algo similar a este iterador de conjunto de consulta eficiente en memoria . (El fragmento tal como está escrito podría requerir alguna reescritura para permitir el uso inteligente de .values() ).

Voy a convertir un Django QuerySet en un DataFrame siguiente manera:

qs = SomeModel.objects.select_related().filter(date__year=2012) q = qs.values(''date'', ''OtherField'') df = pd.DataFrame.from_records(q)

Funciona, pero ¿hay una manera más eficiente?


Django Pandas lo resuelve bastante bien: https://github.com/chrisdev/django-pandas/

Del LÉAME:

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)


Quizás puedas usar model_to_dict

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()


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'')))

Lo anterior es cómo hago lo mismo. La adición más útil es especificar qué campos le interesan. Si solo se trata de un subconjunto de los campos disponibles que le interesan, esto supondría un aumento del rendimiento, imagino.