1
1
Fork 0
novelmetrix-python/ras/api/views.py

65 lines
1.8 KiB
Python

from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Books
import pandas as pd
from .serializers import BooksSerializer
from django.db.models import Q
from django.templatetags.static import static
import json
@api_view(['GET'])
def books_per_genre_per_month(request):
datayear = request.META.get('HTTP_YEAR')
if datayear:
data = []
# Get CSV file with book data
df = pd.read_csv("api/static/books2.csv", encoding = "utf-8", header = 0, sep=';')
# Filter data on year
df = df.where(df['readed'].str.contains(datayear))
# Filter array on genre and date
booksPerMonth = df.groupby(['genre','readed'])['genre'].count().reset_index(name="count")
booksPerMonth = booksPerMonth.sort_values(by='readed')
for index, row in booksPerMonth.iterrows():
data.append({
"genre": row['genre'],
"readed": row['readed'],
"count": row['count']
})
return Response(data)
else:
return Response("No year header included")
@api_view(['GET'])
def avg_ratings_per_month(request):
datayear = request.META.get('HTTP_YEAR')
if datayear:
data = []
# Get CSV file with book data
df = pd.read_csv("api/static/books2.csv", encoding = "utf-8", header = 0, sep=';')
# Filter data on year
df = df.where(df['readed'].str.contains(datayear))
avgratingspermonth = df.groupby('readed')['rating'].mean().reset_index(name="rating")
for index, row in avgratingspermonth.iterrows():
data.append({
"date": row['readed'],
"rating": int(row['rating'])
})
return Response(data)
else:
return Response("No year header included")