Skip to content
Snippets Groups Projects
Commit e35766aa authored by Andrii Skyba's avatar Andrii Skyba
Browse files

lab 2

parent f04253ee
Branches
No related tags found
No related merge requests found
%% Cell type:code id:0fe7dcd6-15d8-4398-8e86-48ac17df22ce tags:
``` python
import csv
import numpy as np
def get_column_data(filename, column_name):
with open(filename, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
column_data = [row[column_name] for row in reader]
return np.array(column_data, dtype=float)
filename = "C:/Users/skiba/python_khpi/russia_losses_equipment.csv"
APC_losses = get_column_data(filename, "APC")
APC_losses = APC_losses[::-1]
print(APC_losses)
```
%% Output
[ 516. 706. 706. ... 19339. 19355. 19369.]
%% Cell type:code id:1da9a636-a783-4ff7-b438-d8fb7b416162 tags:
``` python
daily_losses = np.diff(APC_losses)
print(daily_losses)
```
%% Output
[190. 0. 110. ... 33. 16. 14.]
%% Cell type:code id:8098786e-a1ef-4d81-8118-ed4985b9bed1 tags:
``` python
largest_losses = np.sort(daily_losses)[-5:]
print(largest_losses)
```
%% Output
[ 91. 96. 110. 120. 190.]
%% Cell type:code id:a7b22a8f-5c67-4db3-b1d8-e8eda0d339ac tags:
``` python
```
%% Cell type:code id:1c0f28f0-08bb-462b-b3ed-4a024983fb4f tags:
``` python
import pandas as pd
def summer_losses_2023(filename, losses_column):
"""
Рахує втрати БТР за літо 2023 року.
Parameters:
filename (str): Назва файлу CSV.
losses_column (str): Назва стовпця з втратами.
Returns:
int: Загальні втрати за літо 2023 року.
"""
data = pd.read_csv(filename, parse_dates=['date'])
summer_data = data[(data['date'] >= "2023-06-01") & (data['date'] <= "2023-08-31")]
return summer_data[losses_column].diff().fillna(0).sum()
summer_losses = summer_losses_2023(filename, "APC")
print("Втрати БТР влітку 2023 року:", int(summer_losses))
```
%% Output
Втрати БТР влітку 2023 року: -1126
%% Cell type:code id:aa44e38e-6131-4792-b484-8432150bbb27 tags:
``` python
# Обчислюємо середнє значення втрат за 100-500 днів
def average_losses_in_range(losses, start_day, end_day):
"""
Обчислює середнє значення втрат у заданому діапазоні днів.
Parameters:
losses (np.ndarray): Массив з даними про втрати.
start_day (int): Початковий день (включно).
end_day (int): Кінцевий день (включно).
Returns:
float: Середнє значення втрат.
"""
return np.mean(losses[start_day:end_day])
# Викликаємо функцію для діапазону 100-500 днів
average_loss = average_losses_in_range(APC_losses, 100, 501) # від 100 до 500 включно
print(f"Середнє значення втрат БТР за 100-500 днів: {average_loss}")
```
%% Output
Середнє значення втрат БТР за 100-500 днів: 5823.032418952618
%% Cell type:code id:b65deb73-b780-446e-ac5b-691eec6d7535 tags:
``` python
import matplotlib.pyplot as plt
def plot_last_200_days(losses, title="Втрати БТР за останні 200 днів"):
"""
Створює графік втрат БТР за останні 200 днів.
Parameters:
losses (np.ndarray): Массив з даними про втрати.
title (str): Назва графіку.
"""
# Останні 200 днів
last_200_losses = losses[-200:]
days = np.arange(1, 201) # Створюємо масив з чисел від 1 до 200 для осі X
# Створення графіку
plt.figure(figsize=(10, 6))
plt.plot(days, last_200_losses, label="Втрати БТР", linestyle='-', color='b') # Лінія графіку
plt.title(title)
plt.xlabel("Дні")
plt.ylabel("Кількість знищених БТР")
plt.grid(True, linestyle='--', color='gray', linewidth=0.5)
plt.legend()
# Збереження графіку
plt.savefig("APC_losses_last_200_days.png", dpi=100)
plt.show()
# Створюємо графік для останніх 200 днів
plot_last_200_days(APC_losses)
```
%% Output
%% Cell type:code id:1fc49a86-96f0-4724-a37d-0699d2a1998e tags:
``` python
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment