List of commits:
Subject Hash Author Date (UTC)
Мелкие правки (выходы за правое поле, опечатки) 69e4fbf8343c93beb396707f8b0defd374fcbe1c oam 2022-04-20 20:06:19
Добавлена ссылка на книгу по временным рядам da098fba95b530747918197a458830bc4d1e6c64 OAM 2022-04-20 13:36:20
- Изменено название работы на титульном листе. - Изменён год внизу титульного листа с 2021 на 2022. - Изменена аннотация. - Изменено введение. - Удалены главы с SciPy и JupyterLab. - Добавлена глава с Statsmodels и анализом временных рядов. - Изменено название второй главы. - Изменена вторая глава (2.1 остался без изменений). - Изменено заключение. - Добавлено приложение. c4609dd995779a49d656f0ebea2b096ff0e8228a YaYaroslav 2022-04-20 11:34:43
Push test. 8db6eb75bbf577d01ddcb6a368ecfc3653684e9c YaYaroslav 2022-04-19 09:15:00
Начальный коммит для проверки доступа к репозиторию e4a7dccb8c06611adb4162922c2679d67cbc3d8d OAM 2022-04-19 07:06:49
Commit 69e4fbf8343c93beb396707f8b0defd374fcbe1c - Мелкие правки (выходы за правое поле, опечатки)
Author: oam
Author date (UTC): 2022-04-20 20:06
Committer name: oam
Committer date (UTC): 2022-04-20 20:06
Parent(s): da098fba95b530747918197a458830bc4d1e6c64
Signer:
Signing key:
Signing status: N
Tree: e3003f9003eebaca94fe9cf98ad38398fc8935d6
File Lines added Lines deleted
NIR_otchet.tex 35 19
part1.tex 1 1
part2.tex 4 4
File NIR_otchet.tex changed (mode: 100644) (index c5e9c42..9ed491e)
102 102 % возможно, кол-во источников придется вставлять вручную % возможно, кол-во источников придется вставлять вручную
103 103 Работа \total{page} стр., \total{table} табл., \total{figure} рис. , \totalmycitecounts ист. Работа \total{page} стр., \total{table} табл., \total{figure} рис. , \totalmycitecounts ист.
104 104
105 ЯЗЫК ПРОГРАММИРОВАНИЯ PYTHON, АНАЛИЗ ВРЕМЕННЫХ РЯДОВ, МЕТЕОДАННЫЕ, ВРЕМЕННЫЕ РЯДЫ, NUMPY, STATSMODELS, PANDAS.
105 ЯЗЫК ПРОГРАММИРОВАНИЯ PYTHON, NUMPY, STATSMODELS, PANDAS, АНАЛИЗ ВРЕМЕННЫХ РЯДОВ, МЕТЕОДАННЫЕ, ВРЕМЕННЫЕ РЯДЫ.
106 106
107 107 Научно-исследовательская работа посвящена разработке сценариев анализа динамики метеопараметров. Конечная цель работы – создание сценария на языке Python для обработки и визуализации динамики температуры и осадков. Научно-исследовательская работа посвящена разработке сценариев анализа динамики метеопараметров. Конечная цель работы – создание сценария на языке Python для обработки и визуализации динамики температуры и осадков.
108 108
 
... ... original_stdout = sys.stdout
220 220 # Считывание и обработка датасетов. # Считывание и обработка датасетов.
221 221 print("Считывание и обработка данных.") print("Считывание и обработка данных.")
222 222 data1 = pd.read_csv(data1, sep=";", header=None) data1 = pd.read_csv(data1, sep=";", header=None)
223 data1.columns = ["index", "year", "month", "day", "temp_quality", "temp_min", "temp_avg", "temp_max", "precipitation"]
223 data1.columns = ["index", "year", "month", "day", "temp_quality",
224 "temp_min", "temp_avg", "temp_max", "precipitation"]
224 225 data2 = pd.read_csv(data2, sep=";", header=None) data2 = pd.read_csv(data2, sep=";", header=None)
225 data2.columns = ["index", "year", "month", "day", "temp_quality", "temp_min", "temp_avg", "temp_max", "precipitation"]
226 data2.columns = ["index", "year", "month", "day", "temp_quality",
227 "temp_min", "temp_avg", "temp_max", "precipitation"]
226 228 df1 = pd.DataFrame({'year': data1["year"], df1 = pd.DataFrame({'year': data1["year"],
227 229 'month': data1["month"], 'month': data1["month"],
228 230 'day': data1["day"]}) 'day': data1["day"]})
 
