Профессия Data-аналитик

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Профессия Data-аналитик por Mind Map: Профессия Data-аналитик

1. Проектирование дизайна исследования в Big Data (основы методологии)

2. Хранение данных в PostgreSQL

2.1. СУБД Postgres

2.1.1. Система управления базами данных (СУБД)

2.1.1.1. СУБД — комплекс программ, позволяющих создать базу данных (БД) и манипулировать данными (вставлять, обновлять, удалять и выбирать). Система обеспечивает безопасность, надёжность хранения и целостность данных, а также предоставляет средства для администрирования БД.

2.1.2. Трехуровневая архитектура

2.1.2.1. Пользователи

2.1.2.2. Приложение

2.1.2.2.1. Слой клиента

2.1.3. Виды СУБД

2.1.3.1. Реляционная СУБД

2.1.3.2. И все остальное. Не реляционные

2.1.4. ACID

2.1.4.1. Atomicity — Атомарность

2.1.4.2. Consistency — Согласованность

2.1.4.3. Isolation — Изолированность

2.1.4.4. Durability — Прочность

2.1.5. Преимущества СУБД PostregSQL

2.1.5.1. Бесплатное программное обеспечение

2.1.5.2. Поддерживает почти все требования стандарта SQL 2016

2.1.5.3. Богатство языка SQL

2.1.5.4. Расширенного функционала PostgreSQL

2.1.6. Знакомство с демонстрационной базой данных

2.1.6.1. Основной сущностью является бронирование (bookings). В одно бронирование можно включить несколько пассажиров, каждому из которых выписывается отдельный билет (tickets). Билет имеет уникальный номер и содержит информацию о пассажире. Как таковой пассажир не является отдельной сущностью. Как имя, так и номер документа пассажира могут меняться с течением времени, так что невозможно однозначно найти все билеты одного человека; для простоты можно считать, что все пассажиры уникальны.

2.1.6.2. Билет включает один или несколько перелетов (ticket_flights). Несколько перелетов могут включаться в билет в случаях, когда нет прямого рейса, соединяющего пункты отправления и назначения (полет с пересадками), либо когда билет взят «туда и обратно». В схеме данных нет жёсткого ограничения, но предполагается, что все билеты в одном бронировании имеют одинаковый набор перелетов.

2.1.6.3. Каждый рейс (flights) следует из одного аэропорта (airports) в другой. Рейсы с одним номером имеют одинаковые пункты вылета и назначения, но будут отличаться датой отправления

2.1.6.4. При регистрации на рейс пассажиру выдаётся посадочный талон (boarding_passes), в котором указано место в самолете. Пассажир может зарегистрироваться только на тот рейс, который есть у него в билете. Комбинация рейса и места в самолете должна быть уникальной, чтобы не допустить выдачу двух посадочных талонов на одно место.

2.1.6.5. Количество мест (seats) в самолете и их распределение по классам обслуживания зависит от модели самолета (aircrafts), выполняющего рейс. Предполагается, что каждая модель самолета имеет только одну компоновку салона. Схема данных не контролирует, что места в посадочных талонах соответствуют имеющимся в самолете.

2.2. Введение в SQL и основы синтаксиса

2.2.1. Язык SQL — это непроцедурный язык, который является стандартным средством работы с данными во всех реляционных СУБД

2.2.1.1. DDL (Data Definition Language)

2.2.1.1.1. CREATE - Создание

2.2.1.1.2. ALTER - Изменение

2.2.1.1.3. DROP - Удаление

2.2.1.2. DML (Data Manipulation Language)

2.2.1.2.1. SELECT - Выборка данных в таблицы

2.2.1.2.2. INSERT - Вставка данных в таблицу

2.2.1.2.3. UPDATE - Обновление данных в таблице

2.2.1.2.4. DELETE - Удаление данных в таблице

2.2.1.3. DCL (Data Control Language)

2.2.1.3.1. GRANT – присвоение привилегий

2.2.1.3.2. REVOKE – отмена привилегий

2.3. Операции объединения таблиц

2.3.1. Типы соединения таблиц или запросов

2.3.1.1. Перекрёстное соединение. Оператор CROSS JOIN. Условие_соединения – отсутствует

