placement_points

dev
AlexP077 3 years ago
parent 7e5034c2a5
commit 558c93bec7

1
.gitignore vendored

@ -87,6 +87,7 @@ celerybeat-schedule
*.sage.py
# Environments
*.env
.env
.venv
env/

@ -1,10 +0,0 @@
CONTAINERS_NAME=rsrv
# The name of the image to use for the containers
DJANGO_PORT=8000
# The django container settings and enviroment
POSTGRES_DB=rsrv_db
POSTGRES_HOST=localhost
POSTGRES_PORT=5435
POSTGRES_USER=rsrv_user
POSTGRES_PASSWORD=rsrv_pass
DEBUG=True

@ -1,21 +1,61 @@
catboost
asgiref==3.6.0
attrs==22.2.0
catboost==1.1.1
certifi==2022.12.7
charset-normalizer==3.0.1
click==8.1.3
click-plugins==1.1.1
cligj==0.7.2
coreapi==2.3.3
coreschema==0.0.4
cycler==0.11.0
Django==3.2
django-cors-headers==3.12.0
django-json-widget==1.1.1
django-rest-registration==0.7.3
djangorestframework==3.11.1
psycopg2-binary==2.9.3
pandas==1.4.2
xlrd==1.2.0
tqdm==4.64.0
drf-yasg==1.21.5
et-xmlfile==1.1.0
Fiona==1.9.1
fonttools==4.38.0
future==0.18.3
geopandas==0.12.2
graphviz==0.20.1
greenlet==2.0.2
gunicorn==19.9.0
django-cors-headers==3.12.0
pyshp==2.3.0
idna==3.4
inflection==0.5.1
itypes==1.2.0
Jinja2==3.1.2
kiwisolver==1.4.4
MarkupSafe==2.1.2
matplotlib==3.5.2
munch==2.5.0
numpy==1.24.2
openpyxl==3.0.10
shapely
pygeos
xlsxwriter
django-json-widget
django-rest-registration
geopandas
sqlalchemy
numpy
drf-yasg
packaging==23.0
pandas==1.4.2
Pillow==9.4.0
plotly==5.13.0
psycopg2-binary==2.9.3
pygeos==0.14
pyparsing==3.0.9
pyproj==3.4.1
pyshp==2.3.0
python-dateutil==2.8.2
pytz==2022.7.1
requests==2.28.2
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.7
scipy==1.10.0
shapely==2.0.1
six==1.16.0
SQLAlchemy==2.0.3
sqlparse==0.4.3
tenacity==8.2.1
tqdm==4.64.0
typing_extensions==4.5.0
uritemplate==4.1.1
urllib3==1.26.14
xlrd==1.2.0
XlsxWriter==3.0.8

@ -1,3 +1,4 @@
from django.contrib import admin
from django.db import models
from service.models import PlacementPoint
admin.site.register(PlacementPoint)

@ -0,0 +1,33 @@
# Generated by Django 3.2 on 2023-02-18 15:37
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='PlacementPoint',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location_id', models.IntegerField(blank=True, null=True, verbose_name='Id локации')),
('lon', models.FloatField(blank=True, null=True, verbose_name='Долгота')),
('lat', models.FloatField(blank=True, null=True, verbose_name='Широта')),
('status', models.TextField(blank=True, null=True, verbose_name='Статус')),
('category', models.TextField(blank=True, null=True, verbose_name='Категория')),
('prediction', models.IntegerField(blank=True, null=True, verbose_name='Прогноз')),
('age', models.IntegerField(blank=True, null=True, verbose_name='Возраст')),
('plan', models.IntegerField(blank=True, null=True, verbose_name='Плановый показатель')),
('fact', models.IntegerField(blank=True, null=True, verbose_name='Фактический показатель')),
('delta', models.IntegerField(blank=True, null=True, verbose_name='Разница')),
('sample_trn', models.IntegerField(blank=True, null=True)),
('okrug', models.TextField(blank=True, null=True, verbose_name='Округ')),
('rayon', models.TextField(blank=True, null=True, verbose_name='Район')),
],
),
]

@ -0,0 +1,17 @@
from django.db import models
class PlacementPoint(models.Model):
location_id = models.IntegerField(null=True, blank=True, verbose_name='Id локации')
lon = models.FloatField(verbose_name="Долгота", null=True, blank=True)
lat = models.FloatField(verbose_name="Широта", null=True, blank=True)
status = models.TextField(null=True, blank=True, verbose_name='Статус')
category = models.TextField(null=True, blank=True, verbose_name='Категория')
prediction = models.IntegerField(null=True, blank=True, verbose_name='Прогноз')
age = models.IntegerField(null=True, blank=True, verbose_name='Возраст')
plan = models.IntegerField(null=True, blank=True, verbose_name='Плановый показатель')
fact = models.IntegerField(null=True, blank=True, verbose_name='Фактический показатель')
delta = models.IntegerField(null=True, blank=True, verbose_name='Разница')
sample_trn = models.IntegerField(null=True, blank=True)
okrug = models.TextField(null=True, blank=True, verbose_name='Округ')
rayon = models.TextField(null=True, blank=True, verbose_name='Район')

@ -0,0 +1,6 @@
from rest_framework.pagination import PageNumberPagination
class MyPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'

@ -0,0 +1,8 @@
from rest_framework import serializers
from service import models
class PlacementPointSerializer(serializers.ModelSerializer):
class Meta:
model = models.PlacementPoint
fields = '__all__'

@ -1,10 +1,12 @@
from django.urls import path, re_path
from django.urls import path, re_path, include
from service import views
from rest_framework import permissions
from rest_framework import permissions, routers
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
router = routers.DefaultRouter()
router.register('', views.PlacementPointViewSet)
schema_view = get_schema_view(
openapi.Info(
@ -21,6 +23,7 @@ schema_view = get_schema_view(
)
urlpatterns = [
path('placement_points', include(router.urls), name='placement_points'),
path('ao_and_rayons/', views.ao_and_rayons.as_view(), name='ao_and_rayons'),
path('raschet/', views.raschet.as_view(), name='ao_and_rayons'),
re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),

@ -1,6 +1,8 @@
import pandas as pd
from django.conf import settings
import sqlalchemy
from service import models
from tqdm import tqdm
def raschet_real(df, koefs):
koef_summ = sum(koefs.values())
@ -50,3 +52,14 @@ def raschet(tables, filters, koefs, method):
nets_df = nets[(nets['model'] >= rate_from) & (nets['model'] <= rate_to)]
return points_df, nets_df
# ==============
def load_data(filepath: str):
models.PlacementPoint.objects.all().delete()
df = pd.read_csv(filepath).iloc[:,1:].to_dict('records')
for data in tqdm(df, desc='Loading data...'):
dt = models.PlacementPoint(**data)
dt.save()

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save