import numpy as np
import pandas as pd
# =========================
# ЗАДАНИЕ 1
# =========================
np.random.seed(42)
# Создаем 31 случайную температуру от -15 до -5
temperature = np.random.uniform(-15, -5, 31)
# Создаем даты с 1 января 2026 года, всего 31 день
dates = pd.date_range('2026-01-01', periods=31, freq='D')
# Создаем Series, где индексами являются даты
temp_series = pd.Series(temperature, index=dates)
print("ЗАДАНИЕ 1")
print("Температура за январь:")
print(temp_series)
# Находим среднюю температуру
print("Средняя температура:", temp_series.mean())
# =========================
# ЗАДАНИЕ 2
# =========================
# Создаем DataFrame из Series
df = pd.DataFrame(temp_series)
# Переименовываем нулевой столбец в temp_day
df = df.rename(columns={0: 'temp_day'})
# Создаем столбец ночной температуры
df['temp_night'] = df['temp_day'] * 1.5
print("\nЗАДАНИЕ 2")
print(df)
# =========================
# ЗАДАНИЕ 3
# =========================
# Находим разницу по модулю
# между ночной и дневной температурой
df['temp_diff'] = abs(df['temp_night'] - df['temp_day'])
print("\nЗАДАНИЕ 3")
print(df)
# Выводим разницу температур за 7 января
print(
"Разница температур 7 января:",
df.loc['2026-01-07', 'temp_diff']
)
# =========================
# ЗАДАНИЕ 4
# =========================
left_data = {
'col1': ['x', 'y', 'z'],
'col2': [0, 1, 2]
}
right_data = {
'col1': ['a', 'b', 'c'],
'col3': [6, 7, 8]
}
df_left = pd.DataFrame(
left_data,
index=[0, 1, 2]
)
df_right = pd.DataFrame(
right_data,
index=[1, 2, 3]
)
# Конкатенация по строкам
# ignore_index=True создает новые индексы
rows = pd.concat(
[df_left, df_right],
axis=0,
ignore_index=True
)
print("\nЗАДАНИЕ 4")
print("Конкатенация по строкам:")
print(rows)
# Сбрасываем индексы и выполняем
# конкатенацию по столбцам
columns = pd.concat(
[
df_left.reset_index(drop=True),
df_right.reset_index(drop=True)
],
axis=1
)
# Заменяем повторяющиеся названия столбцов
columns.columns = [
'col1_left',
'col2',
'col1_right',
'col3'
]
print("\nКонкатенация по столбцам:")
print(columns)
# =========================
# ЗАДАНИЕ 5
# =========================
# Создаем таблицу покупателей
customers = {
'CustomerID': range(1, 4),
'Name': ['Bob', 'Rob', 'Kob'],
'Address': ['Address1', 'Address2', 'Address3']
}
customers = pd.DataFrame(customers)
# Создаем таблицу заказов
orders = {
'OrderID': range(1000, 1004),
'CustomerID': [1, 2, 1, 5]
}
orders = pd.DataFrame(orders)
# Выполняем левое соединение.
# Сохраняем всех покупателей из customers
# и добавляем соответствующие им заказы.
result = customers.merge(
orders,
on='CustomerID',
how='left'
)
print("\nЗАДАНИЕ 5")
print(result)