2.3.1.1.1. SELECT air.aircraft_code, air.model, air.range, s.range_seat_no FROM bookings.aircrafts AS air CROSS JOIN bookings.seats_v AS s

2.3.1.2. Соединение с соединением строк. Операторы:

2.3.1.2.1. JOIN

2.3.1.2.2. Внутренняя структура FROM:

2.3.2. T1 тип_соединения T2 [ условие_соединения ]

2.4. Агрегирование данных

2.4.1. Виды агрегированных функций

2.4.1.1. array_agg

2.4.1.1.1. Собирает все входные значения, включая NULL, в массив

2.4.1.2. avg

2.4.1.2.1. Вычисляет арифметическое среднее для всех входных значений, отличных от NULL

2.4.1.3. count

2.4.1.3.1. Выдаёт количество входных строк

2.4.1.4. json{b}_agg

2.4.1.4.1. Собирает все входных значения, включая NULL, в JSON-массив

2.4.1.5. max

2.4.1.5.1. Вычисляет максимальное из всех значений, отличных от NULL

2.4.1.6. min

2.4.1.6.1. Вычисляет минимальное из всех значений, отличных от NULL

2.4.1.7. string_agg

2.4.1.7.1. Соединяет все входные значения, отличные от NULL, в строку

2.4.1.8. sum

2.4.1.8.1. Вычисляет сумму всех входных значений, отличных от NULL

2.4.2. Функции sum, count, min, avg, max

2.4.2.1. SELECT список_полей, {sum|count|min|avg|max}(имя_поля) FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения WHERE имя_условия GROUP BY список_полей ORDER BY список_полей HAVING имя_условия

2.4.2.1.1. Пример:

2.4.3. Функции array_agg, json{b}_agg, string_agg

2.5. Сортировка и группировка данных

2.5.1. Правила сортировки данных

2.5.1.1. SELECT список_полей FROM имя_таблицы [имя_алиаса] WHERE имя_условия ORDER BY выражение_сортировки1 [ASC | DESC] [NULLS {FIRST | LAST}] [, выражение_сортировки2 [ASC | DESC] [NULLS {FIRST | LAST}]…]

2.5.1.1.1. Пример:

2.5.2. Правила группировки данных

2.5.2.1. SELECT список_полей FROM имя_таблицы [имя_алиаса] WHERE имя_условия GROUP BY [ROLLUP | CUBE | GROUPING SETS (список_полей)] ORDER BY выражение_сортировки1 [ASC | DESC] [NULLS {FIRST | LAST}] [, выражение_сортировки2 [ASC | DESC] [NULLS {FIRST | LAST}]…]

2.5.2.1.1. Пример:

2.6. Оконные и аналитические функции

2.6.1. имя_функции ([выражение [, выражение ... ]]) [ FILTER ( WHERE предложение_фильтра ) ] OVER имя_окна

2.6.1.1. Примеры:

2.6.1.1.1. SELECT row_number() OVER(ORDER BY flight_no, scheduled_departure) rn, flight_no, scheduled_departure, scheduled_arrival FROM flights

2.6.1.1.2. SELECT row_number() OVER(PARTITION BY flight_no ORDER BY flight_no, scheduled_departure) rn, flight_no, scheduled_departure, scheduled_arrival FROM flights

2.6.2. Виды:

2.6.2.1. row_number () → bigint

2.6.2.1.1. Возвращает номер текущей строки в её разделе, начиная с 1

2.6.2.2. rank () → bigint

2.6.2.2.1. Возвращает ранг текущей строки с пропусками; то же, что и row_number для первой родственной ей строки.

2.6.2.3. first_value ( value anyelement ) → anyelement

2.6.2.3.1. Возвращает значение (value), вычисленное для первой строки в рамке окна.

2.6.2.4. last_value ( value anyelement ) → anyelement

2.6.2.4.1. Возвращает значение (value), вычисленное для последней строки в рамке окна.

2.6.2.5. count() sum() max() avg() min()

2.7. Подзапросы и временные таблицы

2.7.1. Типы подзапросов

2.7.1.1. Тип 1

2.7.1.1.1. SELECT список_полей, ( SELECT имя_поля FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения ) FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения WHERE имя_условия GROUP BY список_полей ORDER BY список_полей HAVING имя_условия

2.7.1.2. Тип 2

