Merge remote-tracking branch 'practice2/main'
1
practice2/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.venv
|
582
practice2/README.md
Normal file
@ -0,0 +1,582 @@
|
||||
|
||||
## **Практическая работа №2**
|
||||
|
||||
### Вариант 6
|
||||
|
||||
Таблица находится в конце файла. Так же все файлы проекта (в том числе
|
||||
отчёт в формате odt или pdf) можно скачать с git:
|
||||
<https://git.dm1sh.ru/data-visualization/practice2>
|
||||
|
||||
Изначально проект писался в vscode под линуксом, если не работает
|
||||
установка пакетов в первом блоке, попробуйте заменить % на ! или
|
||||
установить пакеты вручную и удалить его
|
||||
|
||||
1. Подгружаем нужные для работы пакеты
|
||||
|
||||
``` python
|
||||
# установка matplotlib, numpy и pandas
|
||||
%pip install matplotlib numpy pandas seaborn --upgrade
|
||||
```
|
||||
|
||||
|
||||
Requirement already satisfied: matplotlib in ./.venv/lib64/python3.11/site-packages (3.7.1)
|
||||
Requirement already satisfied: numpy in ./.venv/lib64/python3.11/site-packages (1.24.2)
|
||||
Requirement already satisfied: pandas in ./.venv/lib64/python3.11/site-packages (1.5.3)
|
||||
Requirement already satisfied: seaborn in ./.venv/lib64/python3.11/site-packages (0.12.2)
|
||||
Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (1.0.7)
|
||||
Requirement already satisfied: cycler>=0.10 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (0.11.0)
|
||||
Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (4.38.0)
|
||||
Requirement already satisfied: kiwisolver>=1.0.1 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (1.4.4)
|
||||
Requirement already satisfied: packaging>=20.0 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (23.0)
|
||||
Requirement already satisfied: pillow>=6.2.0 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (9.4.0)
|
||||
Requirement already satisfied: pyparsing>=2.3.1 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (3.0.9)
|
||||
Requirement already satisfied: python-dateutil>=2.7 in ./.venv/lib64/python3.11/site-packages (from matplotlib) (2.8.2)
|
||||
Requirement already satisfied: pytz>=2020.1 in ./.venv/lib64/python3.11/site-packages (from pandas) (2022.7.1)
|
||||
Requirement already satisfied: six>=1.5 in ./.venv/lib64/python3.11/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
|
||||
|
||||
[notice] A new release of pip available: 22.2.2 -> 23.0.1
|
||||
[notice] To update, run: pip install --upgrade pip
|
||||
Note: you may need to restart the kernel to use updated packages.
|
||||
|
||||
``` python
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import seaborn as sns
|
||||
```
|
||||
|
||||
1. Загружаем данные. Они представляют результаты эксперимента по
|
||||
выявлению дефектов в подшипниковых узлах жидкостного трения. Время
|
||||
эксперимента 10 мин. Частота получения данных о колебаниях ротора
|
||||
1000 сиг/сек. Частота съема данных о температуре 1 сиг/сек. В работе
|
||||
используются набор данных с и без дефектов. Задача: выявить выбросы
|
||||
в данных, найти переходный период, в течение которого система
|
||||
выходит на режим, выяснить, в каких атрибутах наиболее ярко
|
||||
выражаются отличия в экспериментах с дефектами и без, а так же можно
|
||||
ли на этапе переходного периода говорить о наличии дефекта.
|
||||
|
||||
- Набор данных без дефектов
|
||||
|
||||
``` python
|
||||
df_norm = pd.read_csv('./data_5_1.csv')
|
||||
display(df_norm.info())
|
||||
display(df_norm.describe())
|
||||
```
|
||||
|
||||
|
||||
<class 'pandas.core.frame.DataFrame'>
|
||||
RangeIndex: 601000 entries, 0 to 600999
|
||||
Data columns (total 10 columns):
|
||||
# Column Non-Null Count Dtype
|
||||
--- ------ -------------- -----
|
||||
0 Fluctuations_X_in_the_left_bearing 601000 non-null float64
|
||||
1 Fluctuations_Y_in_the_left_bearing 601000 non-null float64
|
||||
2 Fluctuations_X_in_the_right_bearing 601000 non-null float64
|
||||
3 Fluctuations_Y_in_the_right_bearing 601000 non-null float64
|
||||
4 Fluctuations_X_in_the_left_bearing_smooth 601000 non-null float64
|
||||
5 Fluctuations_Y_in_the_left_bearing_smooth 601000 non-null float64
|
||||
6 Fluctuations_X_in_the_right_bearing_smooth 601000 non-null float64
|
||||
7 Fluctuations_Y_in_the_right_bearing_smooth 601000 non-null float64
|
||||
8 Temperature_in_the_left_bearing 601000 non-null float64
|
||||
9 Temperature_in_the_right_bearing 601000 non-null float64
|
||||
dtypes: float64(10)
|
||||
memory usage: 45.9 MB
|
||||
|
||||
|
||||
None
|
||||
|
||||
|
||||
| Fluctuations_X_in_the_left_bearing | Fluctuations_Y_in_the_left_bearing | Fluctuations_X_in_the_right_bearing | Fluctuations_Y_in_the_right_bearing | Fluctuations_X_in_the_left_bearing_smooth | Fluctuations_Y_in_the_left_bearing_smooth | Fluctuations_X_in_the_right_bearing_smooth | Fluctuations_Y_in_the_right_bearing_smooth | Temperature_in_the_left_bearing | Temperature_in_the_right_bearing |
|
||||
|------------------------------------|------------------------------------|-------------------------------------|-------------------------------------|-------------------------------------------|-------------------------------------------|--------------------------------------------|--------------------------------------------|---------------------------------|----------------------------------|
|
||||
| count | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 |
|
||||
| mean | 5.455242 | 6.335448 | 5.691674 | 7.220008 | 5.455247 | 6.335445 | 5.691669 | 7.220007 | 1108.853443 | 1112.852181 |
|
||||
| std | 0.084957 | 0.100096 | 0.079720 | 0.077585 | 0.071788 | 0.081333 | 0.065328 | 0.063549 | 4.983924 | 5.274466 |
|
||||
| min | 5.032000 | 5.818000 | 5.152000 | 6.745000 | 5.201000 | 6.022000 | 5.442000 | 6.993000 | 1091.353000 | 1100.433000 |
|
||||
| 25% | 5.388000 | 6.263000 | 5.635000 | 7.164000 | 5.390000 | 6.264000 | 5.636000 | 7.165000 | 1106.737000 | 1109.069000 |
|
||||
| 50% | 5.463000 | 6.332000 | 5.692000 | 7.212000 | 5.465000 | 6.331000 | 5.691000 | 7.211000 | 1110.546000 | 1113.650000 |
|
||||
| 75% | 5.521000 | 6.410000 | 5.749000 | 7.276000 | 5.520000 | 6.407000 | 5.744000 | 7.274000 | 1112.673000 | 1117.756000 |
|
||||
| max | 6.089000 | 7.171000 | 6.362000 | 8.006000 | 5.744000 | 6.734000 | 6.001000 | 7.578000 | 1113.476000 | 1119.457000 |
|
||||
|
||||
|
||||
- Набор данных с наличием несоосности в муфте
|
||||
|
||||
``` python
|
||||
df_misal = pd.read_csv('./data_4_2.csv')
|
||||
display(df_misal.info())
|
||||
display(df_misal.describe())
|
||||
```
|
||||
|
||||
|
||||
<class 'pandas.core.frame.DataFrame'>
|
||||
RangeIndex: 601000 entries, 0 to 600999
|
||||
Data columns (total 10 columns):
|
||||
# Column Non-Null Count Dtype
|
||||
--- ------ -------------- -----
|
||||
0 Fluctuations_X_in_the_left_bearing 601000 non-null float64
|
||||
1 Fluctuations_Y_in_the_left_bearing 601000 non-null float64
|
||||
2 Fluctuations_X_in_the_right_bearing 601000 non-null float64
|
||||
3 Fluctuations_Y_in_the_right_bearing 601000 non-null float64
|
||||
4 Fluctuations_X_in_the_left_bearing_smooth 601000 non-null float64
|
||||
5 Fluctuations_Y_in_the_left_bearing_smooth 601000 non-null float64
|
||||
6 Fluctuations_X_in_the_right_bearing_smooth 601000 non-null float64
|
||||
7 Fluctuations_Y_in_the_right_bearing_smooth 601000 non-null float64
|
||||
8 Temperature_in_the_left_bearing 601000 non-null float64
|
||||
9 Temperature_in_the_right_bearing 601000 non-null float64
|
||||
dtypes: float64(10)
|
||||
memory usage: 45.9 MB
|
||||
|
||||
|
||||
None
|
||||
|
||||
|
||||
| Fluctuations_X_in_the_left_bearing | Fluctuations_Y_in_the_left_bearing | Fluctuations_X_in_the_right_bearing | Fluctuations_Y_in_the_right_bearing | Fluctuations_X_in_the_left_bearing_smooth | Fluctuations_Y_in_the_left_bearing_smooth | Fluctuations_X_in_the_right_bearing_smooth | Fluctuations_Y_in_the_right_bearing_smooth | Temperature_in_the_left_bearing | Temperature_in_the_right_bearing |
|
||||
|------------------------------------|------------------------------------|-------------------------------------|-------------------------------------|-------------------------------------------|-------------------------------------------|--------------------------------------------|--------------------------------------------|---------------------------------|----------------------------------|
|
||||
| count | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 |
|
||||
| mean | 4.984535 | 6.652319 | 5.795459 | 7.310637 | 4.984530 | 6.652318 | 5.795455 | 7.310634 | 1107.421877 | 1114.138790 |
|
||||
| std | 0.069982 | 0.108803 | 0.088409 | 0.088030 | 0.052889 | 0.092470 | 0.075171 | 0.075327 | 3.960030 | 5.357683 |
|
||||
| min | 4.526000 | 6.121000 | 5.345000 | 6.751000 | 4.773000 | 6.324000 | 5.541000 | 6.959000 | 1100.641000 | 1100.666000 |
|
||||
| 25% | 4.935000 | 6.572000 | 5.733000 | 7.257000 | 4.942000 | 6.573000 | 5.734000 | 7.261000 | 1103.898000 | 1110.323000 |
|
||||
| 50% | 4.995000 | 6.636000 | 5.795000 | 7.303000 | 4.995000 | 6.636000 | 5.792000 | 7.302000 | 1107.961000 | 1115.154000 |
|
||||
| 75% | 5.027000 | 6.738000 | 5.860000 | 7.371000 | 5.021000 | 6.735000 | 5.856000 | 7.370000 | 1110.810000 | 1118.884000 |
|
||||
| max | 5.635000 | 7.505000 | 6.544000 | 8.087000 | 5.298000 | 7.047000 | 6.114000 | 7.654000 | 1113.633000 | 1121.417000 |
|
||||
|
||||
|
||||
- Набор данных с наличием дисбаланса
|
||||
|
||||
``` python
|
||||
df_disbal = pd.read_csv('./data_4_3.csv')
|
||||
display(df_disbal.info())
|
||||
display(df_disbal.describe())
|
||||
```
|
||||
|
||||
|
||||
<class 'pandas.core.frame.DataFrame'>
|
||||
RangeIndex: 601000 entries, 0 to 600999
|
||||
Data columns (total 10 columns):
|
||||
# Column Non-Null Count Dtype
|
||||
--- ------ -------------- -----
|
||||
0 Fluctuations_X_in_the_left_bearing 601000 non-null float64
|
||||
1 Fluctuations_Y_in_the_left_bearing 601000 non-null float64
|
||||
2 Fluctuations_X_in_the_right_bearing 601000 non-null float64
|
||||
3 Fluctuations_Y_in_the_right_bearing 601000 non-null float64
|
||||
4 Fluctuations_X_in_the_left_bearing_smooth 601000 non-null float64
|
||||
5 Fluctuations_Y_in_the_left_bearing_smooth 601000 non-null float64
|
||||
6 Fluctuations_X_in_the_right_bearing_smooth 601000 non-null float64
|
||||
7 Fluctuations_Y_in_the_right_bearing_smooth 601000 non-null float64
|
||||
8 Temperature_in_the_left_bearing 601000 non-null float64
|
||||
9 Temperature_in_the_right_bearing 601000 non-null float64
|
||||
dtypes: float64(10)
|
||||
memory usage: 45.9 MB
|
||||
|
||||
|
||||
None
|
||||
|
||||
|
||||
| Fluctuations_X_in_the_left_bearing | Fluctuations_Y_in_the_left_bearing | Fluctuations_X_in_the_right_bearing | Fluctuations_Y_in_the_right_bearing | Fluctuations_X_in_the_left_bearing_smooth | Fluctuations_Y_in_the_left_bearing_smooth | Fluctuations_X_in_the_right_bearing_smooth | Fluctuations_Y_in_the_right_bearing_smooth | Temperature_in_the_left_bearing | Temperature_in_the_right_bearing |
|
||||
|------------------------------------|------------------------------------|-------------------------------------|-------------------------------------|-------------------------------------------|-------------------------------------------|--------------------------------------------|--------------------------------------------|---------------------------------|----------------------------------|
|
||||
| count | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 |
|
||||
| mean | 5.459564 | 6.337034 | 5.668791 | 7.144426 | 5.459570 | 6.337033 | 5.668790 | 7.144428 | 1109.347354 | 1108.257027 |
|
||||
| std | 0.094292 | 0.104977 | 0.081341 | 0.079577 | 0.082518 | 0.087532 | 0.067253 | 0.065966 | 3.584635 | 3.298593 |
|
||||
| min | 4.979000 | 5.824000 | 5.212000 | 6.661000 | 5.187000 | 6.022000 | 5.414000 | 6.892000 | 1097.972000 | 1100.383000 |
|
||||
| 25% | 5.382000 | 6.256000 | 5.608000 | 7.086000 | 5.383000 | 6.258000 | 5.611000 | 7.089000 | 1108.479000 | 1106.538000 |
|
||||
| 50% | 5.458000 | 6.336000 | 5.674000 | 7.151000 | 5.459000 | 6.336000 | 5.675000 | 7.151000 | 1110.300000 | 1109.447000 |
|
||||
| 75% | 5.539000 | 6.419000 | 5.729000 | 7.200000 | 5.537000 | 6.416000 | 5.725000 | 7.198000 | 1111.793000 | 1110.628000 |
|
||||
| max | 6.118000 | 7.173000 | 6.346000 | 7.888000 | 5.756000 | 6.742000 | 5.985000 | 7.448000 | 1113.015000 | 1112.332000 |
|
||||
|
||||
|
||||
- Набор данных со втулкой с дефектами
|
||||
|
||||
``` python
|
||||
df_defect = pd.read_csv('./data_4_4.csv')
|
||||
display(df_defect.info())
|
||||
display(df_defect.describe())
|
||||
```
|
||||
|
||||
|
||||
<class 'pandas.core.frame.DataFrame'>
|
||||
RangeIndex: 601000 entries, 0 to 600999
|
||||
Data columns (total 10 columns):
|
||||
# Column Non-Null Count Dtype
|
||||
--- ------ -------------- -----
|
||||
0 Fluctuations_X_in_the_left_bearing 601000 non-null float64
|
||||
1 Fluctuations_Y_in_the_left_bearing 601000 non-null float64
|
||||
2 Fluctuations_X_in_the_right_bearing 601000 non-null float64
|
||||
3 Fluctuations_Y_in_the_right_bearing 601000 non-null float64
|
||||
4 Fluctuations_X_in_the_left_bearing_smooth 601000 non-null float64
|
||||
5 Fluctuations_Y_in_the_left_bearing_smooth 601000 non-null float64
|
||||
6 Fluctuations_X_in_the_right_bearing_smooth 601000 non-null float64
|
||||
7 Fluctuations_Y_in_the_right_bearing_smooth 601000 non-null float64
|
||||
8 Temperature_in_the_left_bearing 601000 non-null float64
|
||||
9 Temperature_in_the_right_bearing 601000 non-null float64
|
||||
dtypes: float64(10)
|
||||
memory usage: 45.9 MB
|
||||
|
||||
|
||||
None
|
||||
|
||||
|
||||
| Fluctuations_X_in_the_left_bearing | Fluctuations_Y_in_the_left_bearing | Fluctuations_X_in_the_right_bearing | Fluctuations_Y_in_the_right_bearing | Fluctuations_X_in_the_left_bearing_smooth | Fluctuations_Y_in_the_left_bearing_smooth | Fluctuations_X_in_the_right_bearing_smooth | Fluctuations_Y_in_the_right_bearing_smooth | Temperature_in_the_left_bearing | Temperature_in_the_right_bearing |
|
||||
|------------------------------------|------------------------------------|-------------------------------------|-------------------------------------|-------------------------------------------|-------------------------------------------|--------------------------------------------|--------------------------------------------|---------------------------------|----------------------------------|
|
||||
| count | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 | 601000.000000 |
|
||||
| mean | 5.343087 | 6.470311 | 6.011416 | 7.066158 | 5.343089 | 6.470312 | 6.011420 | 7.066161 | 1109.685379 | 1106.292003 |
|
||||
| std | 0.092243 | 0.082721 | 0.071645 | 0.072093 | 0.079303 | 0.058977 | 0.056743 | 0.054376 | 5.512947 | 5.618381 |
|
||||
| min | 4.882000 | 5.900000 | 5.614000 | 6.548000 | 5.044000 | 6.205000 | 5.792000 | 6.859000 | 1092.609000 | 1085.364000 |
|
||||
| 25% | 5.266000 | 6.417000 | 5.964000 | 7.021000 | 5.268000 | 6.419000 | 5.967000 | 7.024000 | 1106.780000 | 1103.882000 |
|
||||
| 50% | 5.346000 | 6.476000 | 6.003000 | 7.060000 | 5.348000 | 6.476000 | 6.001000 | 7.059000 | 1111.812000 | 1109.040000 |
|
||||
| 75% | 5.419000 | 6.522000 | 6.062000 | 7.110000 | 5.417000 | 6.519000 | 6.056000 | 7.107000 | 1114.155000 | 1110.130000 |
|
||||
| max | 6.073000 | 7.247000 | 6.747000 | 7.795000 | 5.656000 | 6.814000 | 6.300000 | 7.413000 | 1115.813000 | 1110.790000 |
|
||||
|
||||
|
||||
1. На основании приведённого выше описания, можно сказать, что pandas
|
||||
верно справился с определением типа - все 10 параметров имеют
|
||||
вещественный (float64) тип данных. Что соответствует исходным
|
||||
данным:
|
||||
|
||||
- 1 столбец массива - `Fluctuations_X_in_the_left_bearing` -
|
||||
горизонтальные колебания в левом подшипнике, в Вольтах
|
||||
|
||||
- 2 столбец массива - `Fluctuations_Y_in_the_left_bearing` -
|
||||
вертикальные колебания в левом подшипнике, в Вольтах
|
||||
|
||||
- 3 столбец массива - `Fluctuations_X_in_the_right_bearing` -
|
||||
горизонтальные колебания в правом подшипнике, в Вольтах
|
||||
|
||||
- 4 столбец массива - `Fluctuations_Y_in_the_right_bearing` -
|
||||
вертикальные колебания в правом подшипнике подшипнике, в Вольтах
|
||||
|
||||
- 5 столбец массива - `Fluctuations_X_in_the_left_bearing_smooth` -
|
||||
горизонтальные колебания в левом подшипнике с учетом сглаживания, в
|
||||
Вольтах
|
||||
|
||||
- 6 столбец массива - `Fluctuations_Y_in_the_left_bearing_smooth` -
|
||||
вертикальные колебания в левом подшипнике с учетом сглаживания, в
|
||||
Вольтах
|
||||
|
||||
- 7 столбец массива - `Fluctuations_X_in_the_right_bearing_smooth` -
|
||||
горизонтальные колебания в правом подшипнике с учетом сглаживания, в
|
||||
Вольтах
|
||||
|
||||
- 8 столбец массива - `Fluctuations_Y_in_the_right_bearing_smooth` -
|
||||
вертикальные колебания в правом подшипнике подшипнике с учетом
|
||||
сглаживания, в Вольтах
|
||||
|
||||
- 9 столбец массива - `Temperature_in_the_left_bearing` - температура
|
||||
в левом подшипнике, в Омах
|
||||
|
||||
- 10 столбец массива - `Temperature_in_the_right_bearing` -
|
||||
температура в правом подшипнике, в Омах
|
||||
|
||||
``` python
|
||||
# Для удобства итерации создадим кортежи с датафреймами, их читабельными именами для подписей и цветами
|
||||
dfs = (df_norm, df_misal, df_disbal, df_defect)
|
||||
df_names = ("Без дефектов", "Несоосность в трубке", "Дисбаланс", "Втулка с дефектом")
|
||||
df_colors = ("tab:blue", "tab:orange", "tab:red", "tab:purple")
|
||||
|
||||
# Шкала времени для 1000 зап/сек
|
||||
time = np.arange(0, df_norm.shape[0]/1000, 0.001)
|
||||
|
||||
import itertools as itt
|
||||
pic_n_gen = itt.count(1) # Счётчик для номеров рисунков
|
||||
```
|
||||
|
||||
## Линейные графики
|
||||
|
||||
1. Построим линейные графики для флуктуаций и температур для каждого из
|
||||
наборов данных
|
||||
|
||||
``` python
|
||||
a4figsize = (8, 11) # размер листа А4 в дюймах
|
||||
|
||||
def plot_linear(df, fields, suptitle, xcoord, ylabel, ylim, figsize = a4figsize, linewidth=0.5, color=None):
|
||||
fig, ax = plt.subplots(len(fields), figsize=figsize, sharex=True, sharey=True)
|
||||
|
||||
fig.suptitle(suptitle)
|
||||
fig.supxlabel(f"Рисунок {next(pic_n_gen)}")
|
||||
|
||||
for j, field in enumerate(fields):
|
||||
ax[j].plot(xcoord, df[field], linewidth=linewidth, color=color)
|
||||
|
||||
ax[j].set_ylabel(ylabel)
|
||||
ax[j].set_title(field)
|
||||
|
||||
ax[j].spines['top'].set_visible(False)
|
||||
ax[j].spines['right'].set_visible(False)
|
||||
|
||||
ax[j].set_xlim((np.min(xcoord), np.max(xcoord)))
|
||||
ax[j].set_ylim(ylim)
|
||||
|
||||
ax[-1].set_xlabel("Время, с")
|
||||
|
||||
fig.tight_layout()
|
||||
|
||||
for i, df in enumerate(dfs):
|
||||
plot_linear(
|
||||
df,
|
||||
fields=df.keys()[:-2],
|
||||
suptitle=df_names[i],
|
||||
xcoord=time,
|
||||
ylabel="Вольты",
|
||||
ylim=(np.min(df.min()[:-2]), np.max(df.max()[:-2])), # растягиваем график на всю высоту флуктуаций при одинаковых границах для всех
|
||||
color=df_colors[i]
|
||||
)
|
||||
|
||||
plot_linear(
|
||||
df,
|
||||
fields=df.keys()[-2:],
|
||||
suptitle=df_names[i],
|
||||
xcoord=time,
|
||||
ylabel="Омы",
|
||||
ylim=(np.min(df.min()[-2:]), np.max(df.max()[-2:])), # растягиваем график на всю высоту температур при одинаковых границах для всех
|
||||
figsize=(8,5),
|
||||
linewidth=1,
|
||||
color=df_colors[i]
|
||||
)
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
1. Из построенных графиков видно, что линейное представление флуктуаций
|
||||
несёт мало информации, поэтому в дальнейшем будут исследоваться
|
||||
только распределение и корреляция между этими признаками. С другой
|
||||
стороны, график температуры имеет ясно различимую временную
|
||||
зависимость, поэтому для него имеет смысл рассмотреть её, а так же
|
||||
корреляцию.
|
||||
|
||||
## Распределение флуктуаций
|
||||
|
||||
1. Как отмечалось в предыдущем пункте, проанализируем распределение для
|
||||
полей, отражающих флуктуации. Первым делом визуализируем данные с
|
||||
помощью так называемого \"Ящика с усами\". На каждом графике
|
||||
отобразим одну из четырёх флуктуаций и сглаженную версию для каждого
|
||||
набора данных.
|
||||
|
||||
``` python
|
||||
for i in range(4):
|
||||
fig, ax = plt.subplots(figsize=(7, 7))
|
||||
plt.xticks(rotation=90)
|
||||
|
||||
fig.suptitle(df_norm.keys()[i])
|
||||
fig.supxlabel(f"Рисунок {next(pic_n_gen)}")
|
||||
|
||||
flierprops = dict(marker='o', markersize=3)
|
||||
|
||||
for j, df in enumerate(dfs):
|
||||
ax.boxplot(df[df.keys()[i]], positions=[j*2], flierprops=flierprops)
|
||||
ax.boxplot(df[df.keys()[i+4]], positions=[j*2+1], flierprops=flierprops)
|
||||
|
||||
ax.set_ylabel("Величина")
|
||||
ax.set_xticks(range(8), itt.chain.from_iterable((df_names[j], df_names[j]+" сглаженное") for j in range(4)))
|
||||
|
||||
ax.grid(linestyle='--')
|
||||
|
||||
fig.tight_layout()
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
1. Из визуализации видно, что несглаженные данные имеют одиночные
|
||||
выбросы - отдельные окружности, не сливающиеся с соседними. Поэтому
|
||||
при дальнейшей работе есть смысл использовать сглаженные данные, так
|
||||
как они дают более широкую гистаграмму, чем позволяют лучше видеть
|
||||
диапазон принимаемых значений и уменьшают количество выбросов. Так
|
||||
же сгруппируем графики по параметрам колонок 5-8. На каждом графике
|
||||
изобразим одновременно распределение с и без дефектов. Заметим, что
|
||||
нам не так уж важны конкретные значения, поэтому, для урупнения
|
||||
изображений было принято решение не делать общей шкалу величины.
|
||||
|
||||
``` python
|
||||
for i, field in enumerate(df_norm.keys()[4:-2]):
|
||||
fig, ax = plt.subplots(3, 1, figsize=a4figsize)
|
||||
|
||||
fig.suptitle(field)
|
||||
fig.supxlabel(f"Рисунок {next(pic_n_gen)}")
|
||||
|
||||
for j, df in enumerate(dfs[1:]):
|
||||
ax[j].hist(df_norm[field], bins=50, label=df_names[0], color=df_colors[0])
|
||||
ax[j].hist(df[field], bins=50, label=df_names[j+1], color=df_colors[j+1])
|
||||
|
||||
ax[j].set_xlabel("Величина")
|
||||
ax[j].set_ylabel("Количество")
|
||||
|
||||
ax[j].legend()
|
||||
|
||||
fig.tight_layout()
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
1. Из построенной визуализации уже можно сделать некоторые выводы о
|
||||
том, какие признаки меняются при определённых дефектах.
|
||||
|
||||
- Например, видно, что при несоосности в трубке, значительные
|
||||
отклонения по величине наблюдаются в левом подшипнике, в то время
|
||||
когда в правом смещение видно в меньшей степени.
|
||||
|
||||
- При дисбалансе, отклонения по форме и величине распределения видны
|
||||
только по оси Y в правом подшипнике, а остальные параметры
|
||||
практически совпадают.
|
||||
|
||||
- Если же проблема в дефектах втулки, тогда все параметры смещаются в
|
||||
большую или меньшую сторону, при этом сохраняя в общих чертах свою
|
||||
форму, не считая оси X в правом подшипнике.
|
||||
|
||||
## Линейный анализ температуры
|
||||
|
||||
1. Теперь перейдём к анализу температуры подшипников. Для этого снова
|
||||
изобразим линейные графики для каждого дефекта, наложив на них
|
||||
соответствующие значения для нормы.
|
||||
|
||||
``` python
|
||||
fig, ax = plt.subplots(2, 3, figsize=a4figsize, sharex=True, sharey='row')
|
||||
|
||||
# fig.suptitle(df_names[i+1])
|
||||
fig.supxlabel(f"Рисунок {next(pic_n_gen)}")
|
||||
|
||||
for i, df in enumerate(dfs[1:]):
|
||||
for j, field in enumerate(df.keys()[-2:]):
|
||||
ax[j][i].plot(time, df_norm[field], color=df_colors[0], label=df_names[0])
|
||||
ax[j][i].plot(time, df[field], color=df_colors[i+1], label=df_names[i+1])
|
||||
|
||||
if i == 1:
|
||||
ax[j][i].set_title(field)
|
||||
|
||||
ax[j][i].set_ylabel("Температура, Омы")
|
||||
|
||||
ax[j][i].grid(linestyle='--')
|
||||
|
||||
ax[0][i].legend()
|
||||
|
||||
ax[-1][i].set_xlabel("Время, с")
|
||||
|
||||
fig.tight_layout()
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
1. Если смотреть на график температуры прибора без дефектов, можно
|
||||
увидеть обвал, начавшийся для левого подшипника на 400-ой секунде, а
|
||||
для правого на 500-ой. Однако, неизвестно, остановился ли рост
|
||||
температуры после этого, поэтому судить об окончании перехожного
|
||||
процесса непросто. При этом, даже если считать, что первые 400
|
||||
секунд система для левой и 500 для правой входила в режим работы,
|
||||
ввиду однородности флуктуаций, что видно на рис. 1,3,5,7, те выводы,
|
||||
что были сделаны для их распределения в пункте 8, остаются в силе.
|
||||
Что каается температуры, на основании её изменения, так же можно
|
||||
сделать некоторые наблюдения:
|
||||
|
||||
- При несоосности в трубке, на левом подшипнике наблюдается более
|
||||
линейно растущий график, при этом около 500-ой секунды он пересекает
|
||||
нормальный график и не останавливает свой рост. Температура для
|
||||
правого несколько больше на всём временном отрезке и также не
|
||||
замедляет рост после 500-ой секунды
|
||||
|
||||
- Дисбаланс характеризуется более высокими температурами, но при этом
|
||||
более коротким переходным режимом на левом подшипнике. При этом, на
|
||||
правом температура наоборот значительно ниже, что так же видно с
|
||||
самого начала наблюдений.
|
||||
|
||||
- Дефектная втулка выдаёт себя только на правом подшипнике - опять же,
|
||||
более низкими температурами на правом подшипнике. Но, возможно, это
|
||||
происходит из-за гораздо более низкой начальной температуры (это
|
||||
можно отнести к ошибкам измерения). При этом, температурная кривая
|
||||
для левого подшипника практически идеально повторяет нормальную, но
|
||||
только до конца переходного процесса, после чего продолжает расти
|
||||
несмотря на его конец.
|
||||
|
||||
## Матрица корреляции
|
||||
|
||||
1. Наконец, построим матрицу корреляции для выявления корреляции между
|
||||
параметрами нормальных и имеющими дефекты наборами. Нам не интересна
|
||||
внутренняя корреляция, поэтому берём только корреляцию между разными
|
||||
наборами.
|
||||
|
||||
``` python
|
||||
for i, df in enumerate(dfs[1:]):
|
||||
fig, ax = plt.subplots(figsize=(10,10))
|
||||
|
||||
df_j = df.join(df_norm, lsuffix="_defective", rsuffix="_normal")
|
||||
|
||||
corr = df_j.corr()
|
||||
|
||||
corr = corr[filter(lambda key: key.count("_normal"), corr.keys())]
|
||||
|
||||
corr = corr[np.array(list(map(lambda key: key.count("_defective") == 1, corr.index)),dtype=bool)]
|
||||
|
||||
sns.heatmap(
|
||||
corr,
|
||||
cbar=False,
|
||||
ax=ax,
|
||||
annot=True,
|
||||
cmap='coolwarm',
|
||||
vmin=-1,
|
||||
vmax=1
|
||||
)
|
||||
|
||||
fig.suptitle(df_names[i+1])
|
||||
fig.supxlabel(f"Рисунок {next(pic_n_gen)}")
|
||||
|
||||
fig.tight_layout()
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
Таблица. Критерии оценки визуализации, и примерные вопросы для их
|
||||
оценивания
|
||||
|
||||
| Вопрос | Ответ |
|
||||
|--------|-------|
|
||||
| 1.Для каждого параметра определен тип, и в зависимости его типа представлены различные описательные статистики. | В каждом наборе имеются по 10 параметров вещественного типа (float64): Fluctuations_X_in_the_left_bearing, Fluctuations_Y_in_the_left_bearing, *Fluctuations_X_in_the_right_bearing*, *Fluctuations_Y_in_the_right_bearing*, *Fluctuations_X_in_the_left_bearing_smooth*, *Fluctuations_Y_in_the_left_bearing_smooth*, *Fluctuations_X_in_the_right_bearing_smooth*, *Fluctuations_Y_in_the_right_bearing_smooth*, *Temperature_in_the_left_bearing*, *Temperature_in_the_right_bearing*. <br> В файле ipynb в пункте 2 представлены в табличном виде некоторые описательные характеристики этих полей для каждого из наборов данных, такие как количество элементов 601000, среднее, стандартное отклонение, минимум и максимум, 25% и 75% квартили, медиана. <br> Из графиков на рис. 1-8 видно, что линейное представление флуктуаций несёт мало информации, поэтому в дальнейшем будут исследоваться только распределение (рис. 13-16) и корреляция (рис. 18-20) между этими признаками. С другой стороны, график температуры имеет ясно различимую временную зависимость, поэтому для него имеет смысл рассмотреть её (рис. 17), а так же корреляцию (рис. 18-20). |
|
||||
| 2. Есть ли выбросы в данных. Если да, укажите в каких атрибутах. | Из рис. 9-12 видно, что несглаженные данные имеют одиночные выбросы - отдельные окружности, не сливающиеся с соседними. <br> - *Fluctuations_X_in_the_left_bearing* для несоосности в трубке, дисбаланса и втулки с дефектом <br>- *Fluctuations_Y_in_the_left_bearing* для несоосности в трубке и втулке с дефектом <br>- *Fluctuations_X_in_the_right_bearing* для без дефекта, несоосности в трубке, дисбаланса и втулки с дефектом <br>- *Fluctuations_Y_in_the_right_bearing* для без дефекта, несоосности в трубке, дисбаланса и втулки с дефектом <br> Поэтому при дальнейшей работе есть смысл использовать сглаженные данные, так как они дают более широкую гистаграмму, чем позволяют лучше видеть диапазон принимаемых значений и уменьшают количество выбросов. |
|
||||
| 3. Есть ли переходный период, в течение которой система выходит на режим. <br>Если да, укажите его длительность (можно указать число записей, которые описывают этот переходный период). | Если смотреть на график температуры прибора без дефектов (рис. 17), можно увидеть обвал, начавшийся для левого подшипника на 400-ой секунде, а для правого на 500-ой. Однако, неизвестно, остановился ли рост температуры после этого, поэтому судить об окончании перехожного процесса непросто. |
|
||||
| 4. Определите, какие атрибуты наиболее сильно отличаются в экспериментах с дефектами, от нормальных значений. | Из построенной визуализации на рис. 13-16 для распределения флуктуаций: <br>- Видно, что при несоосности в трубке, значительные отклонения по величине наблюдаются в левом подшипнике, в то время когда в правом смещение видно в меньшей степени. <br>- При дисбалансе, отклонения по форме и величине распределения видны только по оси Y в правом подшипнике, а остальные параметры практически совпадают. <br>- Если же проблема в дефектах втулки, тогда все параметры смещаются в большую или меньшую сторону, при этом сохраняя в общих чертах свою форму, не считая оси X в правом подшипнике. <br>Из графиков для температуры (рис. 19) <br>- При несоосности в трубке, на левом подшипнике наблюдается более линейно растущий график, при этом около 500-ой секунды он пересекает нормальный график и не останавливает свой рост. Температура для правого несколько больше на всём временном отрезке и также не замедляет рост после 500-ой секунды. <br>- Дисбаланс характеризуется более высокими температурами, но при этом более коротким переходным режимом на левом подшипнике. При этом, на правом температура наоборот значительно ниже, что так же видно с самого начала наблюдений. <br>- Дефектная втулка выдаёт себя только на правом подшипнике - опять же, более низкими температурами на правом подшипнике. Но, возможно, это происходит из-за гораздо более низкой начальной температуры (это можно отнести к ошибкам измерения). При этом, температурная кривая для левого подшипника практически идеально повторяет нормальную, но только до конца переходного процесса, после чего продолжает расти несмотря на его конец. |
|
||||
| 5. Можно ли на этапе переходного периода говорить о наличии дефекта? Какие признаки на это могут указывать? | Если считать, что первые 400 секунд система для левой и 500 для правой входила в режим работы, ввиду однородности флуктуаций, что видно на рис. 1,3,5,7, те выводы, что были сделаны для их распределения в предыдущем вопросе, остаются в силе. Не считая тех частей кривых температур (рис. 17), которые лежат дальше 500 с: <br>- При несоосности в трубке, на левом подшипнике, около 500-ой секунды график пересекает нормальный график и не останавливает свой рост. Температура для также не замедляет рост после 500-ой секунды. <br>- У дефектной втулки температурная кривая для левого подшипника по окончанию переходного процесса, после чего продолжает расти несмотря на его конец. |
|
601001
practice2/data_4_2.csv
Normal file
601001
practice2/data_4_3.csv
Normal file
601001
practice2/data_4_4.csv
Normal file
601001
practice2/data_5_1.csv
Normal file
7201
practice2/example.csv
Normal file
1813
practice2/example.ipynb
Normal file
1762
practice2/main.ipynb
Normal file
BIN
practice2/pictures/1.png
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
practice2/pictures/10.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
practice2/pictures/11.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
practice2/pictures/12.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
practice2/pictures/13.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
practice2/pictures/14.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
practice2/pictures/15.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
practice2/pictures/16.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
practice2/pictures/17.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
practice2/pictures/18.png
Normal file
After Width: | Height: | Size: 161 KiB |
BIN
practice2/pictures/19.png
Normal file
After Width: | Height: | Size: 161 KiB |
BIN
practice2/pictures/2.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
practice2/pictures/20.png
Normal file
After Width: | Height: | Size: 154 KiB |
BIN
practice2/pictures/3.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
practice2/pictures/4.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
practice2/pictures/5.png
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
practice2/pictures/6.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
practice2/pictures/7.png
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
practice2/pictures/8.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
practice2/pictures/9.png
Normal file
After Width: | Height: | Size: 56 KiB |