Зображення автора
Очищення даних є важливою частиною будь-якого процесу аналізу даних. Це крок, на якому ви видаляєте помилки, обробляєте відсутні дані та переконаєтеся, що ваші дані мають формат, з яким можна працювати. Без добре очищеного набору даних будь-який наступний аналіз може бути спотвореним або неправильним.
Ця стаття знайомить вас із кількома ключовими методами очищення даних у Python за допомогою потужних бібліотек, таких як pandas, numpy, seaborn і matplotlib.
Перш ніж заглибитися в механіку очищення даних, давайте зрозуміємо її важливість. Реальні дані часто безладні. Він може містити повторювані записи, неправильні або неузгоджені типи даних, відсутні значення, нерелевантні функції та викиди. Усі ці фактори можуть призвести до оманливих висновків під час аналізу даних. Це робить очищення даних невід’ємною частиною життєвого циклу науки про дані.
Ми розглянемо наступні завдання очищення даних.
Зображення автора
Перш ніж почати, давайте імпортуємо необхідні бібліотеки. Ми будемо використовувати pandas для обробки даних, а seaborn і matplotlib для візуалізації.
Ми також імпортуємо модуль Python datetime для обробки дат.
import pandas as pd
import seaborn as sns
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
Спочатку нам потрібно буде завантажити наші дані. У цьому прикладі ми збираємося завантажити файл CSV за допомогою pandas. Ми також додаємо аргумент роздільник.
df = pd.read_csv('F:KDNuggetsKDN Mastering the Art of Data Cleaning in Pythonproperty.csv', delimiter= ';')
Далі важливо перевірити дані, щоб зрозуміти їх структуру, з якими змінними ми працюємо та чи є якісь відсутні значення. Оскільки дані, які ми імпортували, невеликі, давайте подивимося на весь набір даних.
# Look at all the rows of the dataframe
display(df)
Ось як виглядає набір даних.
Ви відразу побачите, що деякі значення відсутні. Крім того, формати дати несумісні.
Тепер давайте подивимося на підсумок DataFrame за допомогою методу info().
# Get a concise summary of the dataframe
print(df.info())
Ось вихідний код.
Ми бачимо, що лише стовпець square_feet не має жодних значень NULL, тому нам якось доведеться це впоратися. Крім того, стовпці advertisement_date і sale_date є типом даних об’єкта, навіть якщо це має бути дата.
Розташування колонки абсолютно порожнє. Нам це потрібно?
Ми покажемо вам, як вирішити ці проблеми. Ми почнемо з вивчення того, як видалити непотрібні стовпці.
У наборі даних є два стовпці, які нам не потрібні для аналізу даних, тому ми їх видалимо.
Перший стовпець – покупець. Нам це не потрібно, оскільки ім'я покупця не впливає на аналіз.
Ми використовуємо метод drop() із вказаною назвою стовпця. Ми встановлюємо вісь на 1, щоб вказати, що ми хочемо видалити стовпець. Крім того, аргумент inplace має значення True, щоб ми змінювали існуючий DataFrame, а не створювали новий DataFrame без видаленого стовпця.
df.drop('buyer', axis = 1, inplace = True)
Другий стовпець, який ми хочемо видалити, це розташування. Хоча ця інформація може бути корисною, це абсолютно порожній стовпець, тому давайте просто видалимо його.
Ми використовуємо той самий підхід, що і з першою колонкою.
df.drop('location', axis = 1, inplace = True)
Звичайно, ви можете видалити ці два стовпці одночасно.
df = df.drop(['buyer', 'location'], axis=1)
Обидва підходи повертають наступний кадр даних.
Дубльовані дані можуть виникати у вашому наборі даних з різних причин і можуть спотворити ваш аналіз.
Давайте виявимо дублікати в нашому наборі даних. Ось як це зробити.
Наведений нижче код використовує метод дубльований() розглядати дублікати у всьому наборі даних. Його налаштування за замовчуванням — розглядати перше входження значення як унікальне, а наступні входження — як дублікати. Ви можете змінити цю поведінку за допомогою тримати параметр. Наприклад, df.duplicated(keep=False) позначатиме всі дублікати як True, включаючи перше входження.
# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates
Ось результат.
Рядок з індексом 3 було позначено як дублікат, оскільки рядок 2 із такими самими значеннями є його першим входженням.
Тепер нам потрібно видалити дублікати, що ми робимо за допомогою наступного коду.
# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates
Команда drop_duplicates() функція розглядає всі стовпці, виявляючи дублікати. Якщо ви хочете розглянути лише певні стовпці, ви можете передати їх як список у цю функцію так: df.drop_duplicates(subset=['column1', 'column2']).
Як бачите, повторюваний рядок видалено. Однак індексація залишилася незмінною, індекс 3 відсутній. Ми виправимо це, скинувши індекси.
df = df.reset_index(drop=True)
Це завдання виконується за допомогою reset_index() функція. Аргумент drop=True використовується для відхилення вихідного індексу. Якщо ви не включите цей аргумент, старий індекс буде додано як новий стовпець у вашому DataFrame. Встановлюючи drop=True, ви повідомляєте pandas забути старий індекс і скинути його до стандартного цілого індексу.
Для практики спробуйте видалити дублікати з цього набору даних Microsoft.
Іноді типи даних можуть бути встановлені неправильно. Наприклад, стовпець дати може інтерпретуватися як рядки. Вам потрібно перетворити їх на відповідні типи.
У нашому наборі даних ми зробимо це для стовпців advertisement_date і sale_date, оскільки вони показані як тип даних об’єкта. Крім того, дати дати мають різний формат у рядках. Нам потрібно зробити його узгодженим разом із перетворенням на дату.
Найпростіший спосіб - використовувати to_datetime() метод. Знову ж таки, ви можете робити це стовпець за стовпцем, як показано нижче.
При цьому ми встановлюємо для аргументу dayfirst значення True, оскільки деякі дати починаються з першого дня.
# Converting advertisement_date column to datetime
df['advertisement_date'] = pd.to_datetime(df['advertisement_date'], dayfirst = True) # Converting sale_date column to datetime
df['sale_date'] = pd.to_datetime(df['sale_date'], dayfirst = True)
Ви також можете конвертувати обидва стовпці одночасно за допомогою застосовувати () метод с to_datetime().
# Converting advertisement_date and sale_date columns to datetime
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(pd.to_datetime, dayfirst = True)
Обидва підходи дають однаковий результат.
Тепер дати представлені в узгодженому форматі. Ми бачимо, що не всі дані були перетворені. Є одне значення NaT в advertisement_date і два в sale_date. Це означає, що дата відсутня.
Давайте перевіримо, чи стовпці перетворюються на дати за допомогою інформація () метод.
# Get a concise summary of the dataframe
print(df.info())
Як бачите, обидва стовпці не мають формат datetime64[ns].
Тепер спробуйте перетворити дані з TEXT на NUMERIC Набір даних Airbnb.
У реальних наборах даних часто відсутні значення. Обробка відсутніх даних є життєво важливою, оскільки певні алгоритми не можуть обробляти такі значення.
У нашому прикладі також є деякі відсутні значення, тому давайте розглянемо два найпоширеніші підходи до обробки відсутніх даних.
Видалення рядків із відсутніми значеннями
Якщо кількість рядків із відсутніми даними незначна порівняно із загальною кількістю спостережень, ви можете розглянути питання про видалення цих рядків.
У нашому прикладі останній рядок не має жодних значень, окрім квадратних футів і дати оголошення. Ми не можемо використовувати такі дані, тому давайте видалимо цей рядок.
Ось код, де ми вказуємо індекс рядка.
df = df.drop(8)
DataFrame тепер виглядає так.
Останній рядок було видалено, і наш DataFrame тепер виглядає краще. Проте все ще є деякі відсутні дані, які ми обробимо за допомогою іншого підходу.
Врахування відсутніх значень
Якщо у вас є значна кількість відсутніх даних, кращою стратегією, ніж видалення, може бути імпутація. Цей процес передбачає заповнення відсутніх значень на основі інших даних. Для числових даних загальні методи імпутації передбачають використання показника центральної тенденції (середнє значення, медіана, мода).
У нашому вже зміненому DataFrame ми маємо значення NaT (Not a Time) у стовпцях advertisement_date і sale_date. Ми приписуємо ці відсутні значення за допомогою середній() метод.
Код використовує fillna() метод пошуку та заповнення нульових значень середнім значенням.
# Imputing values for numerical columns
df['advertisement_date'] = df['advertisement_date'].fillna(df['advertisement_date'].mean())
df['sale_date'] = df['sale_date'].fillna(df['sale_date'].mean())
Ви також можете зробити те саме в одному рядку коду. Ми використовуємо застосовувати () щоб застосувати функцію, визначену за допомогою лямбда. Як і вище, ця функція використовує fillna() та середній() методи заповнення пропущених значень.
# Imputing values for multiple numerical columns
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(lambda x: x.fillna(x.mean()))
Результат в обох випадках виглядає так.
У нашому стовпці sale_date тепер є час, який нам не потрібен. Давайте приберемо їх.
Ми будемо використовувати strftime () метод, який перетворює дати в їх рядкове подання та певний формат.
df['sale_date'] = df['sale_date'].dt.strftime('%Y-%m-%d')
Тепер дати виглядають акуратно.
Якщо вам потрібно використовувати strftime () на кількох стовпцях, ви можете знову використати лямбда наступним чином.
df[['date1_formatted', 'date2_formatted']] = df[['date1', 'date2']].apply(lambda x: x.dt.strftime('%Y-%m-%d'))
Тепер давайте подивимося, як ми можемо приписувати відсутні категоричні значення.
Категориальні дані – це тип даних, який використовується для групування інформації зі схожими характеристиками. Кожна з цих груп є категорією. Категориальні дані можуть приймати числові значення (наприклад, «1» означає «чоловічий» і «2» означає «жіночий»), але ці числа не мають математичного значення. Ви не можете скласти їх разом, наприклад.
Категориальні дані зазвичай поділяються на дві категорії:
- Номінальні дані: Це коли категорії лише позначені і не можуть бути розташовані в певному порядку. Приклади включають стать (чоловіча, жіноча), групу крові (A, B, AB, O) або колір (червоний, зелений, синій).
- Порядкові дані: Це коли категорії можна впорядкувати або ранжувати. Хоча інтервали між категоріями не однакові, порядок категорій має значення. Приклади включають шкали оцінок (оцінка фільму від 1 до 5), рівень освіти (середня школа, бакалаврат, магістратура) або стадії раку (стадія I, стадія II, стадія III).
Для імпутації відсутніх категоріальних даних зазвичай використовується режим. У нашому прикладі стовпець property_category — це категоричні (номінальні) дані, а в двох рядках відсутні дані.
Замінимо пропущені значення на режим.
# For categorical columns
df['property_category'] = df['property_category'].fillna(df['property_category'].mode()[0])
Цей код використовує fillna() замінює всі значення NaN у стовпці property_category. Він замінює його режимом.
Крім того, частина [0] використовується для отримання першого значення з цього ряду. Якщо є кілька режимів, буде вибрано перший. Якщо є лише один режим, він все одно працює нормально.
Ось результат.
Зараз дані виглядають досить добре. Єдине, що залишилося, це перевірити, чи є викиди.
Ви можете практикувати роботу з нулями на цьому Питання для метаінтерв'ю, де вам доведеться замінити NULL на нулі.
Викиди – це точки даних у наборі даних, які помітно відрізняються від інших спостережень. Вони можуть лежати надзвичайно далеко від інших значень у наборі даних, перебуваючи поза загальною структурою. Вони вважаються незвичайними, оскільки їхні значення або значно вищі, або нижчі порівняно з рештою даних.
Викиди можуть виникати через різні причини, наприклад:
- Помилки вимірювань або введення
- Корупція даних
- Справжні статистичні аномалії
Викиди можуть значно вплинути на результати аналізу даних і статистичного моделювання. Вони можуть призвести до викривленого розподілу, зміщення або зробити недійсними статистичні припущення, що лежать в основі, спотворити розрахункову відповідність моделі, знизити прогнозну точність прогнозних моделей і призвести до неправильних висновків.
Деякі з найпоширеніших методів виявлення викидів: Z-показник, IQR (міжквартильний діапазон), прямокутні діаграми, діаграми розсіювання та методи візуалізації даних. У деяких складних випадках також використовуються методи машинного навчання.
Візуалізація даних може допомогти виявити викиди. Boxplot Seaborn дуже зручний для цього.
plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])
Ми використовуємо plt.figure(), щоб встановити ширину та висоту фігури в дюймах.
Потім ми створюємо коробковий графік для стовпців advertised_price і sale_price, який виглядає так.
Сюжет можна покращити для полегшення використання, додавши це до наведеного вище коду.
plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)
Ми використовуємо наведений вище код, щоб встановити мітки для обох осей. Ми також помітили, що значення на осі ординат є науковими позначеннями, і ми не можемо використовувати це для значень ціни. Тому ми змінюємо це на простий стиль за допомогою функції plt.ticklabel_format().
Потім ми створюємо засіб форматування, який відображатиме значення на осі y з комами як роздільниками тисяч і десятковими крапками. Останній рядок коду застосовує це до осі.
Результат тепер виглядає так.
Тепер, як ми ідентифікуємо та видаляємо викид?
Одним із способів є використання методу IQR.
IQR, або міжквартильний діапазон, — це статистичний метод, який використовується для вимірювання мінливості шляхом поділу набору даних на квартилі. Квартилі ділять упорядкований за рангом набір даних на чотири рівні частини, а значення в діапазоні першого квартиля (25-й процентиль) і третього квартиля (75-й процентиль) складають інтерквартильний діапазон.
Міжквартильний діапазон використовується для виявлення викидів у даних. Ось як це працює:
- Спочатку обчисліть перший квартиль (Q1), третій квартиль (Q3), а потім визначте IQR. IQR обчислюється як Q3 – Q1.
- Будь-яке значення нижче Q1 – 1.5IQR або вище Q3 + 1.5IQR вважається викидом.
На нашому прямокутному графіку квадрат насправді представляє IQR. Лінія всередині рамки є медіаною (або другим квартилем). «Вуса» коробкового графіка представляють діапазон у межах 1.5*IQR від Q1 і Q3.
Будь-які точки даних поза цими вусами можна вважати викидами. У нашому випадку це вартість 12,000,000 XNUMX XNUMX доларів США. Якщо ви подивіться на коробковий графік, ви побачите, наскільки чітко це представлено, що показує, чому візуалізація даних важлива для виявлення викидів.
Тепер давайте видалимо викиди за допомогою методу IQR у коді Python. По-перше, ми видалимо рекламовані цінові відхилення.
Q1 = df['advertised_price'].quantile(0.25)
Q3 = df['advertised_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['advertised_price'] (Q1 - 1.5 * IQR)) |(df['advertised_price'] > (Q3 + 1.5 * IQR)))]
Спочатку ми обчислюємо перший квартиль (або 25-й процентиль) за допомогою квантиль() функція. Ми робимо те саме для третього квартиля або 75-го процентиля.
Вони показують значення, нижче яких опускаються 25% і 75% даних відповідно.
Потім ми обчислюємо різницю між квартилями. Поки що все це лише переклад кроків IQR у код Python.
Як останній крок, ми видаляємо викиди. Іншими словами, усі дані менше Q1 – 1.5 * IQR або більше Q3 + 1.5 * IQR.
Оператор '~' заперечує умову, тому ми залишаємо лише дані, які не є викидами.
Тоді ми можемо зробити те саме з ціною продажу.
Q1 = df['sale_price'].quantile(0.25)
Q3 = df['sale_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['sale_price'] (Q1 - 1.5 * IQR)) |(df['sale_price'] > (Q3 + 1.5 * IQR)))]
Звичайно, ви можете зробити це більш стисло за допомогою для петлі.
for column in ['advertised_price', 'sale_price']: Q1 = df[column].quantile(0.25) Q3 = df[column].quantile(0.75) IQR = Q3 - Q1 df = df[~((df[column] (Q1 - 1.5 * IQR)) |(df[column] > (Q3 + 1.5 * IQR)))]
Цикл повторює два стовпці. Для кожного стовпця він обчислює IQR, а потім видаляє рядки в DataFrame.
Зверніть увагу, що ця операція виконується послідовно, спочатку для advertised_price, а потім для sale_price. Як наслідок, DataFrame змінюється на місці для кожного стовпця, а рядки можуть бути видалені через те, що вони є викидом у будь-якому стовпці. Таким чином, ця операція може призвести до меншої кількості рядків, ніж якби викиди для advertised_price і sale_price були видалені незалежно, а результати об’єднані пізніше.
У нашому прикладі результат буде однаковим в обох випадках. Щоб побачити, як змінився графічний графік, нам потрібно знову побудувати його, використовуючи той самий код, що й раніше.
plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])
plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)
Ось результат.
Ви можете попрактикуватися в обчисленні процентилів у Python, розв’язавши Питання для співбесіди на Генеральній Асамблеї.
Очищення даних є важливим кроком у процесі аналізу даних. Хоча це може зайняти багато часу, дуже важливо переконатися в точності ваших висновків.
На щастя, багата екосистема бібліотек Python робить цей процес більш керованим. Ми навчилися видаляти непотрібні рядки та стовпці, переформатувати дані та працювати з відсутніми значеннями та викидами. Це звичайні кроки, які потрібно виконати з більшістю будь-яких даних. Однак вам також іноді знадобиться об'єднати дві колонки в одну, перевірити наявні дані, присвоїти йому міткиабо позбутися білих прогалин.
Усе це очищення даних, оскільки воно дає вам змогу перетворити безладні дані реального світу на добре структурований набір даних, який можна впевнено аналізувати. Просто порівняйте набір даних, з якого ми почали, з тим, який ми отримали.
Якщо ви не бачите задоволення від цього результату, а чисті дані не викликають у вас дивного захоплення, що ж ви робите в галузі даних!?
Нейт Розіді є фахівцем із даних та стратегією продукту. Він також є ад’юнкт-професором, який викладає аналітику, і є засновником StrataScratch, платформа, яка допомагає науковцям з даних готуватися до інтерв’ю з реальними запитаннями для інтерв’ю від провідних компаній. Зв'яжіться з ним Twitter: StrataScratch or LinkedIn.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://www.kdnuggets.com/mastering-the-art-of-data-cleaning-in-python?utm_source=rss&utm_medium=rss&utm_campaign=mastering-the-art-of-data-cleaning-in-python
- : має
- :є
- : ні
- :де
- ][стор
- $UP
- 000
- 1
- 10
- 11
- 12
- 15%
- 25
- 7
- 75
- 8
- 9
- a
- вище
- точність
- через
- насправді
- додавати
- доданий
- додати
- доповнення
- просунутий
- реклама
- знову
- алгоритми
- ВСІ
- дозволяє
- по
- вже
- Також
- an
- аналізи
- аналіз
- аналітика
- аналізувати
- Аналізуючи
- та
- Інший
- будь-який
- застосовується
- Застосовувати
- підхід
- підходи
- відповідний
- ЕСТЬ
- аргумент
- виникати
- влаштований
- Art
- стаття
- AS
- збірка
- припущення
- At
- Оси
- Вісь
- b
- заснований
- BE
- оскільки
- було
- буття
- нижче
- Краще
- між
- зміщення
- кров
- синій
- обидва
- Box
- але
- ПОКУПЕЦЬ..
- by
- обчислювати
- обчислює
- розрахунок
- CAN
- рак
- не може
- випадок
- випадків
- категорії
- Категорія
- центральний
- певний
- зміна
- змінилися
- характеристика
- перевірка
- Очищення
- очевидно
- код
- color
- Колонка
- Колони
- комбінований
- загальний
- зазвичай
- Компанії
- порівняти
- порівняний
- повністю
- лаконічний
- стан
- довіра
- З'єднуватися
- Вважати
- вважається
- вважає
- послідовний
- містити
- конвертувати
- перероблений
- перетворення
- Корупція
- може
- курс
- обкладинка
- створювати
- критичний
- вирішальне значення
- дані
- аналіз даних
- точки даних
- наука про дані
- вчений даних
- набір даних
- візуалізація даних
- набори даних
- Дата
- Дати
- дата, час
- день
- угода
- справу
- дефолт
- певний
- виявляти
- Визначати
- різниця
- різний
- виразно
- розподіл
- ділити
- розділений
- дайвінг
- do
- Ні
- справи
- зроблений
- Не знаю
- впав
- два
- дублікати
- кожен
- Раніше
- легше
- Найпростіший
- екосистема
- Освіта
- або
- порожній
- що закінчився
- забезпечувати
- рівним
- однаково
- помилки
- істотний
- оцінка
- Ефір (ETH)
- Навіть
- все
- приклад
- Приклади
- Крім
- винятково
- збуджений
- існуючий
- витяг
- фактори
- Падати
- далеко
- риси
- ноги
- жінка
- менше
- Рисунок
- філе
- заповнювати
- наповнення
- остаточний
- знайти
- результати
- кінець
- Перший
- відповідати
- після
- для
- формат
- засновник
- чотири
- від
- функція
- Стать
- отримати
- отримання
- Давати
- буде
- добре
- випускник
- зелений
- Group
- Групи
- обробляти
- Обробка
- мобільний
- Мати
- he
- висота
- допомога
- допомогу
- тут
- Високий
- вище
- його
- Як
- How To
- Однак
- HTTPS
- величезний
- i
- ідентифікувати
- ідентифікує
- if
- ii
- III
- негайно
- Impact
- імпорт
- значення
- важливо
- поліпшений
- in
- В інших
- дюймів
- включати
- У тому числі
- невірно
- самостійно
- індекс
- вказувати
- вказуючи
- індекси
- інформація
- вхід
- всередині
- екземпляр
- інтерв'ю
- питання інтерв'ю
- інтерв'ю
- в
- Вводить
- залучати
- включає в себе
- питання
- IT
- ЙОГО
- JPG
- просто
- KDnuggets
- ключ
- Дитина
- етикетки
- останній
- вести
- вчений
- вивчення
- залишити
- менше
- дозволяти
- рівень
- libraries
- брехня
- Життєвий цикл
- як
- Лінія
- список
- ll
- загрузка
- розташування
- подивитися
- ВИГЛЯДИ
- знизити
- машина
- навчання за допомогою машини
- зробити
- РОБОТИ
- маніпулювання
- Маніпуляція
- позначити
- позначено
- Освоєння
- математичний
- matplotlib
- Може..
- значити
- сенс
- засоби
- вимір
- механіка
- метод
- методика
- Microsoft
- може бути
- вводить в оману
- відсутній
- режим
- модель
- моделювання
- Моделі
- Режими
- модифікований
- змінювати
- Модулі
- більше
- найбільш
- фільм
- множинний
- ім'я
- необхідно
- Необхідність
- Нові
- немає
- увагу
- Зверніть увагу..
- зараз
- номер
- номера
- нумпі
- об'єкт
- спостереження
- відбуваються
- виникнення
- of
- часто
- Старий
- on
- ONE
- тільки
- операція
- оператор
- or
- порядок
- оригінал
- Інше
- наші
- чуже
- вихід
- поза
- загальний
- панди
- параметр
- частина
- приватність
- частини
- проходити
- Викрійки
- виконується
- одноколірний
- платформа
- plato
- Інформація про дані Платона
- PlatoData
- точок
- потужний
- практика
- інтелектуального
- Готувати
- досить
- price
- ціни
- процес
- Product
- Професор
- Python
- Q1
- Q3
- питань
- діапазон
- ранг
- рейтинг
- RE
- реальний
- Реальний світ
- Причини
- червоний
- зменшити
- решті
- видаляти
- Вилучено
- замінювати
- представляти
- подання
- представлений
- представляє
- відповідно
- REST
- результат
- результати
- повертати
- Багаті
- позбавитися
- ROW
- s
- sale
- то ж
- задоволення
- ваги
- Школа
- наука
- науковий
- вчений
- Вчені
- морський народжений
- другий
- побачити
- Серія
- комплект
- установка
- кілька
- Повинен
- Показувати
- показаний
- Шоу
- значний
- істотно
- аналогічний
- одночасно
- з
- косий
- So
- так далеко
- Розв’язування
- деякі
- якось
- іноді
- конкретний
- зазначений
- площа
- Стажування
- етапи
- старт
- почалася
- статистичний
- залишився
- Крок
- заходи
- Як і раніше
- Стратегія
- рядок
- структура
- стиль
- наступні
- такі
- РЕЗЮМЕ
- Переконайтеся
- T
- Приймати
- Завдання
- завдання
- Навчання
- методи
- говорять
- текст
- ніж
- Що
- Команда
- світ
- їх
- Їх
- потім
- Там.
- отже
- Ці
- вони
- річ
- третій
- це
- ті
- хоча?
- тисяча
- тікер
- час
- трудомісткий
- times
- до
- разом
- топ
- Усього:
- правда
- намагатися
- ПЕРЕГЛЯД
- два
- тип
- Типи
- типово
- що лежить в основі
- розуміти
- створеного
- незвичайний
- USD
- використання
- використовуваний
- використовує
- використання
- звичайний
- значення
- Цінності
- різний
- візуалізації
- життєво важливий
- хотіти
- шлях..
- способи
- we
- ДОБРЕ
- були
- Що
- коли
- Чи
- який
- в той час як
- білий
- всі
- чому
- волі
- з
- в
- без
- слова
- Work
- робочий
- працює
- світ
- б
- X
- ви
- вашу
- зефірнет