... ... if not os.path.exists("Result"):
250 252 os.makedirs("Result") os.makedirs("Result")
251 253
252 254 # Построения графика среднегодовой температуры города 1. # Построения графика среднегодовой температуры города 1.
253 print("Построения графика среднегодовой температуры города " + city1 + ".")
255 print("Построения графика среднегодовой температуры города " +
256 city1 + ".")
254 257 result1 = df1.groupby('year').mean() result1 = df1.groupby('year').mean()
255 258 plt.plot(result1.index, result1['temp_avg']) plt.plot(result1.index, result1['temp_avg'])
256 259 plt.title("Среднегодовая температура (" + city1 + ")") plt.title("Среднегодовая температура (" + city1 + ")")
 
... ... plt.savefig('Result/' + city1 + '_Temperature_Plot.png')
263 266 plt.clf() plt.clf()
264 267
265 268 # Построения графика количества осадков за год города 1. # Построения графика количества осадков за год города 1.
266 print("Построения графика количества осадков за год города " + city1 + ".")
269 print("Построения графика количества осадков за год города " +
270 city1 + ".")
267 271 plt.plot(result1.index, result1['precipitation']) plt.plot(result1.index, result1['precipitation'])
268 272 plt.title("Количество осадков за год (" + city1 + ")") plt.title("Количество осадков за год (" + city1 + ")")
269 273 plt.xlabel('Год') plt.xlabel('Год')
 
... ... plt.savefig('Result/' + city1 + '_Precipitations_Plot.png')
275 279 plt.clf() plt.clf()
276 280
277 281 # Построения графика среднегодовой температуры города 2. # Построения графика среднегодовой температуры города 2.
278 print("Построения графика среднегодовой температуры города " + city2 + ".")
282 print("Построения графика среднегодовой температуры города " +
283 city2 + ".")
279 284 result2 = df2.groupby('year').mean() result2 = df2.groupby('year').mean()
280 285 plt.plot(result2.index, result2['temp_avg']) plt.plot(result2.index, result2['temp_avg'])
281 286 plt.title("Среднегодовая температура (" + city2 + ")") plt.title("Среднегодовая температура (" + city2 + ")")
 
... ... plt.savefig('Result/' + city2 + '_Temperature_Plot.png')
288 293 plt.clf() plt.clf()
289 294
290 295 # Построения графика количества осадков за год города 2. # Построения графика количества осадков за год города 2.
291 print("Построения графика количества осадков за год города " + city2 + ".")
296 print("Построения графика количества осадков за год города "
297 + city2 + ".")
292 298 plt.plot(result2.index, result2['precipitation']) plt.plot(result2.index, result2['precipitation'])
293 299 plt.title("Количество осадков за год (" + city2 + ")") plt.title("Количество осадков за год (" + city2 + ")")
294 300 plt.xlabel('Год') plt.xlabel('Год')
 