2.7.1.2.1. SELECT список_полей FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения WHERE имя_условия AND поле_для_сравнения оператор_сравнения ( SELECT имя_поля FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения ) GROUP BY список_полей ORDER BY список_полей HAVING имя_условия

2.7.1.3. Тип 3

2.7.1.3.1. SELECT список_полей FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN ( SELECT имя_поля FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения ) AS [имя_алиаса] ON условия_соединения WHERE имя_условия GROUP BY список_полей ORDER BY список_полей HAVING имя_условия

2.7.2. Типы временных таблиц

2.7.2.1. Тип 1

2.7.2.1.1. CREATE TEMP TABLE имя_временной_таблицы AS SELECT список_полей FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения WHERE имя_условия GROUP BY список_полей ORDER BY список_полей HAVING имя_условия; SELECT * FROM имя_временной_таблицы;

2.7.2.2. Тип 2

2.7.2.2.1. CTE - Common Table Expressions (общие табличные выражения)

2.7.2.2.2. WITH имя_запроса AS ( SELECT список_полей FROM имя_таблицы [имя_алиаса] INNER|LEFT|RIGTH|FULL JOIN имя_таблицы AS [имя_алиаса] ON условия_соединения WHERE имя_условия GROUP BY список_полей ORDER BY список_полей HAVING имя_условия ) SELECT * FROM имя_запроса;

2.7.3. *Пару слов про оптимизацию

3. Основы статистики

3.1. Maschine Learning

3.1.1. Обучение с учителем

3.1.1.1. 2 класса

3.1.1.1.1. Classification

3.1.1.1.2. Regression

3.1.2. Обучение без учителя

3.1.2.1. Кластеризация

3.1.3. Армированное обучение

4. Python

4.1. Основные архитектурные черты

4.1.1. Динамическая типизация

4.1.2. Автоматическое управление памятью

4.1.3. Полная интроспекция

4.1.4. механизм обработки исключений

4.1.5. Поддержка многопоточных вычислений

4.2. Дзен

4.2.1. 1. Красивое лучше, чем уродливое.

4.2.2. 2. Явное лучше, чем неявное.

4.2.3. 3. Простое лучше, чем сложное.

4.2.4. 4. Сложное лучше, чем запутанное.

4.2.5. 5. Плоское лучше, чем вложенное.

4.2.6. 6. Разреженное лучше, чем плотное.

4.2.7. 7. Читаемость имеет значение.

4.2.8. 8. Особые случаи не настолько особые, чтобы нарушать правила.

4.2.9. 9. При этом практичность важнее безупречности.

4.2.10. 10. Ошибки никогда не должны замалчиваться.

4.2.11. 11. Если они не замалчиваются явно.

4.2.12. 12. Встретив двусмысленность, отбрось искушение угадать.

4.2.13. 13. Должен существовать один и, желательно, только один очевидный способ сделать это.

4.2.14. 14. Хотя он поначалу может быть и не очевиден, если вы не голландец.

4.2.15. 15. Сейчас лучше, чем никогда.

4.2.16. 16. Хотя никогда зачастую лучше, чем прямо сейчас.

4.2.17. 17. Если реализацию сложно объяснить — идея плоха.

4.2.18. 18. Если реализацию легко объяснить — идея, возможно, хороша.

4.2.19. 19. Пространства имён — отличная штука! Будем делать их больше!

4.3. Типы данных

4.3.1. bool

4.3.1.1. Логический

4.3.1.1.1. Пример

4.3.2. bytearray

4.3.2.1. Массив байтов

4.3.2.1.1. Пример

4.3.3. bytes

4.3.3.1. Массив байтов

4.3.3.1.1. Примеры

4.3.4. complex

4.3.4.1. Комплексное число

4.3.4.1.1. Пример

4.3.5. dict

4.3.5.1. Словарь (ассоциативный массив), представляет собой коллекцию пар «ключ—значение»; значение может быть любого типа, ключ должен иметь хешируемый тип

4.3.5.1.1. Пример

4.3.6. ellipsis

4.3.6.1. Многоточие (элипсис). Используется в основном в NumPy для сокращённого задания среза многомерного массива. В самом Python присутствует для поддержки пользовательских типов и таких расширений, как NumPy

4.3.6.1.1. Пример

