add new md files

This commit is contained in:
Yesen 2023-10-12 21:32:13 +03:00
parent bb60f934d7
commit de2348b7e4
9 changed files with 882 additions and 0 deletions

277
docs/DataScience/EDA.md Normal file
View File

@ -0,0 +1,277 @@
# Разведочный анализ (EDA)
## Цели разведочного анализа данных
__Источник__ : https://habr.com/ru/companies/otus/articles/752434/
1. Понимание структуры и характеристик набора данных
- размер набора данных
- типы переменных
- наличия пропущенных значений
- дубликаты
2. Выявление аномалий и выбросов
3. Идентификация связей и корреляций между переменными
4. Подготовка данных для дальнейших этапов анализа
# Инструменты и методы разведочного анализа данных (EDA)
## Визуализация данных
Визуализация данных позволяет увидеть и понять паттерны, тренды и взаимосвязи в данных через графику и диаграммы.
### Гистограммы и диаграммы рассеяния
---
__Гистограмма__ это графическое представление распределения данных по различным интервалам. Она позволяет нам оценить, как часто значения попадают в определенные диапазоны и какие у нас имеются пики или провалы в данных.
__Диаграмма рассеяния__ это график, в котором каждая точка представляет собой отдельное наблюдение и показывает взаимосвязь между двумя переменными. Это может помочь нам определить, есть ли какая-либо зависимость или корреляция между ними.
- Построение гистограммы
```python
import matplotlib.pyplot as plt
import seaborn as sns
# Генерируем случайные данные
data = [23, 34, 45, 67, 23, 56, 78, 89, 43, 65, 34, 56, 76]
# Построение гистограммы
plt.hist(data, bins=10, color='blue', alpha=0.7)
plt.xlabel('Значения')
plt.ylabel('Частота')
plt.title('Гистограмма данных')
plt.show()
```
![Гистограмма](C:\Users\admin\Documents\prog\hello\practica\DataBase\Figure_1.png)
- Построение гистограммы диаграммы рассеяния
```python
import matplotlib.pyplot as plt
import seaborn as sns
# Построение диаграммы рассеяния
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [15, 25, 30, 40, 50, 60, 70, 80]
plt.scatter(x, y, color='red')
plt.xlabel('Переменная X')
plt.ylabel('Переменная Y')
plt.title('Диаграмма рассеяния')
plt.show()
```
![Диаграмма рассеяния](C:\Users\admin\Documents\prog\hello\practica\DataBase\Figure_2.png)
### Ящик с усами (box plot)
---
__Ящик с усами__ это визуализация статистических характеристик распределения данных, таких как медиана, квартили и выбросы.
```python
import matplotlib.pyplot as plt
import seaborn as sns
# Генерируем случайные данные
data = [23, 34, 45, 67, 23, 56, 78, 89, 43, 65, 34, 56, 76]
# Построение ящика с усами
plt.boxplot(data)
plt.ylabel('Значения')
plt.title('Box plot')
plt.show()
```
### Тепловые карты (heatmap)
---
__Тепловая карта__ это графическое представление матрицы данных, где цветовая шкала показывает степень взаимосвязи между переменными. Это помогает выявить паттерны и зависимости в больших наборах данных.
```python
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Генерируем случайные данные
data = np.random.rand(5, 5)
# Построение тепловой карты
sns.heatmap(data, annot=True, cmap='YlGnBu')
plt.title('Тепловая карта')
plt.show()
```
## Сводные статистики и меры центральной тенденции
Сводные статистики и меры центральной тенденции позволяют нам получить обобщенное представление о распределении данных и основных характеристиках. Это ключевые числовые метрики, которые помогают нам понять типичные и наиболее значимые значения в наборе данных.
- __Среднее (Mean)__: Это сумма всех значений, разделенная на количество значений. Оно представляет общую "среднюю" величину данных.
- __Медиана (Median)__: Это среднее значение двух средних значений, если количество значений четное, или среднее значение самого центрального числа, если количество значений нечетное. Медиана предоставляет более устойчивую меру центральной тенденции в присутствии выбросов.
- __Мода (Mode)__: Это значение, которое встречается наиболее часто в наборе данных. Мода может быть полезна для определения наиболее типичного значения.
```python
import numpy as np
from scipy import stats
# Генерируем случайные данные
data = np.random.randint(1, 100, 20)
# Расчет среднего
mean = np.mean(data)
print("Среднее:", mean)
# Расчет медианы
median = np.median(data)
print("Медиана:", median)
# Расчет моды
mode = stats.mode(data)
print("Мода:", mode.mode[0])
```
## Корреляционный анализ
- __Положительная корреляция__: Если одна переменная увеличивается, другая также увеличивается. Коэффициент корреляции находится в диапазоне от 0 до 1.
- __Отрицательная корреляция__: Если одна переменная увеличивается, другая уменьшается. Коэффициент корреляции находится в диапазоне от 0 до -1.
- __Нулевая корреляция__: Отсутствие линейной зависимости между переменными. Коэффициент корреляции близок к 0.
```python
import numpy as np
import matplotlib.pyplot as plt
# Генерируем случайные данные
x = np.array([1, 2, 3, 4, 5, 6])
y = np.array([2, 3, 4, 4, 5, 7])
# Расчет коэффициента корреляции Пирсона
correlation = np.corrcoef(x, y)[0, 1]
print("Коэффициент корреляции:", correlation)
# Визуализация данных
plt.scatter(x, y)
plt.xlabel('Переменная X')
plt.ylabel('Переменная Y')
plt.title('Диаграмма рассеяния и корреляция')
plt.show()
```
![Диаграмма рассеяния и корреляция](C:/Users/admin/Documents/prog/hello/practica/DataBase/Figure_3.png)
## Преобразование данных (например, нормализация или стандартизация)
__Преобразование данных__ это процесс изменения шкалы или распределения переменных, чтобы сделать их более подходящими для анализа или моделирования. Это важный этап EDA, который помогает сгладить различия между переменными и создать более устойчивые и интерпретируемые данные. Преобразование данных может быть особенно полезным, когда у нас есть переменные с разными диапазонами значений, что может затруднять интерпретацию результатов. Это также может помочь алгоритмам машинного обучения работать более эффективно, так как они часто ожидают, что переменные будут иметь определенный масштаб или распределение.
- __Нормализация (Normalization)__: Этот метод масштабирует значения переменных так, чтобы они находились в диапазоне от 0 до 1. Это особенно полезно, когда у нас есть переменные с разными единицами измерения и масштабами.
- __Стандартизация (Standardization)__: Этот метод преобразует значения переменных так, чтобы их среднее было равно 0, а стандартное отклонение 1. Он делает распределение более "стандартным" и симметричным.
```python
import numpy as np
from sklearn.preprocessing import MinMaxScaler, StandardScaler
# Генерируем случайные данные
data = np.array([[1, 2],
[2, 3],
[3, 4],
[4, 5]])
# Нормализация данных
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
print("Нормализованные данные:")
print(normalized_data)
# Стандартизация данных
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
print("Стандартизованные данные:")
print(standardized_data)
```
## Анализ выбросов и аномалий
__Анализ выбросов и аномалий__ это процесс выявления и исследования значений данных, которые существенно отличаются от остальных наблюдений. Выбросы и аномалии могут возникнуть из-за ошибок в данных, случайных событий или указывать на особенности исследуемого явления.
Основные шаги анализа выбросов и аномалий:
- __Визуализация данных__: Используйте графики, такие как ящик с усами (box plot) или диаграммы рассеяния, чтобы визуально выявить потенциальные выбросы.
- __Статистический анализ__: Используйте статистические методы, чтобы определить, какие значения считаются выбросами на основе критериев, таких как интерквартильный размах или Z-оценка.
- __Принятие решения__: Решите, какие действия необходимо предпринять с выбросами, например, удалить их, заменить на другие значения или оставить без изменений.
```python
import numpy as np
import matplotlib.pyplot as plt
# Генерируем случайные данные с выбросами
data = np.array([10, 15, 20, 25, 30, 500])
# Построение ящика с усами
plt.boxplot(data)
plt.ylabel('Значения')
plt.title('Анализ выбросов')
plt.show()
```
![Boxplot](C:\Users\admin\Documents\prog\hello\practica\DataBase\Figure_4.png)
# Шаги разведочного анализа данных
## Загрузка и первичный осмотр данных
1. __Pагрузка данных и их первичный осмотр__
```python
import pandas as pd
# Загрузка данных
data = pd.read_csv('sales_data.csv')
# Вывод первых 5 строк таблицы
print(data.head())
```
2. __Обработка пропущенных значений__
__Задача__: Допустим, у нас есть пропущенные значения в столбце Цена. Мы решим эту проблему, заполнив пропущенные значения средней ценой продуктов.
```python
mean_price = data['Цена'].mean()
data['Цена'].fillna(mean_price, inplace=True)
```
3. __Анализ распределения переменных__
В этом шаге мы будем изучать распределение числовых переменных. Мы построим гистограммы и диаграммы рассеяния для лучшего понимания данных.
__Задача__: Представим, что нам интересно распределение цен на продукты. Давайте построим гистограмму для этой переменной.
```python
import matplotlib.pyplot as plt
plt.hist(data['Цена'], bins=20, color='blue', alpha=0.7)
plt.xlabel('Цена')
plt.ylabel('Частота')
plt.title('Распределение цен на продукты')
plt.show()
```
4. __Исследование корреляций между переменными__
__Задача__: Допустим, мы хотим понять, существует ли связь между ценой продукта и его количеством продаж. Давайте рассчитаем коэффициент корреляции между этими переменными.
```python
correlation = data['Цена'].corr(data['Количество'])
print("Корреляция между ценой и количеством продаж:", correlation)
```
5. __Выявление выбросов и аномалий__
В этом шаге мы будем искать выбросы и аномалии в данных. Для этого используется визуализация, например, ящик с усами (box plot).
__Задача__: Давайте определим, есть ли выбросы в столбце Количество (количество продаж продукта). Мы построим ящик с усами для этой переменной.
```python
plt.boxplot(data['Количество'])
plt.ylabel('Количество')
plt.title('Анализ выбросов в количестве продаж')
plt.show()
```
6. __Изучение категориальных переменных__
__Задача__: Пусть нас интересует, какие продукты являются наиболее популярными среди покупателей. Давайте построим график частоты продаж для каждого продукта.
```python
product_counts = data['Продукт'].value_counts()
product_counts.plot(kind='bar')
plt.xlabel('Продукт')
plt.ylabel('Частота продаж')
plt.title('Частота продаж продуктов')
plt.xticks(rotation=45)
plt.show()
```
7. __Визуализация результатов EDA__
```python
plt.figure(figsize=(10, 6))
plt.subplot(2, 2, 1)
plt.hist(data['Цена'], bins=20, color='blue', alpha=0.7)
plt.xlabel('Цена')
plt.ylabel('Частота')
plt.title('Распределение цен на продукты')
plt.subplot(2, 2, 2)
plt.scatter(data['Цена'], data['Количество'], color='green')
plt.xlabel('Цена')
plt.ylabel('Количество')
plt.title('Диаграмма рассеяния между ценой и количеством продаж')
plt.subplot(2, 2, 3)
plt.boxplot(data['Количество'])
plt.ylabel('Количество')
plt.title('Анализ выбросов в количестве продаж')
plt.tight_layout()
plt.show()
```

