![Page 1: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/1.jpg)
Визуализация данных в Python
![Page 2: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/2.jpg)
Варианты библиотек
make easy things easy and hard things possible
complex statistical visualizations
![Page 3: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/3.jpg)
Python Pandas
![Page 4: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/4.jpg)
Figure – поле, область с графиками
Axes – сами графики
![Page 5: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/5.jpg)
Как прочитать данные?Pandas:
import pandas as pd
1. Файл .xlsx (MS Excel):
data = pd.read_excel('test.xlsx')
2. Файл .csv:
data = pd.read_csv('test.csv', sep = ';')
data = data.sort_values(by='Sales')
data = data.sort_values(by='Sales', ascending=False)
![Page 6: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/6.jpg)
Построение графиков
import matplotlib.pyplot as plt
fig, ax = plt.subplots()#1 поле с 1 графиком || plt.figure()
ax.barh(data.Company, data.Sales)
plot – линияscatter – точечный графикbar – столбчатая диаграммаbarh – горизонтальная столбчатая диаграммаboxplot – ящик с усамиfill_between – заливка между 2 линиямиpie – круговая диаграммаhist - гистограммаhexbin – гексогональная 2-d гистограмма
Чтобы напечатать названия всех
столбцов, вызовите print(data.columns)
![Page 7: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/7.jpg)
Название графика и осей. Легендаax.set(title='Продажи за 2017 год',
xlabel = 'Объём продаж, $', ylabel='Компания')
ax.legend().set_visible(False) #скрываем легенду
![Page 8: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/8.jpg)
from matplotlib.ticker import FuncFormatterdef changeMoney(x, pos):
#return '${:1.0f}K'.format(x*1e-3)return '{:1.0f}'.format(x*1e-3)
….formatter = FuncFormatter(changeMoney)ax.xaxis.set_major_formatter(formatter)
![Page 9: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/9.jpg)
Добавление линийavg = data['Sales'].mean()
competitors = data[data.Sales > avg]
ax.axhline(y=len(competitors)-0.5, color='r', label='Average', linestyle='--', linewidth=2) # добавляем линию, отсекая всех, кто набрал больше среднего
![Page 10: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/10.jpg)
fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True, figsize=(7, 4))
Несколько графиков
количество строк
одна подпись для всех осей Yколичество столбцов
размер поля для графиков
ax[0].barh(data.Company, data.Sales)ax[0].set(ylabel='Продавец', xlabel = 'Выручка', xlim = [-10000, 140000])….
ax[1].barh(data.Company, data. Quantity)ax[1].set(xlabel = 'Количество товаров', xlim = [0, 110])
fig.suptitle('Анализ продаж 2017', fontsize=14, fontweight='bold');
![Page 11: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/11.jpg)
Сохранениеfig.savefig('sales.png‘,…)
'eps', 'jpeg', 'jpg', 'pdf','pgf', 'png', 'ps', 'raw', 'rgba', 'svg', 'svgz', 'tif', 'tiff'
![Page 12: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/12.jpg)
![Page 13: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/13.jpg)
Matplotlib vs Seabornkde только в pandas.plot:data.Sales.plot.kde(ax = ax)ax1 = ax.twinx()ax1.hist(data.Sales, bins = 50)
fig, ax = plt.subplots(figsize = (9,4))ax = sns.distplot(data['Sales'], kde=True, rug=True, bins = 10)
+ pandas.plot
![Page 14: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/14.jpg)
Scatter plotimport seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("testChina.csv", sep = ',')
ax = sns.regplot(x = 'Sales', y = 'Quantity', data = data, marker = "x", color = 'r',fit_reg = False)
ax.set(title = “Взаимосвязь объёма продаж и выручки")
[или: ax.set_title(“Взаимосвязь объёма продаж и выручки") ]
![Page 15: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/15.jpg)
Scatter plotfit_reg = False fit_reg = True
![Page 16: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/16.jpg)
data = pd.read_csv("testChina.csv", sep = ',')
ax = sns.regplot(x = 'Sales', y = 'Quantity', data = data, marker = "x", color = 'r',fit_reg = False)
ax.set(title = “Взаимосвязь объёма продаж и выручки")
или
fg = sns.lmplot(x = 'Sales', y = 'Quantity', hue = 'China', data = data, markers = ['o', 'x'],fit_reg = False)
fg.ax.set(title = "Взаимосвязь объёма продаж и выручки")
Scatter plot. 3D
![Page 17: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/17.jpg)
Scatter plot. 3D
![Page 18: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/18.jpg)
lmplotfg = sns.lmplot(x = 'Sales', y = 'Quantity', hue = 'China', data = data)
или
fg = sns.lmplot(x = "Sales", y = 'Quantity', col='China', data=data)
fg.fig.suptitle("Взаимосвязь объёма продаж и выручки")
![Page 19: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/19.jpg)
Возвращаемые значения в SeabornОбычно: Axes.
Для lmplot, factorplot: FacetGrid.
Для jointplot: JointGrid.
Для pairplot: PairGrid.
![Page 20: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/20.jpg)
Boxplot
дл
ин
а_л
еп
естк
ов
https://stackoverflow.com/questions/17725927/boxplots-in-matplotlib-markers-and-outliers
![Page 21: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/21.jpg)
Violinplot
дл
ин
а_л
еп
естк
ов
https://datavizcatalogue.com/methods/violin_plot.html
![Page 22: Визуализация данных в Python - tversu. ruprog.tversu.ru/winter3/plots_in_Python_web.pdf · 2019-12-24 · fig, ax = plt.subplots(nrows=1, ncols=2, sharey=True,](https://reader035.vdocuments.site/reader035/viewer/2022062505/5ee1d793ad6a402d666c9327/html5/thumbnails/22.jpg)
Возможно полезные ссылкиhttp://prog.tversu.ru/winter3.html -- задание и данные.
https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.html -- все возможности matplotlibhttps://matplotlib.org/3.1.1/gallery/index.html -- примеры графиков matplotlib
https://pandas.pydata.org/pandas-docs/stable/api.html#api-dataframe-plotting – справочник по графикам в pandas с использованием Matplotlibhttps://pandas.pydata.org/pandas-docs/stable/visualization.html -- примеры графиков
https://seaborn.pydata.org/api.html -- справочник по возможностям Seabornhttps://seaborn.pydata.org/examples/index.html -- примеры графиков Seaborn
Русскоязычные источники:http://malev.ru/анализ-данных-при-помощи-python-графики-в-pandas/ -- что-то про Matplotlibhttps://habrahabr.ru/company/ods/blog/323210/ -- немного про Seaborn