Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 / лр3

.pdf
Скачиваний:
1
Добавлен:
16.05.2025
Размер:
325.89 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

Кафедра проблемно-ориентированных вычислительных комплексов Арифметические операции

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

Доцент,кандидат технических наук

 

 

 

Чернышев С.А.

 

 

 

 

 

должность, уч. степень, звание

 

подпись, дата

 

инициалы, фамилия

Лабораторная работа № 3

по дисциплине: Технологии программирования

РАБОТУ ВЫПОЛНИЛА

 

 

 

 

 

СТУДЕНТКА ГР. №

Z0411

24.05.2023

 

М. В. Карелина

 

 

 

 

 

 

 

 

 

номер группы

 

подпись, дата

 

инициалы, фамилия

Студенческий билет №

 

2020/3477

 

 

 

 

Санкт-Петербург

2023

Цель работы:

познакомиться с основными способами работы с excel-файлами и графиками в Python.

Вариант 8.

Скачайте с сайта с сайта ЕМИСС (ГОСУДАРСТВЕННАЯ СТАТИСТИКА) данные по средним потребительским ценам на товары,

реализуемых на розничных рынках Российской Федерации с 2007 по 2015 год

(https://www.fedstat.ru/indicator/37055). Выведите динамику цен по продукту

«Масло подсолнечное» и «Сахар-песок». Найдите среднее значение цены,

медиану за весь период, а также посчитайте отклонения месячных цен от среднего и медианы. Для наглядности используйте графики.

Рисунок 1 - Сайт fedstat.ru

Рисунок 2 - Данные по заданным параметрам

Код программы:

import pandas as pd

import matplotlib.pyplot as plt

# Чтение файла

df_orders= pd.read_excel('data.xls', header=None)

#Выделение строк с годами, месяцами и данными по продуктам years = df_orders.iloc[0, 1:].tolist()

months = df_orders.iloc[1, 1:].tolist() oil_data = df_orders.iloc[2, 1:].tolist() sugar_data = df_orders.iloc[3, 1:].tolist()

#преобразование строк в числа

oil_data_numeric = pd.to_numeric(oil_data)

mean_oil = pd.Series(oil_data_numeric).mean() # вычисление статистических

показателей

median_oil = pd.Series(oil_data_numeric).median()# вычисление статистических показателей

std_oil = pd.Series(oil_data_numeric).std()# вычисление статистических показателей

# преобразование строк в числа sugar_data_numeric = pd.to_numeric(sugar_data)

mean_sugar = pd.Series(sugar_data_numeric).mean()# вычисление статистических показателей

median_sugar = pd.Series(sugar_data_numeric).median()# вычисление статистических показателей

std_sugar = pd.Series(sugar_data_numeric).std()# вычисление статистических показателей

# Создание списка с названиями точек

labels = [str(years[i]) + str(months[i]) for i in range(len(years))]

# Создание графика с 240 точками

plt.plot(labels, oil_data, '.', label='Масло подсолнечное, кг') plt.plot(labels, sugar_data, '.', label='Сахар-песок, кг') plt.xticks(rotation=90)

#Добавление заголовка и подписей осей plt.title('Динамика цен на продукты') plt.xlabel('Год и месяц') plt.ylabel('Цена, р')

#Добавление легенды

plt.legend()

#Отображение графика plt.show()

#Вывод статистических показателей

print('Cреднее значение цены на масло подсолнечное:', mean_oil) print('Cреднее значение цены на сахар-песок:', mean_sugar) print('Медиана цены на масло подсолнечное:', median_oil) print('Медиана цены на сахар-песок:', median_sugar) print('Стандартное отклонение цен на масло подсолнечное:', std_oil) print('Стандартное отклонение цен на сахар-песок:', std_sugar)

Выполнение программы:

Рисунок 3 - График динамики цены

Рисунок 4 - Выполнение программы, подсчет статистических параметров

Тесты программы:

import pandas as pd import unittest import os

class TestProductPrices(unittest.TestCase): def setUp(self):

# Создание тестовых данных

self.years = ['2019', '2020', '2021'] self.months = ['Январь', 'Февраль', 'Март'] self.oil_data = [50, 70, 60] self.sugar_data = [100, 150, 120]

self.expected_labels = ['2019Январь', '2020Февраль', '2021Март'] self.expected_mean_oil = sum(self.oil_data) / len(self.oil_data) self.expected_mean_sugar = sum(self.sugar_data) /

len(self.sugar_data) self.expected_median_oil = 60 self.expected_median_sugar = 120

self.expected_std_oil = pd.Series(self.oil_data).std() self.expected_std_sugar = pd.Series(self.sugar_data).std()

# Создание тестового файла с данными self.filename = 'test_data.xls'

df_orders = pd.DataFrame({'years': self.years, 'months': self.months, 'oil_data': self.oil_data, 'sugar_data':

self.sugar_data})

df_orders.to_excel(self.filename, index=False, header=False)

def tearDown(self):

# Удаление тестового файла os.remove(self.filename)

def test_labels(self):

# Проверка создания списка с названиями точек df_orders = pd.read_excel(self.filename, header=None)

labels = [str(df_orders.iloc[i, 0]) + str(df_orders.iloc[i, 1]) for i in range(0, len(self.years))]

self.assertEqual(self.expected_labels, labels)

def test_statistics(self):

# Проверка вычисления статистических показателей df_orders = pd.read_excel(self.filename, header=None) oil_data = df_orders.iloc[0:, 2].tolist()

sugar_data = df_orders.iloc[0:, 3].tolist() oil_data_numeric = pd.to_numeric(oil_data) sugar_data_numeric = pd.to_numeric(sugar_data) mean_oil = pd.Series(oil_data_numeric).mean() mean_sugar = pd.Series(sugar_data_numeric).mean() median_oil = pd.Series(oil_data_numeric).median() median_sugar = pd.Series(sugar_data_numeric).median()

std_oil = pd.Series(oil_data_numeric).std() std_sugar = pd.Series(sugar_data_numeric).std()

self.assertAlmostEqual(self.expected_mean_oil, mean_oil) self.assertAlmostEqual(self.expected_mean_sugar, mean_sugar) self.assertEqual(self.expected_median_oil, median_oil) self.assertEqual(self.expected_median_sugar, median_sugar) self.assertAlmostEqual(self.expected_std_oil, std_oil) self.assertAlmostEqual(self.expected_std_sugar, std_sugar)

if __name__ == '__main__': unittest.main()

Выполнение тестов:

Выводы В ходе данной лабораторной работы мы научились импортировать и

экспортировать excel-файлы, получили навыки построения графиков при помощи Python и познакомились с библиотекой Pandas.

Соседние файлы в папке 2