0
docs/python/README.md Normal file
View File

View File

View File

View File

@ -0,0 +1,438 @@
# Python
Среда разработки InteliJ IDEAю Интерпретированный обьектно-ориентированный ЯП
- Строго тиризированные данные
- Динамично типизирован
| Имя | Тип | Описание |
| ------------- |------------------:| :-----|
| integer | int | Числовой ТД для __*целых*__ чисел (3, 79, -90)|
| floating point | float | Может премещаться по числу (7.8, -0.09) |
| string | str | __Упорядоченная__ пос-ть символов (буквы/цифры) - __immutable__ |
| List | list | Упорядоченная пос-ть обьектов [] = структура данных |
| [dictionary](dictionaries.md) | dict | Неупорядоченная пос-ть пар ключей и значений {("ключ": "77", "ключ2": "88",)} |
|tuple | tup | Упорядоченная неизмен. пос-ть ("9", "10") - __immutable__ |
| set | set | Неупорядоченная коллекция уник. обьектов ("привет", 99), не может менять обьекты внутри |
| boolean | bool | True/False |
## Основные хоткеи
__"Ctrl + /"__ - комментарий
__" \ "__ - перенос кода на след строку, перед знаками внутри строки "I \ 'm"
__\n__ - перенос фразы на след. строку
__\t__ - заменяет пробел в строке
__""" _ """__ - игнорируют любые символы внутри
## Строки в Python
### Свойства и методы строк
#### __Св-ва:__ \
1) Immutable - неизменяемые. Если созд. строку, то через терм не можем менять
```python
a1 = 'ABcd'
print (1[1]) -> b
```
```python
a1[1] = 2 -> (FAIL)
```
2) Concate - можем скреплять строки
3) Muttyplication - усножение
```python
yummy = 'yum'
print(yummy*2) -> yumyum
```
__Методы:__ \
`yummy.upper()` - делает все буквы заглавные (НОВАЯ строка)\
`yummy.lower()` - наоборот (НОВАЯ строка)
## Форматирование строк
```python
name = 'Jack'
age = 23
name_and_age = 'My name is {0}. I\'m {1} years old'.format(name,age)' #можно сразу переменные без цифр
```
-> Можно {} в разном порядке, можно без цифр сразу переменные писать \
## Таблица
```python
print ('''{}{}{}
{}{}{}
{}{}{}'''.format(ввести числа в кол-ве {}))
```
-> `{0:1.3f}` 3f - кол-во знаков после запятой в float, `{0:10.3f}` 10 - будет пробел - подставить вместо {} в таблице
## Boolean
| True | False |
- comparison operators
- равентсво `n==n` -> True
- `'Hello' == 'hello'` -> False (H != h)
- `n > m` / `n < m`
- `n >= m ` / `n <= m`
- `x=x+n` = `x+=n`
- __ASCII code__
```python
print(ord('a')) -> 97
print(ord('b')) -> 98
print(ord('a' > 'b')) -> Falseа
print('hi'>'hello') -> True # Отличие в первых отличающихся знаках ('i'= 105 'e'= 101)
```
- Программа вывода `True`, если ввести 18 и более лет
```python
age = int(input('input your age'))
print('Your age is' + str(age))
print('Access is permitted' + str(age >= 18)) -> True
```
```python
name = input(('input your name'))
age = int(input('input your age'))
is_married = False
if age > 18 and is_married == False:
print('Hi {}! You are {}'.format(name,age))
```
#### __Bollean операции с помощью `print()`__
---
- строки
```python
print ('a' in "Jack") -> True # такая буква есть в слове, по сути не вводим переменные и списки/листы
```
- списки
```python
list = ['a','b','c']
print ('a' in list) -> True # такая буква есть в спискe
```
- словари
```python
dict = {1:'a', 2: 'b', 3:'c'}
print (1 in dict) -> True # есть такой ключ
print (1 in dict.keys()) -> True # есть такой ключ
print (4 in dict.keys()) -> False # такого ключа нет
print ('c' in dict.values()) -> True # есть такое значение
```
### Логические операторы
---
- `and` \ `or` \ `not`
```python
x = 1
y = 2
x>1 and y>1 -> False
x>1 or y>1 -> True
not x>1 -> True
```
### Условный оператор if, elif, else
---
- Пример:
```python
x = 3
if x>3:
print('x>3')
elif x<3:
print('x<3')
else:
print('x == 3') -> x==3
```
- Четное / Нечетное
```python
x = 45
if x%2 == 0:
print('x is even') # четное
else:
print('x is odd') # нечетное
```
- Особенности работы `if`
| False | True |
| ------------- |------------------:|
| if 0: | if n: #n!=0|
|if ' ':|if 'ab':|
|if None:||
|if[] :|if [1,2] :|
## Цикл for
- Посл-ти: строки, списки, словари, мн-ва и др. - для перебора используется цикл
```python
list = [1,2,3,4,5]
for number(любое значение) in list:
print(number) -> 1
2
3
4
5
print('Hi') #выдаст столько раз сколько эл-тов в списке
```
- Для подсчета суммы значений в списке
```python
sum = 0
for num in list:
sum = sum + num
print (sum) -> 10
```
- цикл `for` для tuple
```python
tuple = [('a','b'),('c','d'),('e','f')]
for item im tuple:
print (item) -> ('a','b')
('c','d')
('e','f')
```
```python
for let1, let2 in tuple:
print(let1, let2) -> ab
cd
ef
for let1, let2 in tuple:
print(let1) # первые буквы каждого tuple эл-та
print(let2) -> a
c
e
b
d
f
```
- цикл `for` для dictionaries \
__`.items()`__ - и ключ и значения
```python
for items in dict.items():
print(item) -> ('key1','value1')
('key2','value2')
```
__`.keys()`__ - только ключи
```python
dict = {'key1':'value1','key2':'value2'}
for item in dict.keys():
print(key) -> key1
key2
```
__`.values()`__ - только значения
```python
dict = {'key1':'value1','key2':'value2'}
for item in dict.values():
print(values) -> value1
value2
```
## Цикл while
Выполняется до тех пор, пока какое-то условие не станет True
```python
x = 5
while x>=1:
print(x)
x = x-1 -> 5 # 5>= 1 ... print()
4 # 4>= 1 ... print()
3 # 3>= 1 ... print()
2 # 2>= 1 ... print()
1 # 1>= 1 ... print()
# 0>= 1 .False. break
```
#### Операторы `pass`,`break`,`continue`
`pass` - (ничего не делать)
```python
list = [1,2,3]
for i on list:
pass # ничего не делать
```
- `break` - если True - выход из цикла
```python
list = [1,2,3]
for i on list:
if i ==2:
break # если True - выход из цикла
print(i) -> 1
```
`continue` - если True - переход в начало цикла
```python
list = [1,2,3]
for i on list:
if i ==2:
continue # если True - переход в начало цикла
print(i) -> 1 # пропустили эл-т 2
3
```
## Range()
Функция `range()` - часто используется для повторения опр. действий несколько раз
```python
for x in range(n): # n не включено
print(n) -> 0
1
2 # n не включено
```
- диапазон `range(k,n)`
```python
for x in range(k,n): # n не включено
print(n) -> k
k+1
k+2
... # n не включено
```
- диапазон `range(k,n)` + шаги `range(k,n,l)`
```python
for x in range(k,n,l): # n не включено 3,11,2
print(n) -> k # 3
k+l # 3+2 = 5
(k+l)+l # 5+2 = 7
... # n не включено, 9 stop
```
- для перебора цифр и заключение их в список
```python
list = [num for num in range(0,10)] # первый num можно опустить
print (list) -> [0,1,2,3...9] # 10 не вкл
```
- для операций типа степеней\корней и пр.
```python
list = [num**2 for num in range(0,10)]
print (list) -> [0,1,4,9...81] # 10 не вкл
list = [(num-3/2)**2 for num in range(0,10)]
```
## Индексы
__len()__ - длина строки
[а:с] - а(вкл), с(не вкл) \
[:] - от начала до конца \
[а:] - от начала до конца \
[::с] - от начала до конца с шагом 2 __Пример__ : Hello - H (~~e~~) l (~~l~~) o = Hlo \
[1::2] - Hello - eo
[::-1] - наоборот слово
#### Различные операции с индексами
- указать индекс каждого эл-та в списке/строке
```python
index = 0
my_str = 'agdjfh'
for letters in my_str:
print (letter + 'is at index' + str(index))
index += 1
```
- `enumerate()` указать индекс каждого эл-та в списке/строке
```python
index = 0
my_str = 'agdjfh'
for letters in enumerate(my_str):
print (letter) -> (0, 'a')
(1, 'g')
...
```
- (распаковка) `enumerate()`
```python
index = 0
my_str = 'agdjfh'
for index, letters in enumerate(my_str):
print (letter + 'is at index' + str(index))
```
### Различные функции
---
- `min()` | `max()`
```python
print (min(1,2,3,4)) -> 1
```
- `min()` | `max()` работают также с листами по аскикоду
```python
print(max('Hello')) -> o # по аскикоду о = 111
```
#### Добавление библиотек
- Добавление предустановленных библиотек
```python
import pandas as pd
```
- Добавление непредустановленных библиотек
- linux
Для установки пакетов используйте команду:
pip install package-name
Где package-name — имя пакета, который вы хотите установить.
Для обновления пакета введите команду:
pip install -U package-name
Где package-name — имя пакета, который вы хотите обновить.
Удаление пакета выполняется командой:
pip uninstall package-name
Где package-name — имя пакета, который вы хотите удалить.
Если вы хотите переустановить пакет (даже если он актуальной версии), то используйте команду:
pip install --force-reinstall package-name
Где package-name — имя пакета, который хотите переустановить.
Список установленных пакетов можно посмотреть при помощи команды:
pip list
Чтобы вывести информацию об установленном пакете, введите команду:
pip show package-name
Где package-name — имя пакета.
- Пример использования
```python
from random import shuffle
list = [1,3,56,4]
print(shuffle(list)) -> [4,3,56,1] # Рандомно перемешивает
from random import randint
randint (1,10) -> 6 # Выбирает любое число по диапазону (1,10)
```
## List Comprehension
#### Создание списка из посл-тей
- разделяем слово на буквы и помещаем в список ['','']
- способ №1
```python
str = 'Hello'
list = []
for i in str:
list.append(letter) # добавляет эл-т в конец списка (в данном случае добавляем с 1 эл-та)
print(list) -> ['h','e','l',,...]
```
- способ №2
```python
str = 'Hello'
list = []
list = [for i in str]
print (list) -> ['h','e','l',,...]
```
- для перебора цифр и заключение их в список
```python
list = [num for num in range(0,10)] # первый num можно опустить
print (list) -> [0,1,2,3...9] # 10 не вкл
```
- для операций типа степеней\корней и пр.
```python
list = [num**2 for num in range(0,10)]
print (list) -> [0,1,4,9...81] # 10 не вкл
list = [(num-3/2)**2 for num in range(0,10)]
```
- `if` в операции с `for...in`
```python
list = [6,43,-2,11,-55,-12,3,345]
new_list = [num for num in list if num > 0]
# первый "num" - помещаем в список, можно добавлять к нему условия типа "num **3/2"
# второй "num" - из последовательностей list
# "if" в конце, т.к нет других операторов
# "num > 0" - только положительные числа
print (new_list) -> [6,43,11,3,345]
```
- `if...else` в операции с `for...in`
```python
```

