From de2348b7e44d774877261b0f885f4430e8f02d5d Mon Sep 17 00:00:00 2001 From: Yesen Date: Thu, 12 Oct 2023 21:32:13 +0300 Subject: [PATCH] add new md files --- docs/DataScience/EDA.md | 277 ++++++++++++++++++++++ docs/python/README.md | 0 docs/python/bibl/numpy.md | 0 docs/python/bibl/pandas.md | 0 docs/python/defolt_python.md | 438 +++++++++++++++++++++++++++++++++++ docs/python/dictionaries.md | 53 +++++ docs/python/lists.md | 45 ++++ docs/python/sets.md | 26 +++ docs/python/tuple.md | 43 ++++ 9 files changed, 882 insertions(+) create mode 100644 docs/DataScience/EDA.md create mode 100644 docs/python/README.md create mode 100644 docs/python/bibl/numpy.md create mode 100644 docs/python/bibl/pandas.md create mode 100644 docs/python/defolt_python.md create mode 100644 docs/python/dictionaries.md create mode 100644 docs/python/lists.md create mode 100644 docs/python/sets.md create mode 100644 docs/python/tuple.md diff --git a/docs/DataScience/EDA.md b/docs/DataScience/EDA.md new file mode 100644 index 0000000..49f8575 --- /dev/null +++ b/docs/DataScience/EDA.md @@ -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() +``` \ No newline at end of file diff --git a/docs/python/README.md b/docs/python/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/python/bibl/numpy.md b/docs/python/bibl/numpy.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/python/bibl/pandas.md b/docs/python/bibl/pandas.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/python/defolt_python.md b/docs/python/defolt_python.md new file mode 100644 index 0000000..eff31e0 --- /dev/null +++ b/docs/python/defolt_python.md @@ -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 + +``` \ No newline at end of file diff --git a/docs/python/dictionaries.md b/docs/python/dictionaries.md new file mode 100644 index 0000000..90bfda5 --- /dev/null +++ b/docs/python/dictionaries.md @@ -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 +``` \ No newline at end of file diff --git a/docs/python/lists.md b/docs/python/lists.md new file mode 100644 index 0000000..df6716f --- /dev/null +++ b/docs/python/lists.md @@ -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 +``` \ No newline at end of file diff --git a/docs/python/sets.md b/docs/python/sets.md new file mode 100644 index 0000000..15585fa --- /dev/null +++ b/docs/python/sets.md @@ -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() # удаляет все значения во множестве +``` \ No newline at end of file diff --git a/docs/python/tuple.md b/docs/python/tuple.md new file mode 100644 index 0000000..aa0bb25 --- /dev/null +++ b/docs/python/tuple.md @@ -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 +``` \ No newline at end of file