... ... plt.plot(result2.index, p(result2.index), "r--")
299 305 plt.savefig('Result/' + city2 + '_Precipitations_Plot.png') plt.savefig('Result/' + city2 + '_Precipitations_Plot.png')
300 306 plt.clf() plt.clf()
301 307
302 # Построения графика корреляции среднегодовой температуры двух городов.
303 print("Построения графика корреляции среднегодовой температуры двух городов.")
308 #Построения графика корреляции среднегодовой температуры двух городов
309 print("Построения графика корреляции среднегодовой температуры" +
310 " двух городов.")
304 311 plt.plot(result1.index, result1['temp_avg'], plt.plot(result1.index, result1['temp_avg'],
305 312 label="Среднегодовая температура в городе " + city1) label="Среднегодовая температура в городе " + city1)
306 313 plt.plot(result2.index, result2['temp_avg'], plt.plot(result2.index, result2['temp_avg'],
307 314 label="Среднегодовая температура в городе " + city2) label="Среднегодовая температура в городе " + city2)
308 plt.title("Среднегодовая температура в городах " + city1 + " и " + city2)
315 plt.title("Среднегодовая температура в городах " + city1 + " и " +
316 city2)
309 317 plt.xlabel('Год') plt.xlabel('Год')
310 318 plt.ylabel('Температура (цельсии)') plt.ylabel('Температура (цельсии)')
311 319 plt.legend() plt.legend()
 
