-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path00-zachem-python.html
More file actions
159 lines (146 loc) · 12.3 KB
/
Copy path00-zachem-python.html
File metadata and controls
159 lines (146 loc) · 12.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Конспект 0 — Зачем аналитику Python</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><text y='14' font-size='14'>🐍</text></svg>">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="layout">
<aside class="sidebar">
<a class="brand" href="index.html">
<span class="brand-dot"></span>
<span class="brand-name">Python для аналитика</span>
</a>
<div class="nav-group">Начало</div>
<a href="index.html">Главная</a>
<div class="nav-group">Модули</div>
<a href="00-zachem-python.html" class="active">0 · Зачем это нужно</a>
<span class="nav-todo">1 · Переменные и типы</span>
<span class="nav-todo">2 · Строки</span>
<span class="nav-todo">3 · Условия</span>
<span class="nav-todo">4 · Списки и циклы</span>
<span class="nav-todo">5 · Словари</span>
<span class="nav-todo">6 · Функции</span>
<span class="nav-todo">7 · Файлы и CSV</span>
<span class="nav-todo">8 · Ошибки</span>
<span class="nav-todo">9 · Библиотеки</span>
<span class="nav-todo">10 · pandas</span>
<span class="nav-todo">11 · Python + SQL</span>
<span class="nav-todo">12 · API</span>
<span class="nav-todo">13 · Мини-проект</span>
<div class="side-foot">Живой конспект — обновляется по мере обучения.</div>
</aside>
<main class="content">
<article class="paper">
<span class="kicker">Модуль 0 · старт</span>
<h1>Зачем аналитику Python</h1>
<p class="subtitle">Первый вопрос — не «как писать код», а «зачем он мне, если есть SQL и Excel». Пока граница между тремя инструментами не проведена, синтаксис учить бессмысленно: непонятно, для чего.</p>
<div class="box note">
<span class="box-title">🧭 Главная идея: SQL живёт внутри базы</span>
Запрос отправляется базе данных, и база отвечает тем, что лежит <b>у неё</b>. Файл на диске,
чужая система, почта — всего этого для неё не существует. Не потому что SQL слабый,
а потому что дальше своих границ он просто не смотрит.
</div>
<h2>Задача, на которой видна граница</h2>
<p>Каждый понедельник нужно делать одно и то же — ничего экзотического:</p>
<div class="scenario">
<div class="s-name">Еженедельная сверка</div>
1. Взять из базы клиентов со ставкой по вкладу выше 18%.<br>
2. Сверить их со списком из другой системы — коллега присылает файл Excel.<br>
3. Найти тех, кто есть в базе, но отсутствует в файле.<br>
4. Оформить результат таблицей и отправить письмом руководителю.
</div>
<p>SQL закрывает <b>только первый шаг</b>. На втором он останавливается — файл коллеги лежит вне базы,
и никакой запрос до него не дотянется. Дальше всё то же: почтой база не занимается.</p>
<h2>«Не умеет» и «не дотягивается» — разные вещи</h2>
<p>Присмотримся к третьему шагу: взять один набор строк и оставить те, которым в другом наборе
пары не нашлось. Операция знакомая — это <code>LEFT JOIN</code> плюс проверка <code>IS NULL</code>
(см. <a href="https://dmtrvrnv.github.io/systems-analyst-handbook/04-sql-osnovy.html">конспект по SQL</a>
в первой тетради). Такой приём называют <b>анти-джойн</b>: оставить только непарные строки.</p>
<p>Выходит, сама операция SQL прекрасно по силам. Мешает не она — мешает то,
что <b>две половины данных лежат в разных мирах</b>. База не видит файл, файл не знает про базу.</p>
<div class="box rule">
<span class="box-title">💡 Формулировка, за которую стоит держаться</span>
SQL эту задачу <b>не умеет</b> — неверно. SQL до неё <b>не дотягивается</b> — верно.<br>
Разница не в словах: из неё следует, что Python не заменяет SQL, а приносит ему данные.
</div>
<h2>Карта: где чей участок</h2>
<div class="table-wrap">
<table>
<tr><th></th><th>SQL</th><th>Excel</th><th>Python</th></tr>
<tr><td><b>Где живёт</b></td><td>внутри одной базы</td><td>внутри одного файла</td><td><b>снаружи всего</b></td></tr>
<tr><td><b>Сила</b></td><td>мгновенно перелопатить миллионы строк</td><td>посмотреть глазами, поправить руками</td><td>дотянуться, склеить, повторить</td></tr>
<tr><td><b>Слабость</b></td><td>не видит ничего вне базы</td><td>руками, один раз, следов не остаётся</td><td>сам по себе данных не хранит</td></tr>
</table>
</div>
<p>Ключ — в правой нижней клетке. Python не хранит данные и не считает лучше базы.
Он <b>руки</b>: сходил в базу, сходил за файлом, сходил в чужую систему — принёс всё в одно место.
А дальше делает с этим те же операции, что уже знакомы по SQL.</p>
<p>Насколько те же — видно по названиям. Соединение таблиц в библиотеке <code>pandas</code>
называется <code>merge</code>, и у него есть параметр <code>how="left"</code>. Это тот же
<code>LEFT JOIN</code>, другими буквами. Логику работы с таблицами учить заново не придётся —
придётся научиться записывать её по-питоновски.</p>
<div class="box bad">
<span class="box-title">🚫 Грабли: «раз есть Python, SQL можно забыть»</span>
Наоборот. Python <b>вызывает</b> SQL: тот же <code>SELECT</code> отправляется в базу прямо из скрипта,
а результат ложится в переменную. Знание SQL никуда не девается — у него появляются руки.
Тот, кто пропустил SQL и сразу взялся за <code>pandas</code>, потом всё равно возвращается за ним.
</div>
<h2>Вторая причина: сделал один раз — работает всегда</h2>
<p>Допустим, все четыре шага делаются руками: запрос, выгрузка, ВПР в Excel, копипаст в письмо.
Двадцать минут, ничего сложного. Excel, кстати, третий шаг тоже закрывает — та же ВПР.</p>
<p>А потом наступает <b>следующий</b> понедельник. И ещё один. И так полгода: те же двадцать минут заново,
каждый раз с шансом промахнуться мышкой. И если спросят, почему в мартовском отчёте такая цифра —
ответить нечего, последовательность кликов нигде не записана.</p>
<div class="box rule">
<span class="box-title">💡 Что такое скрипт</span>
<b>Скрипт</b> (англ. <i>script</i> — «сценарий») — записанная последовательность действий.
Написал один раз, дальше запускаешь командой. Выполнится одинаково сегодня, через полгода
и на чужом компьютере. И его можно <b>прочитать</b> — увидеть, что именно он делал с данными.
</div>
<p>Здесь и проходит настоящая граница между «посчитать» и «автоматизировать».
Excel и SQL отвечают на вопрос один раз. Скрипт отвечает на него столько раз, сколько понадобится,
и всегда одинаково.</p>
<h2>Ответ на вопрос модуля</h2>
<div class="box good">
<span class="box-title">🎯 Своими словами</span>
Аналитику Python нужен, чтобы автоматизировать работу с базами данных — и рутину вокруг них:
файлы, выгрузки, сообщения руководителю. Туда SQL уже не дотягивается.
</div>
<p>Не «стать программистом» и не «выучить модный язык». Дотянуться туда, куда SQL не достаёт,
и сделать так, чтобы работа, проделанная однажды, дальше делалась сама.</p>
<h2>Ключевые слова</h2>
<div class="chips">
<span class="chip">SQL живёт внутри базы</span>
<span class="chip">не умеет ≠ не дотягивается</span>
<span class="chip">Python — руки, а не хранилище</span>
<span class="chip">анти-джойн — LEFT JOIN + IS NULL</span>
<span class="chip">merge how="left" = LEFT JOIN</span>
<span class="chip">скрипт — записанная последовательность</span>
<span class="chip">Python вызывает SQL, а не заменяет</span>
</div>
<div class="box good">
<span class="box-title">🎯 Проверь себя (без подсказок)</span>
1. Возьми любую свою повторяющуюся задачу и разбей на шаги. Отметь, на каком шаге SQL останавливается и почему именно там.<br>
2. Объясни коллеге разницу между «SQL этого не умеет» и «SQL до этого не дотягивается» — на своём примере.<br>
3. Назови дело, которое делаешь руками чаще раза в месяц. Это кандидат на первый настоящий скрипт — вернись к нему после модуля 7.
</div>
<div class="box note">
<span class="box-title">🛠 Проверка среды</span>
Перед модулем 1 стоит убедиться, что Python на месте. В терминале:
<pre class="code">python --version</pre>
Ответ вида <code>Python 3.12.10</code> означает, что всё готово. Если терминал ругается,
что команда не найдена — Python не установлен или не прописан в PATH.
</div>
<div class="nav">
<a href="index.html">← Оглавление</a>
<a href="index.html">Дальше: модуль 1 — переменные →</a>
</div>
</article>
</main>
</div>
</body>
</html>