Python-шпаргалка для аналитика
Базовый синтаксис
# Переменные
x = 10
name = 'Иван'
is_active = True
# Комментарии
# Однострочный
"""
Многострочный
"""
# Print
print('Hello')
print(f'Name: {name}, x: {x}') # f-stringТипы данных
# Числа
x = 10 # int
y = 3.14 # float
# Строки
s = 'hello'
s = "hello"
s = '''многострочная'''
# Булевы
b = True
b = False
# None
x = None
# Проверка типа
type(x) # <class 'int'>
isinstance(x, int) # TrueОперации
# Арифметика
+ - * /
// # деление нацело: 7 // 2 = 3
% # остаток: 7 % 2 = 1
** # степень: 2 ** 3 = 8
# Сравнение
== != < > <= >=
# Логика
and or not
# Проверка вхождения
'a' in 'abc' # True
5 in [1, 2, 5] # TrueСтроки
s = 'Hello World'
len(s) # 11
s.upper() # 'HELLO WORLD'
s.lower() # 'hello world'
s.replace('Hello', 'Hi') # 'Hi World'
s.split(' ') # ['Hello', 'World']
'-'.join(['a', 'b', 'c']) # 'a-b-c'
s.strip() # убрать пробелы
# Slicing
s[0] # 'H'
s[0:5] # 'Hello'
s[:5] # 'Hello'
s[6:] # 'World'
s[::-1] # 'dlroW olleH' (reverse)
# F-strings
name = 'Иван'
age = 25
f'{name} is {age} years old'
f'{1.234:.2f}' # '1.23'Списки (list)
# Создание
l = [1, 2, 3]
l = list(range(5)) # [0, 1, 2, 3, 4]
# Доступ
l[0] # 1
l[-1] # последний
l[1:3] # [2, 3]
# Методы
l.append(4) # добавить
l.extend([5, 6]) # расширить
l.insert(0, 0) # вставить на позицию
l.remove(2) # удалить первое вхождение
l.pop() # удалить последний
l.pop(0) # удалить первый
l.sort() # сортировка in-place
sorted(l) # новый отсортированный
l.reverse() # обратить
# Длина, сумма, мин, макс
len(l), sum(l), min(l), max(l)Словари (dict)
d = {'name': 'Иван', 'age': 25}
# Доступ
d['name'] # 'Иван'
d.get('city', 'Москва') # default если нет
# Изменение
d['city'] = 'Москва'
del d['age']
d.pop('age')
# Итерация
for key, value in d.items():
print(key, value)
# Проверка
'name' in d
Множества (set)
s = {1, 2, 3}
s = set([1, 2, 3, 3]) # {1, 2, 3}
s.add(4)
s.remove(2)
# Операции
a | b # объединение
a & b # пересечение
a - b # разностьЕсли хочется сразу закрепить тему на практике — открой тренажёр в Telegram. 10 минут в день — и синтаксис в пальцах.
Кортежи (tuple)
Неизменяемые списки:
t = (1, 2, 3)
t[0] # 1
# t[0] = 5 # TypeError — неизменяемый
# Распаковка
x, y, z = tУсловия
if x > 0:
print('positive')
elif x == 0:
print('zero')
else:
print('negative')
# Тернарный
label = 'positive' if x > 0 else 'non-positive'Циклы
# For
for i in range(5): # 0, 1, 2, 3, 4
print(i)
for x in [1, 2, 3]:
print(x)
for i, x in enumerate(['a', 'b', 'c']):
print(i, x)
for k, v in d.items():
print(k, v)
# While
n = 0
while n < 5:
n += 1
# break / continue
for x in l:
if x == 0:
break
if x < 0:
continue
print(x)List comprehensions
[x**2 for x in range(10)]
[x for x in l if x > 0]
[x if x > 0 else 0 for x in l]
Функции
def greet(name, greeting='Hello'):
return f'{greeting}, {name}!'
greet('Иван') # 'Hello, Иван!'
greet('Иван', greeting='Hi') # 'Hi, Иван!'
# Lambda
square = lambda x: x ** 2
# *args, **kwargs
def f(*args, **kwargs):
print(args, kwargs)Работа с файлами
# Чтение
with open('file.txt', 'r') as f:
content = f.read()
lines = f.readlines()
# Запись
with open('file.txt', 'w') as f:
f.write('hello')
# CSV
import csv
with open('file.csv') as f:
reader = csv.DictReader(f)
for row in reader:
print(row)Модули для аналитика
# Pandas
import pandas as pd
df = pd.read_csv('file.csv')
# NumPy
import numpy as np
arr = np.array([1, 2, 3])
# Matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2, 3])
plt.show()
# Seaborn
import seaborn as sns
sns.histplot(df['x'])
# Scipy
from scipy import stats
stats.ttest_ind(a, b)
# Requests (для API)
import requests
r = requests.get('https://api.example.com')
data = r.json()
# JSON
import json
d = json.loads('{"a": 1}')
s = json.dumps({'a': 1})
# Datetime
from datetime import datetime, timedelta
now = datetime.now()
week_ago = now - timedelta(days=7)Чтобы не только читать теорию, но и решать реальные задачи — загляните в бот Карьерника. Там по каждой теме подборка вопросов с разборами.
Обработка ошибок
try:
x = int('abc')
except ValueError as e:
print(f'Error: {e}')
else:
print('success')
finally:
print('cleanup')Классы (базово)
class User:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f'Hello, {self.name}'
u = User('Иван', 25)
u.greet()Polymorphism и наследование
class Admin(User):
def __init__(self, name, age, role):
super().__init__(name, age)
self.role = roleОсновные встроенные функции
len(obj) # длина
sum(iterable) # сумма
min(x), max(x) # мин/макс
sorted(l) # сортировка
reversed(l) # реверс
zip(a, b) # пары
map(func, iter) # применить ко всем
filter(func, iter) # отфильтровать
any(l), all(l) # любое / все True
abs(x), round(x, 2) # модуль, округлениеpipenv / virtualenv
# Создать виртуальное окружение
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# Установить пакеты
pip install pandas numpy
pip freeze > requirements.txtЧитайте также
FAQ
С чего начать?
Синтаксис → pandas → ML. Для аналитика 80% времени — pandas.
Какой редактор выбрать?
Jupyter Notebook для анализа. VS Code + Jupyter extension — универсально. PyCharm — тяжеловат.
Python 2 или 3?
Только Python 3 (3.10+). Python 2 умер в 2020.
Нужен ли продвинутый Python?
На junior — нет. На middle+ — полезно (ООП, decorators, generators).