... ... print(corr1)
319 327 sys.stdout = original_stdout sys.stdout = original_stdout
320 328 plt.clf() plt.clf()
321 329
322 # Построения графика корреляции количества осадков за год двух городов.
323 print("Построения графика корреляции количества осадков за год двух городов.")
330 #Построения графика корреляции количества осадков за год двух городов
331 print("Построения графика корреляции количества осадков за год" +
332 " двух городов.")
324 333 plt.plot(result1.index, result1['precipitation'], plt.plot(result1.index, result1['precipitation'],
325 334 label="Среднегодовые осадки в городе " + city1) label="Среднегодовые осадки в городе " + city1)
326 335 plt.plot(result2.index, result2['precipitation'], plt.plot(result2.index, result2['precipitation'],
 
... ... plt.ylabel('Количество осадков')
331 340 plt.legend() plt.legend()
332 341 plt.savefig('Result/Correlation_Precipitations_Plot.png') plt.savefig('Result/Correlation_Precipitations_Plot.png')
333 342 print("Расчёт корреляции количества осадков за год двух городов.") print("Расчёт корреляции количества осадков за год двух городов.")
334 corr2 = np.corrcoef(result1['precipitation'], result2['precipitation'])
343 corr2 = np.corrcoef(result1['precipitation'],
344 result2['precipitation'])
335 345 with open('Result/Precipitations_Correlation.txt', 'w') as f: with open('Result/Precipitations_Correlation.txt', 'w') as f:
336 346 sys.stdout = f sys.stdout = f
337 347 print('Матрица корреляции осадков:\n') print('Матрица корреляции осадков:\n')
 
... ... sys.stdout = original_stdout
340 350 plt.clf() plt.clf()
341 351
342 352 # Построения диаграммы размаха среднегодовой температуры города 1. # Построения диаграммы размаха среднегодовой температуры города 1.
343 print("Построения диаграммы размаха среднегодовой температуры города " + city1 + ".")
353 print("Построения диаграммы размаха среднегодовой температуры города "
354 + city1 + ".")
344 355 sns.boxplot(data=df1, x='month', y='temp_avg') sns.boxplot(data=df1, x='month', y='temp_avg')
345 356 plt.xlabel('Месяц') plt.xlabel('Месяц')
346 357 plt.ylabel('Температура (цельсии)') plt.ylabel('Температура (цельсии)')
 
... ... plt.savefig('Result/' + city1 + '_Temperature_Boxplot.png')
349 360 plt.clf() plt.clf()
350 361
351 362 # Построения диаграммы размаха среднегодовой температуры города 2. # Построения диаграммы размаха среднегодовой температуры города 2.
352 print("Построения диаграммы размаха среднегодовой температуры города " + city2 + ".")
363 print("Построения диаграммы размаха среднегодовой температуры города "
364 + city2 + ".")
353 365 sns.boxplot(data=df2, x='month', y='temp_avg') sns.boxplot(data=df2, x='month', y='temp_avg')
354 366 plt.xlabel('Месяц') plt.xlabel('Месяц')
355 367 plt.ylabel('Температура (цельсии)') plt.ylabel('Температура (цельсии)')
 
... ... plt.clf()
359 371
360 372 # Декомпозиция данных по температуре города 1. # Декомпозиция данных по температуре города 1.
361 373 print("Декомпозиция данных по температуре города " + city1 + ".") print("Декомпозиция данных по температуре города " + city1 + ".")
362 result = seasonal_decompose(result1['temp_avg'], model='additive', period=12)
374 result = seasonal_decompose(result1['temp_avg'], model='additive',
375 period=12)
363 376 result.plot() result.plot()
364 377 plt.savefig('Result/' + city1 + '_Temperature_Decomposition.png') plt.savefig('Result/' + city1 + '_Temperature_Decomposition.png')
365 378 plt.clf() plt.clf()
366 379
367 380 # Декомпозиция данных по осадкам города 1. # Декомпозиция данных по осадкам города 1.
368 381 print("Декомпозиция данных по осадкам города " + city1 + ".") print("Декомпозиция данных по осадкам города " + city1 + ".")
369 result = seasonal_decompose(result1['precipitation'], model='additive', period=12)
382 result = seasonal_decompose(result1['precipitation'],
383 model='additive', period=12)
370 384 result.plot() result.plot()
371 385 plt.savefig('Result/' + city1 + '_Precipitations_Decomposition.png') plt.savefig('Result/' + city1 + '_Precipitations_Decomposition.png')
372 386 plt.clf() plt.clf()
373 387
374 388 # Декомпозиция данных по температуре города 2. # Декомпозиция данных по температуре города 2.
375 389 print("Декомпозиция данных по температуре города " + city2 + ".") print("Декомпозиция данных по температуре города " + city2 + ".")
376 result = seasonal_decompose(result2['temp_avg'], model='additive', period=12)
390 result = seasonal_decompose(result2['temp_avg'], model='additive',
391 period=12)
377 392 result.plot() result.plot()
378 393 plt.savefig('Result/' + city2 + '_Temperature_Decomposition.png') plt.savefig('Result/' + city2 + '_Temperature_Decomposition.png')
379 394 plt.clf() plt.clf()
380 395
381 396 # Декомпозиция данных по осадкам города 2. # Декомпозиция данных по осадкам города 2.
382 397 print("Декомпозиция данных по осадкам города " + city2 + ".") print("Декомпозиция данных по осадкам города " + city2 + ".")
383 result = seasonal_decompose(result2['precipitation'], model='additive', period=12)
398 result = seasonal_decompose(result2['precipitation'],
399 model='additive', period=12)
384 400 result.plot() result.plot()
385 401 plt.savefig('Result/' + city2 + '_Precipitations_Decomposition.png') plt.savefig('Result/' + city2 + '_Precipitations_Decomposition.png')
386 402 plt.clf() plt.clf()
File part1.tex changed (mode: 100644) (index cd3195f..9e0cc52)
4 4
5 5 \subsection{Язык программирования Python} \subsection{Язык программирования Python}
6 6
7 Python — это высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью. Ориентирован на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Он является полностью объектно-ориентированным в том плане, что всё является объектами, даже значения, относящиеся к элементарным типам, наподобие чисел и строк, а также сами типы данных \cite{prohor}. Необычной особенностью данного языка является выделение блоков кода пробельными отступами. Согласно стандарту, для выделения блоков необходимо использовать четыре пробела \cite{prohor}. Синтаксис ядра минималистичен, за счёт чего на практике редко возникает необходимость обращаться к документации. Сам же язык известен как интерпретируемый и используется в том числе для написания скриптов. Недостатками языка являются зачастую более низкая скорость работы и более высокое потребление памяти написанных на нём программ по сравнению с аналогичным кодом, написанным на компилируемых языках, таких как Си или C++.
7 Python — это высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью. Ориентирован на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Он является полностью объектно-ориентированным в том плане, что всё является объектами, даже значения, относящиеся к элементарным типам, наподобие чисел и строк, а также сами типы данных~\cite{prohor}. Необычной особенностью данного языка является выделение блоков кода пробельными отступами. Согласно стандарту, для выделения блоков необходимо использовать четыре пробела \cite{prohor}. Синтаксис ядра минималистичен, за счёт чего на практике редко возникает необходимость обращаться к документации. Сам же язык известен как интерпретируемый и используется в том числе для написания скриптов. Недостатками языка являются зачастую более низкая скорость работы и более высокое потребление памяти написанных на нём программ по сравнению с аналогичным кодом, написанным на компилируемых языках, таких как Си или C++.
8 8
9 9 Python представляет из себя мультипарадигмальный язык программирования. Он поддерживает объектно-ориентированное программирование, императивное, структурное, процедурное, метапрограммирование и функциональное программирование. Задачи обобщённого программирования решаются за счёт динамической типизации. Аспектно-ориентированное программирование частично поддерживается через декораторы, более полноценная поддержка обеспечивается дополнительными фреймворками. Такие методики как контрактное и логическое программирование можно реализовать с помощью библиотек или расширений. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений с глобальной блокировкой интерпретатора (GIL), высокоуровневые структуры данных. Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты. Python представляет из себя мультипарадигмальный язык программирования. Он поддерживает объектно-ориентированное программирование, императивное, структурное, процедурное, метапрограммирование и функциональное программирование. Задачи обобщённого программирования решаются за счёт динамической типизации. Аспектно-ориентированное программирование частично поддерживается через декораторы, более полноценная поддержка обеспечивается дополнительными фреймворками. Такие методики как контрактное и логическое программирование можно реализовать с помощью библиотек или расширений. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений с глобальной блокировкой интерпретатора (GIL), высокоуровневые структуры данных. Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты.
10 10
File part2.tex changed (mode: 100644) (index fb3ee11..64e81e6)
4 4
5 5 \subsection{Получение данных} \subsection{Получение данных}
6 6
7 Данные по температуре и осадка были взяты с сайта http://aisori-m.meteo.ru/. Пример запроса в базу данных приведён на рис.1
7 Данные по температуре и осадка были взяты с сайта \verb|aisori-m.meteo.ru|. Пример запроса в базу данных приведён на рис.~\ref{fig:1}.
8 8
9 9 \begin{figure}[H] \begin{figure}[H]
10 10 \centering \centering
 
45 45
46 46 Перед запуском скрипта его необходимо переместить в папку с метеоданными, заранее переименованными по принципу *название города*.txt. Перед запуском скрипта его необходимо переместить в папку с метеоданными, заранее переименованными по принципу *название города*.txt.
47 47
48 Скрипт запускается через коммандную строку Windows.
48 Скрипт запускается через командную строку Windows.
49 49
50 50 \begin{figure}[H] \begin{figure}[H]
51 51 \centering \centering
 
159 159 \begin{figure}[H] \begin{figure}[H]
160 160 \centering \centering
161 161 \includegraphics[width=0.75\linewidth]{pics/18} \includegraphics[width=0.75\linewidth]{pics/18}
162 \caption{Декомпозиция данных по температуре в Нижнем-Новгороде}
162 \caption{Декомпозиция данных по температуре в Нижнем Новгороде}
163 163 \label{fig:16} \label{fig:16}
164 164 \end{figure} \end{figure}
165 165
166 166 \begin{figure}[H] \begin{figure}[H]
167 167 \centering \centering
168 168 \includegraphics[width=0.75\linewidth]{pics/19} \includegraphics[width=0.75\linewidth]{pics/19}
169 \caption{Декомпозиция данных по осадкам в Нижнем-Новгороде}
169 \caption{Декомпозиция данных по осадкам в Нижнем Новгороде}
170 170 \label{fig:17} \label{fig:17}
171 171 \end{figure} \end{figure}
172 172
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/oami/yanir2

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/oami/yanir2

Clone this repository using git:
git clone git://git.rocketgit.com/user/oami/yanir2

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main