Преобразование Django QuerySet в pandas DataFrame

Я собираюсь преобразовать QuerySet Django в pandas DataFrame следующим образом:

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

Он работает, но есть ли более эффективный способ?

4 Solutions collect form web for “Преобразование Django QuerySet в pandas DataFrame”

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

Выше было то, как я делаю то же самое. Самое полезное дополнение – это указать, какие поля вам интересны. Если это только подмножество доступных полей, которые вам интересны, то это даст повышение производительности, я думаю.

Django Pandas решает это довольно аккуратно: https://github.com/chrisdev/django-pandas/

Из README:

 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 (я не знаком с pandas ) это прекрасно. Меня беспокоит только то, что если у вас очень большое количество записей, вы можете столкнуться с проблемами памяти. Если бы это было так, то было бы необходимо что-то вроде этого эффективного итератора запросов . (Этот фрагмент, как написано, может потребовать некоторого переписывания, позволяющего использовать интеллектуальное использование .values() ).

Возможно, вы можете использовать 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() 
  • Примените стили при экспорте в «xlsx» в pandas с помощью XlsxWriter
  • dataframe values.tolist () тип данных
  • binning dataframe в пандах в Python
  • Панды, как применять несколько функций к кадру данных
  • Как читать / писать в подгруппу с HDF5Store?
  • Есть ли параметр в matplotlib / pandas, чтобы иметь ось Y гистограммы в процентах?
  • Использование регулярных выражений в базе данных pandas
  • python pandas beginner: многомерный процесс анализа данных (groupby + agg + plot)
  • Применение функции в нескольких столбцах для создания нескольких новых столбцов
  • использование pandas для выбора строк, обусловленных множественными эквивалентами
  • Подсчитайте, если: задание находится в определенном временном интервале
  • Python - лучший язык программирования в мире.