Найдите стоимость всех товаров в первом и втором магазинах сети «Я вас услышал». Сохраните их в переменных stocks1_cost (англ. «стоимость запасов на складе») и stocks2_cost.
Найдите суммарную стоимость товаров двух магазинов сети и сохраните её в переменной total_cost (англ. «общая стоимость»).
import numpy as np
import pandas as pd
shop1_price = [20990, 11990 , 5390, 3190, 1990, 10990, 5999, 2290, 8111 , 3290]
shop1_quantity = [19, 11, 8, 15, 23, 7, 14, 9, 10, 4]
shop2_price = [20990, 12490, 4290, 2790, 2390, 10990, 4990, 2490, 8990, 3290]
shop2_quantity = [10, 16, 20, 9, 18, 12, 10, 11, 18, 22]
models = ['Apple AirPods Pro',
'Apple AirPods MV7N2RU/A',
'JBL Tune 120TWS',
'JBL TUNE 500BT',
'JBL JR300BT',
'Huawei Freebuds 3',
'Philips TWS SHB2505',
'Sony WH-CH500',
'Sony WF-SP700N',
'Sony WI-XB400',
]
stocks1 = pd.DataFrame({'Цена':shop1_price,
'Количество':shop1_quantity}, index=models)
stocks2 = pd.DataFrame({'Цена':shop2_price,
'Количество':shop2_quantity}, index=models)
stocks1_price = stocks1['Цена'].values
stocks1_quantity = stocks1['Количество'].values
stocks2_price = stocks2['Цена'].values
stocks2_quantity = stocks2['Количество'].values
# общая стоимость товаров в магазине 1
stocks1_cost = stocks1_price@stocks1_quantity
# общая стоимость товаров в магазине 2
stocks2_cost = stocks2_price@ stocks2_quantity
total_cost = stocks1_cost+ stocks2_cost
#print(stocks1_cost)
#print(stocks2_cost)
print('Общая стоимость всех товаров в сети:', total_cost, 'руб.')
Длина вектора, или его модуль, равна квадратному корню из скалярного произведения вектора на себя.
Задача 1
Постройте таблицу расстояний между населёнными пунктами и сохраните её в переменной distances. Представьте данные как список списков. Каждая строка — это расстояние от одного населённого пункта до остальных.
Добавьте в таблицу distances названия всех сёл и деревень. Обратите внимание, что здесь колонки называются не по правилам Python — кириллицей и с заглавной буквы. Названия деревень на латинице выглядят нечитабельно, а код должен понимать не только автор, но и другие разработчики. Функция print() выведет результат на экран.
import numpy as np
import pandas as pd
from scipy.spatial import distance
x_axis = np.array([0.0, 0.18078584, 9.32526599, 17.09628721,
4.69820241, 11.57529305, 11.31769349, 14.63378951])
y_axis = np.array([0.0, 7.03050245, 9.06193657, 0.1718145,
5.1383203, 0.11069032, 3.27703365, 5.36870287])
shipments = np.array([5, 7, 4, 3, 5, 2, 1, 1])
village = ['Тетерье',
'Журавец',
'Корсунь',
'Берёзовка',
'Протасово',
'Трудки',
'Нижний Туровец',
'Вышний Туровец']
data = pd.DataFrame({'x_coordinates_km': x_axis,
'y_coordinates_km': y_axis,
'deliveries': shipments}, index=village)
vectors = data[['x_coordinates_km', 'y_coordinates_km']].values
distances = []
for village_from in range(len(village)):
row = []
for village_to in range(len(village)):
value = distance.euclidean(vectors[village_from], vectors[village_to])
row.append(value)
distances.append(row)# < напишите код здесь >
distances_df = pd.DataFrame(distances, index=village, columns=village)
print(distances_df)
Задача 2
Вы знаете, сколько заказов за неделю доставляют в каждую точку. Выберите оптимальный для склада компании «Дрон Горыныч» населённый пункт. Для этого найдите расстояние между пунктами, удвойте его (полёты туда и обратно) и умножьте на еженедельное количество доставок. Сохраните результат в списке shipping_in_week. При расчёте расстояния используйте функцию np.dot().
Выберите населенный пункт с наименьшей суммарной дистанцией до соседей.
import numpy as np
import pandas as pd
from scipy.spatial import distance
x_axis = np.array([0.0, 7.03050245, 9.06193657, 0.1718145,
5.1383203, 0.11069032, 3.27703365, 5.36870287])
y_axis = np.array([0., 0.18078584, 9.32526599, 17.09628721,
4.69820241, 11.57529305, 11.31769349, 14.63378951])
shipments = np.array([5, 7, 4, 3, 5, 2, 1, 1])
village = ['Тетерье',
'Журавец',
'Корсунь',
'Берёзовка',
'Протасово',
'Трудки',
'Нижний Туровец',
'Вышний Туровец']
data = pd.DataFrame({'x_coordinates_km': x_axis,
'y_coordinates_km': y_axis,
'deliveries': shipments}, index=village)
vectors = data[['x_coordinates_km', 'y_coordinates_km']].values
distances = []
for village_from in range(len(village)):
row = []
for village_to in range(len(village)):
value = distance.euclidean(vectors[village_from], vectors[village_to])
row.append(value)
distances.append(row)
shipping_in_week = []
for i in range(len(village)):
row = 2 * np.dot(np.array(distances[i]), shipments)
shipping_in_week.append(row)
shipping_in_week_df = pd.DataFrame({'distance': shipping_in_week}, index=village)
print(shipping_in_week_df)
print()
print('Населённый пункт для склада:', shipping_in_week_df.idxmin()[0])