View File

@ -0,0 +1,53 @@
## Dictionaries
- Структура данных, кот. сод. __неупорядоч__ пос-ть различных о. КЛЮЧ + ЗНАЧЕНИЕ
- Добавление ключа (__НЕ__ может содержать одинаковых ключей, если добавить, то значение обновится)
```python
price = {'opel': 5000, 'toyota': 7000, 'bmw':10000}
price['mazda'] = 4000 -> #добавится в конце
```
```python
del.price['toyota'] #удаление переменной price
price.clear() #удаление ключей в перменной price
```
- Замена ключей в нескольких словарях
```python
person = {
'first name': 'Jack',
'last name' : 'Brown',
'age': 43,
'hobbies' : ['football', 'singing','photo'],
'children' : ['son':'Michael','daughter':'Pamela']
}
print (person['age'])
hobbies = person ['hobbies']
print(hobbies[2]) #то же == print(person['hobbies'][2])
```
Изменение э-та словаря по индексу `person['hobbies'][0]='basketball'`
- Методы с словарями:
`person.keys()` - получение ключей
`person.values()` - получения значений
`person.items()` - ключи + значений в виде картежа [('ключ','значение'),('ключ','значение')]
### Цикл `for` для dictionaries \
__`.items()`__ - и ключ и значения
```python
for items in dict.items():
print(item) -> ('key1','value1')
('key2','value2')
```
__`.keys()`__ - только ключи
```python
dict = {'key1':'value1','key2':'value2'}
for item in dict.keys():
print(key) -> key1
key2
```
__`.values()`__ - только значения
```python
dict = {'key1':'value1','key2':'value2'}
for item in dict.values():
print(values) -> value1
value2
```

