Python SQL Livecode

Задача 1

# Написать функцию, которая возвращает True если строка s
# является анаграмой строки t. Иначе вернуть False
  
# Пример 1
input_1 = ('abc', 'bca')
output_1 = True
 
# Пример 2
input_2 = ('abcd', 'bca')
output_2 = False
 
def check_anagrams(s, t):
    # your code here
 
print(check_anagrams(*input_1))
print(check_anagrams(*input_2))

Задача 2

# Написать функцию, удаляющую дубликаты из массива.
# Каждый элемент должен встречаться в массиве только один раз.
# При этом относительный порядок элементов должен остаться прежним. 
 
# Формат ввода
# Строка из n натуральных чисел, разделённых пробелами.
 
# Формат вывода
# Строка из элементов исходного массива без дублей.
# Длина строки должна соответствовать длине исходного массива.
# Элементы должны быть разделены пробелами.
 
# Пример 1
input_1 = '1 1 2'
output_1 = '1 2 _'
 
# Пример 2
input_2 = '0 0 1 1 1 2 2 3 3 4'
output_2 = '0 1 2 3 4 _ _ _ _ _'
 
# Пример 3
input_3 = '4 0 0 2 1 1 2 2 3 3 4'
output_3 = '4 0 2 1 3 _ _ _ _ _ _'
 
def drop_duplicates(input_str):
    # your code here
 
print(drop_duplicates(input_1))
print(drop_duplicates(input_2))
print(drop_duplicates(input_3))

Задача 3

# Имеется 2 таблицы: кредитные заявки (applications) и вызовы модели (model_calls).
 
# applications
# app_id  | app_day    | product
# ------------------------------
# 1       | 2020-01-01 | KK
# 2       | 2020-01-02 | KK
 
# model_calls
# app_id  | call_time            | score
# ------------------------------------
# 1       | 2020-01-01 12:23:16  | 500
# 1       | 2020-01-01 14:23:25  | 100
# 1       | 2020-01-01 16:23:45  | 333
# 2       | 2020-01-02 10:20:34  | 450  
 
# Написать SQL-запрос, который бы вывел 1-й и 3-й по времени score по каждому app_id.
# Необходимо учитывать только заявки на кредитную карту (product = 'КК').
 
import sqlite3
 
conn = sqlite3.connect('clients.db')
cursor = conn.cursor()  
 
query = """
 
""" # your code here
 
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
    print(row)
conn.close()

Задача 4

# Имеется датафрейм
 
# |    | date                | product   |   score_1 |   score_2 |   target |
# |---:|:--------------------|:----------|----------:|----------:|---------:|
# |  0 | 2023-01-11 00:00:00 | A         |       100 |       250 |        1 |
# |  1 | 2023-01-21 00:00:00 | B         |       200 |       200 |        0 |
# |  2 | 2023-01-28 00:00:00 | A         |        50 |       100 |        1 |
# |  3 | 2023-03-08 00:00:00 | A         |       200 |       300 |        1 |
# |  4 | 2023-03-15 00:00:00 | B         |       100 |        50 |        1 |
# |  5 | 2023-03-16 00:00:00 | B         |        50 |        40 |        0 |
# |  6 | 2023-04-09 00:00:00 | A         |        70 |       180 |        1 |
# |  7 | 2023-04-11 00:00:00 | B         |       100 |       200 |        0 |
# |  8 | 2023-04-22 00:00:00 | A         |        80 |       150 |        0 |
  
# Нужно
# Для скоров score_1, score_2 посчитать roc_auc по месяцам  
 
import pandas as pd
from sklearn.metrics import roc_auc_score
 
data = pd.read_csv('credit_data.csv')
 
# your code here  
 
print(data)

Задача 5

# Написать подкласс любой sklearn модели имеющей fit и predict методы,
# который дополнит функционал модели:
#    1. Во время .fit метода вывод (print) размера (.shape) переданных данных.
#    2. Во время .predict метода мог принимать питон словарь (dict) с одним экземпляром.
#    Ex. : {‘var_1’: 1, ‘var_2’: 3, …}.
# При решении подумайте о возможных нюансах входных данных такого формата.
 
import numpy as np
from sklearn.linear_model import LinearRegression
 
def linear_expression(x):
  """
  """
  return 5 * x + 6
 
objects_num = 100
X = np.linspace(-5, 5, objects_num)
y = linear_expression(X) + np.random.randn(objects_num) * 5
  
class LinRegNew(LinearRegression):
  # your code here
  
model = LinRegNew()
model.fit(X[:, np.newaxis], y)
print(model.predict({'var_1': 0}))