4.3.7. float

4.3.7.1. Число с плавающей запятой. Степень точности зависит от платформы, но на практике обычно реализуется в виде 64-битного 53-разрядного числа

4.3.7.1.1. Пример

4.3.8. frozenset

4.3.8.1. Неупорядочное множество, не содержит дубликатов; может содержать внутри себя различные хешируемые типы данных

4.3.8.1.1. Пример

4.3.9. int

4.3.9.1. Целое число неограниченного размера

4.3.9.1.1. Пример

4.3.10. list

4.3.10.1. Список, может содержать внутри себя различные типы данных

4.3.10.1.1. Пример

4.3.11. NoneType

4.3.11.1. Объект, представляющий собой отсутствие значения, часто называемый Null в других языках

4.3.11.1.1. Пример

4.3.12. NotImplementedType

4.3.12.1. Объект, который возвращается при перегрузке операторов, когда типы операндов не поддерживаются

4.3.12.1.1. Пример

4.3.13. range

4.3.13.1. Последовательность целых чисел от какого-то одного значения до другого, обычно используется для повторения операции несколько раз при помощи for

4.3.13.1.1. Пример

4.3.14. set

4.3.14.1. Неупорядочное множество, не содержит дубликатов; может содержать внутри себя различные хешируемые типы данных

4.3.14.1.1. Пример

4.3.15. str

4.3.15.1. Строковый тип (англ. string «нить, вереница») — тип данных, значениями которого является произвольная последовательность (строка) символов алфавита. Каждая переменная такого типа (строковая переменная) может быть представлена фиксированным количеством байтов либо иметь произвольную длину.

4.3.15.1.1. 'Wikipedia' "Wikipedia" """Spanning multiple lines"""

4.3.16. tuple

4.3.16.1. Кортеж. Может содержать внутри себя различные типы данных. Может использоваться в качестве неизменяемого списка и в качестве записей с неименованными полями

4.3.16.1.1. Пример

4.4. Условия

4.5. Списки

4.5.1. Пример

4.5.1.1. >>> a = [’spam’, ’eggs’, 100, 1234] >>> a[2] = a[2] + 23 >>> a [’spam’, ’eggs’, 123, 1234] Присваивание срезу: >>> a[0:2] = [1, 12] # замена >>> a [1, 12, 123, 1234] >>> a[0:2] = [] # удаление >>> a [123, 1234] >>> a[1:1] = [’bletch’, ’xyzzy’] # вставка >>> a [123, ’bletch’, ’xyzzy’, 1234]

4.6. Синтаксис и семантика

4.6.1. Библиотеки

4.6.1.1. Pandas

4.6.1.1.1. Структура/объект

4.6.1.2. Стандартная

4.6.1.2.1. Репозиторий

4.6.1.2.2. Модули

4.6.1.3. Модули расширения и программные интерфейсы

4.6.1.4. Графические библиотеки

4.6.1.5. Контроль типов и перегрузка функций

4.6.2. Парадигмы программирования

4.6.2.1. Структурное

4.6.2.2. ООП Объектно-ориентированноое

4.6.2.3. Функциональное

4.6.2.4. Обобщённое

4.6.2.5. Императивное

4.6.2.6. Процедурное

4.6.2.7. Аспектно-ориентированное

4.6.2.8. Метапрограммирование

4.6.2.9. Контрактное

4.6.2.10. Логическое

4.6.3. Выражения

4.6.4. Имена

4.6.5. Строки документации

4.6.6. Операторы

4.6.6.1. Условные

4.6.6.1.1. Сравнение

4.6.6.1.2. if / elif / else

4.6.6.2. Оператор цикла

4.6.6.2.1. while

4.6.6.2.2. for

4.6.6.3. Комментарии

4.6.6.3.1. #

4.6.6.3.2. """ """

4.6.6.4. Операторы обработки исключений

4.6.6.4.1. try

4.6.6.4.2. except

4.6.6.4.3. else

4.6.6.4.4. finally

4.6.6.5. Оператор определения класса

4.6.6.5.1. class

4.6.6.6. Оператор определения функции, метода или генератора

4.6.6.6.1. def

4.6.6.7. Оператор который ничего не делает

4.6.6.7.1. pass

4.6.7. Возможности

4.6.8. Система отступов