45
docs/python/lists.md Normal file
View File

@ -0,0 +1,45 @@
## Lists []
- Пример листа `list = [1, 'num', 3.33]` *Можно создавать эл-ты разных ТД*
- Длину можно узнать `len()` (выдаст именно ко-во эл-во, не индексы)
- Выбрать по индексу `list[index]` -> выдаст эл-т
- Вырезать по индексу `list[:2]` -> выдаст все выбранные
- __МОЖНО__ менять эл-ты в списке `list[index]='hi'`
- Добавить эл-т в список __`.append()`__, __`.insert()`__:
```python
list.append('new item') # добавить эл-т в конце списки
list.insert(index,'new item') # доб эл-т в нужное место списка
```
- убрать эл-т из списка __`.pop()`__, __`.remove()`__:
```python
list.pop() # удаляет последний эл-т в списке
list.pop(значение) # удаляет по значению - НЕ ВОЗВРАЩАЕТ
deleted = list.pop() = [...]
deleted = list.remove(значение) - удаляет первое попавшееся значение
```
- Сортировка __`.sort()`__, __`.reverse()`__:
```python
list.sort() - НЕ ВОЗВРАЩАЕТ / меняет первоначальную переменную
list.reverse() - с большего к меньшему
```
## Цикл for
- Посл-ти: строки, списки, словари, мн-ва и др. - для перебора используется цикл
```python
list = [1,2,3,4,5]
for number(любое значение) in list:
print(number) -> 1
2
3
4
5
print('Hi') #выдаст столько раз сколько эл-тов в списке
```
- Для подсчета суммы значений в списке
```python
sum = 0
for num in list:
sum = sum + num
print (sum) -> 10
```

