Загрузка данных


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)