воскресенье, 21 мая 2023 г.

Vim

 Base

  • hjkl перемещение в разные стороны
  • i режим вставки
  • I добавление в начало строки
  • a режим добавления
  • A добавление в конец строки
  • o добавить строку сразу за текущей
  • O добавить строку перед текущей

  • R писать поверх имеющегося текста
  • r заменить один символ
  • u, :u[ndo] undo
  • CTR-R, :red[o] redo
  • U - отменить изменения в стоке
  • dd вырезать (удалить) строку
  • cc удалить и начать редактирование
  • yy копировать строку
  • p вставить из буфера обмена
  • <n>d удалить n+1 строку
  • <n>y скопировать n+1 строку
  • ESC перейти в режим просмотра
  • DEL, x удалить следующий символ
  • :<n>, <n>G перейти на строку #n
  • gg перейти в самое начало
  • G перейти на последнюю строку
  • % перейти к парной скобке

Как комментировать блок

ctrl+v, <n>j, I# ESC
shift+v, <n>j, :s/^/#/g

Как работать с буферами

:reg
"0p - вставить из нулевого буфера (yanked)
"1p - вставить из 1 буфера (последнее удаленное)

Оперирование внутри блока

ciw - изменить слово, diw - удалить слово, yiw - скопировать слово
сt, - изменить все до запятой, dt, - удалить все до запятой, yt, - скопировать все до запятой
ci{ - изменить все внутри {}, di{ - удалить все в {}, yi{ - скопировать все внутри {}
% переход на парную скобку



Tableau - example

пятница, 19 мая 2023 г.

Git intra

Хорошая статья про устройство git - https://maryrosecook.com/blog/post/git-from-the-inside-out 
Интерактивный тур - https://githowto.com/ru
Книга by Scott Chacon and Ben Straub - https://git-scm.com/book/en/v2

Базовые команды git

git --version

В файле .gitconfig — в нём хранятся глобальные настройки программы
git config --global user.name "My Name" # вводите латиницей и в кавычках
git config --global user.email my@email.com # здесь e-mail 

git config --list # 
вывели в окно командной строки список всех свойств конфига

Создание, отображение, добавление 

# Сначала создаём папку для проекта, назовём её my-projects

mkdir my-project # создали папку my-project в текущей директории 
cd my-project # перешли в созданную папку my-project 
git init # инициализировали git в папке my-project


Создание локального репозитория 

в Git любой файл репозитория находится в одном из четырёх состояний: 
  • неотслеживаемый (англ. untracked), 
  • добавленный в индекс, индексируемый (англ. staged, «выдвинутый на плацдарм»),
  • изменённый (англ. modified), 
  • боевой, на жаргоне разработчиков «коммит» или «закоммиченный» (англ. committed, «брошенный в бой»).

Команды Git, выполняют одну из трёх задач:
  • изменяют состояние файла; 
  • отображают информацию о файле; 
  • показывают разницу между его версиями.

git add название_файла # команда для добавления файлов в индекс Staging Area 
git add --all # добавить все файлы к остлеживанию 

git commit -m "My first commit" # сделали первый коммит git clone [адрес, откуда копируем] [путь до папки, куда копируем] 

git push -u origin master #origin - имя сервера, master - имя ветки, u - связывает локальную ветку с веткой удалённого репозитория. Этот ключ нужен, только если вы публикуете новые ветки.


git pull # получает изменения с удаленного репозитория, Выполнение этой команды может привести к конфликтам, так как все изменения при получении сразу сливаются с вашей веткой. 

.gitignore

# комментарий — эта строка игнорируется 
# игнорировать файлы с расширением 
.pyc, 

# * - любое количество символов (ноль и больше), 
*.pyc 

# НО отслеживать файл main.pyc 
# несмотря на то, что мы игнорируем все .pyc файлы с помощью предыдущего правила 
!main.pyc 

# ? - ноль или один символ 
# Исключить файлы text.txt, test.txt, tet.txt и т.д. 
te?t.txt 

# игнорировать только файл main.py находящийся в корневом каталоге 
# не относится к файлам вида <папка>/main.py 
/main.py 

# игнорировать все файлы в каталоге .idea/ 
.idea/ 

# игнорировать файлы с расширением .txt, только в папке doc, но не в подпапках папки doc doc/*.txt 

# игнорировать все .txt файлы в каталоге doc/ и всех его подкаталогах 
doc/**/*.txt


вторник, 9 мая 2023 г.

Несколько графиков Seaborn через plt.subplots

fig, ax =  plt.subplots(1, 2, figsize=(18, 5))
sns.histplot(data=df, x='seats', kde=True, ax=ax[0])
sns.kdeplot(data=df, x='seats', hue='category', ax=ax[1])
plt.show()

Seaborn - stripplot

stripplot() — ещё один способ отображения категориальных данных. Для каждой категории получаем диаграмму рассеяния. График рекомендуют строить в сочетании с другими, например с violinplot() 

Документация - https://seaborn.pydata.org/generated/seaborn.stripplot.html
tips = sns.load_dataset("tips")
sns.stripplot(data=tips, x="total_bill", y="day", hue="sex")

Seaborn - violinplot

Как и boxplot(), этот график характеризует форму распределения. Необычный внешний вид получается из-за сложения двух графиков плотности распределения. Основное преимущество перед boxplot() — возможность изучить распределение и установить его тип. 

Документация - https://seaborn.pydata.org/generated/seaborn.violinplot.html
df = sns.load_dataset("titanic")
sns.violinplot(x=df["age"])

#sns.violinplot(data=df, x="age", y="class")
#sns.violinplot(data=df, x="class", y="age", hue="alive")


Seaborn - pairplot, scatterplot, relplot

Plot pairwise relationships in a dataset. Документация - https://seaborn.pydata.org/generated/seaborn.pairplot.html
penguins = sns.load_dataset("penguins")
sns.pairplot(penguins)

#sns.pairplot(penguins, hue="species")
#sns.pairplot(penguins, hue="species", diag_kind="hist")
#sns.pairplot(penguins, kind="kde")

g = sns.pairplot(penguins, diag_kind="kde")
g.map_lower(sns.kdeplot, levels=4, color=".2")

Draw a scatter plot with possibility of several semantic groupings. 
Документация - https://seaborn.pydata.org/generated/seaborn.scatterplot.html

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size")
Figure-level interface for drawing relational plots onto a FacetGrid. This function provides access to several different axes-level functions that show the relationship between two variables with semantic mappings of subsets.  
Документация - https://seaborn.pydata.org/generated/seaborn.relplot.html

sns.relplot(data=tips, x="total_bill", y="tip", hue="day", col="time")

График распределения одной величины - distplot

Документация - https://seaborn.pydata.org/generated/seaborn.distplot.html
import seaborn as sns
sport = sns.load_dataset('exercise')
sns.distplot(sport['pulse']) 
distplot устаревшая функция вместо нее вводят
  • https://seaborn.pydata.org/generated/seaborn.histplot.html
  • https://seaborn.pydata.org/generated/seaborn.displot.html - This function provides access to several approaches for visualizing the univariate or bivariate distribution of data, including subsets of data defined by semantic mapping and faceting across multiple subplots. примеры:
penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm")

#sns.histplot(data=penguins, x="flipper_length_mm", bins=30)
#sns.histplot(data=penguins, x="flipper_length_mm", kde=True)
#sns.histplot(data=penguins, x="flipper_length_mm", hue="species")
иллюстрация с использованием hue

Seaborn boxplot - ящик с усами

Помимо осех X,Y добавлено третье измерение через раскраску hue
import seaborn as sns
from numpy import median

sport = sns.load_dataset('exercise')
ax = sns.boxplot(x='kind', y='pulse', hue='diet', data=sport)



Графический смысл диаграммы размаха:



Цветовые палитры в seaborn

В seaborn реализована поддержка цветовых палитр. Доступ к ним получают методом color_palette() (англ. «цветовая палитра»): 
current_palette = sns.color_palette('coolwarm', 20)
print(sns.palplot(current_palette)) 

Документация Choosing color palettes 

https://seaborn.pydata.org/generated/seaborn.set_theme.html
Set aspects of the visual theme for all matplotlib and seaborn plots. By default, seaborn plots will be made with the current values of the matplotlib rcParams. Calling this function with no arguments will activate seaborn’s “default” theme.
https://seaborn.pydata.org/generated/seaborn.axes_style.html
Get the parameters that control the general style of the plots. Calling with no arguments will return the current defaults for the style parameters. Calling with the name of a predefined style will show those parameter values. Use the function as a context manager to temporarily change the style of your plots.
https://seaborn.pydata.org/generated/seaborn.set_style.html
Set the parameters that control the general style of the plots. Call the function with the name of a seaborn style to set the default for all plots. You can also selectively override seaborn’s default parameter values.
Стиль графика задают методом set_style(). Существует пять разных тем: 'darkgrid' — тёмная сетка; 'whitegrid' — белая сетка; 'dark' — тёмный; 'white' — белый; 'ticks' — штриховка. По умолчанию установлена тема 'darkgrid'. Если вам не нужна сетка на графике, подключите тему 'dark', 'white' или 'ticks'. 

https://seaborn.pydata.org/generated/seaborn.plotting_context.html - Get the parameters that control the scaling of plot elements. etc.

matplotlib стили и использование

Посмотреть какие стили доступны в matplotlib
import matplotlib.pyplot as plt
print(plt.style.available) # вызовем разные наборы цветов 
Использовать один из приведенных стилей с помощью контекстного менеджера with
with plt.style.context('seaborn-pastel'):
    plt.bar([10, 20, 30, 40],[3, 9, 18, 7])
Если все графики должны быть оформлены в едином стиле, в начале проекта вызовите метод plt.style.use()
plt.style.use('ggplot') # здесь выбран стиль ggplot
документация Customizing Matplotlib with style sheets and rcParams

Seaborn barplot

Документация по barplot доступна здесь.
Метод barplot() самостоятельно агрегирует данные и по умолчанию считает среднее. Этой опцией управляют параметром estimator.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

flights = sns.load_dataset('flights')

sns.set_style('whitegrid')
ax = sns.barplot(x='year', y='passengers', data=flights, estimator=np.mean) 

plt.show()
display(flights.head())
Вот реализация столбчатой диаграммы через matplotlib для предыдущего примеры
import matplotlib.pyplot as plt
import pandas as pd
tmp = flights.groupby('year')[['passengers']].mean().reset_index()
with plt.style.context('seaborn'):
    plt.bar(tmp['year'], tmp['passengers'])
    plt.show()

Seaborn встроенные датасеты

Посмотреть на список встроенных датасетов можно вызовом get_dataset_names(), загрузить вызовом load_dataset()
import seaborn as sns

display(sns.get_dataset_names())
titanic = sns.load_dataset('titanic')
display(titanic.head())
seaborn.load_dataset

понедельник, 8 мая 2023 г.

Seaborn jointplot

jointplot совмещает графики распраделения двух величин и диаграмму рассеяния scatter
# совместное распределения и график корреляции
sns.set_style('darkgrid')
sns.jointplot(x='age', y='fare', data=titanic) 

#sns.jointplot(x='rating', y='tips', data=taxi, kind='reg', color='#006400')  # плотность распределения и регрессию