26
docs/python/sets.md Normal file
View File

@ -0,0 +1,26 @@
## Sets - множества (){}
- неупоряд. кол-я __*уникальных*__ эл-в `{'item1','item2'}`
- empty set `emprty_set = set()`
- Если взять любой список и привести его к `set()`, то перемещает в неупорядочено
### Методы
- __`.add()`__
```python
set_list.add (777) # добавление нового эл-та , но нельзя добавлять такой же
```
- __`.pop()`__
```python
set_list.pop() # случает удаляет эл-т (возвращает)
```
- __`.remove()`__
```python
set_list.remove(3) # удаление по значению (не возвращает)
```
- __`.discard()`__
отличие от remove - можно ввести значение, которого нет(не будет ошибки)
```python
set_list.discard(43) # удаление по значению
```
- __`.clear()`__
```python
set_list.clear() -> set() # удаляет все значения во множестве
```

43
docs/python/tuple.md Normal file
View File

@ -0,0 +1,43 @@
## Tuples - картеж
- immutable
- Можно добавляь как int, str, так и другие ТД
`tuple = (1,2,3) == tuple = 1,2,3`
- Можно из кусков собрать новый tuple `new_taple = (tuple_1[0], 3, tuple_1[2])`
### Распаковка из tuple
- Распаковка
```python
person_tuple = ('John','Smith','1983')
first_name, last_name, year_of_birth = person_tuple # вывод будет без скобок ()
```
- Сколько раз встречается зад.знач.,в т.ч. в str __`.count`__
```python
t1 = (1,2,5,4,1,6,7)
print(t1.count(1)) -> 2
```
- Вычисление индекса значения __`.index`__
```python
print(t1.index(5)) -> 2 # укажет индекс первого попавшегося
```
- цикл `for` для tuple
```python
tuple = [('a','b'),('c','d'),('e','f')]
for item im tuple:
print (item) -> ('a','b')
('c','d')
('e','f')
```
```python
for let1, let2 in tuple:
print(let1, let2) -> ab
cd
ef
for let1, let2 in tuple:
print(let1) # первые буквы каждого tuple эл-та
print(let2) -> a
c
e
b
d
f
```