Интересен интерактивен визуализатор на данни в средите на Jupyter, който трябва да знаете

Визуализацията е важна част от анализа на данни. Без визуализация бихме имали трудности да обобщим информацията от нашите данни. Въпреки това, има моменти, когато искаме да имаме динамична визуализация, за да улесним дейността си по анализ.

За щастие, Jupyter Notebook има много разширения за визуализация, които можем да използваме, за да създадем интерактивна визуализация от вашия Notebook. Какви са тези разширения и как можете да ги използвате? Нека разгледаме пет интересни разширения за интерактивна визуализация на Jupyter.

1. ipywidgets

Разширенията на Jupyter ipywidgets е интерактивен бележник с HTML Jupyter widgets. Пакетът ви позволява да създадете приспособление за управление на вашите данни чрез интерактивен GUI като плъзгач, квадратчета за отметка, текстово поле и много други. Това е доста полезно, ако искаме да създадем GUI-базирана визуализация на Jupyter Notebook ръчно.

За да започнем, първо трябва да инсталираме пакета с разширения.

pip install ipywidgets

Използвайки ipywidgets, бихме могли да персонализираме приспособлението Jupyter Notebook. Нека разгледаме основните налични джаджи.

from ipywidgets import interact
#Basic ipywidgets interact would generate UI from the function
def f(x):
    return x

Разширенията ipywidgets взаимодействат с основата, за да генерират потребителски интерфейс от функцията. Генерираният потребителски интерфейс ще зависи от типа данни, които ни се предават. Нека се опитаме да предадем целочислени данни.

interact(f, x=10)

Предаването на целочислени стойности ще върне потребителския интерфейс на плъзгача. След това нека използваме булевите данни.

interact(f, x=True)

Булевата стойност ще върне квадратчето за отметка. И накрая, нека използваме стойността на низа.

interact(f, x='hi')

Целият потребителски интерфейс беше страхотен, но как да го приложа към визуализацията? Трябва да създадем нашата функция, която да върне цялата интерактивна визуализация. Нека използваме пакета Seaborn, за да го комбинираме с ipywidgets.

import seaborn as sns
import matplotlib.pyplot as plt
mpg = sns.load_dataset('mpg')
def f(x):
    img = sns.countplot(mpg[mpg['mpg']<x]['origin']) 
    plt.title('Origin Countplot mpg = {}'.format(x))
    return img

Когато преместим плъзгача, ще изпълним функцията за връщане на диаграмата на броя на „произхода“, когато го филтрираме с плъзгача ipywidget. Ако искате да прочетете повече за това какво могат да направят ipywidgets, можете да прочетете всичко тук.

2. Pandas-Профилиране

Pandas-Profiling е проучвателен пакет, който създава интерактивни HTML отчети на нашия Jupyter Notebook. Основният отчет от Pandas-Profiling е показан в GIF по-долу.

Както можем да видим от GIF, произведеният отчет е интерактивен HTML отчет във вашия Jupyter Notebook. Как генерирате това? Нека да го изпробваме с примерни данни.

Първо, трябва да инсталираме пакета Pandas-Profiling.

#Installing via pip
pip install -U pandas-profiling[notebook]
#Enable the widget extension in Jupyter
jupyter nbextension enable --py widgetsnbextension
#or if you prefer via Conda
conda env create -n pandas-profiling
conda activate pandas-profiling
conda install -c conda-forge pandas-profiling
#or if you prefer installing directly from the source
pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
#in any case, if the code raise an error, it probably need permission from user. To do that, add --user in the end of the line.

След като инсталираме пакета, сме готови да генерираме отчета. Нека използваме примерните данни за mpg, които имахме преди.

#Importing the function
from pandas_profiling import ProfileReport
#Generate the report. We would use the mpg dataset as sample, title parameter for naming our report, and explorative parameter set to True for Deeper exploration.
profile = ProfileReport(mpg, title='MPG Pandas Profiling Report', explorative = True)
profile

След известно време отчетът ще се покаже и ще проучите HTML.

Изборът на отчет е показан на изображението по-горе. Можете да изпробвате всички опции за изследване на данните. Ако искате да разгледате пакета по-дълбоко, можете да прочетете предишните ми статии по-долу.





3. ipympl

Jupyter-Matplotlib или ipympl е разширение на Jupyter Notebook, което позволява интерактивно изследване на визуализация на Matplotlib във вашия Jupyter Notebook.

Изследването е просто, но мощно, ако имаме нужда от бърза визуализация с matplotlib. Нека първо опитаме да инсталираме пакета.

pip install ipympl

Когато приключите с инсталирането на пакета, трябва да активирате разширението ipympl във вашия Jupyter Notebook, като използвате следната магическа команда: %matplotlib widget.

Нека опитаме разширението matplotlib с примерни данни.

%matplotlib widget
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
plt.plot(np.sin(np.linspace(0, 20, 100)));

Както можете да видите на изображението по-горе, нашата визуализация в matplotlib се превръща в интерактивна визуализация, където можете да премествате и мащабирате графиката.

Можем да предадем друг вид диаграма на matplotlib с нашия набор от данни. Нека опитаме с нашия предишен набор от данни за mpg.

fig = plt.figure()
plt.scatter(mpg['mpg'], mpg['horsepower'])

Докато визуализацията е базирана на пакета matplotlib, можем да предадем интерактивната джаджа в графиката. Ето защо би работил с друг вид визуализация на matplotlib.

Можете да внедрите други уиджети, използвайки ipympl, които са подобни на ipywidgets; въпреки това смятам, че пакетът ipywidgets покрива много от функциите. Ако се интересувате от джаджите на ipympl, можете да разгледате примера.

4. itables

Ако искате да имате интерактивна таблица с рамка за данни на Pandas, може да искате да инсталирате разширения на пакета itables. Този пакет ще ви позволи да имате лесна възможност за изследване в рамката с данни.

Как активирате това разширение? Нека първо инсталираме пакета.

pip install itables

Когато приключите с инсталирането на пакета, трябва само да стартирате следния код.

from itables import init_notebook_mode
init_notebook_mode(all_interactive=True)

Вашата рамка с данни автоматично ще има интерактивни разширения, подобни на GIF по-горе. Ако искате да покажете само една серия или рамка с данни, можете да използвате следния код.

from itables import show
show(mpg[['mpg', 'name']])

5. ipycanvas

Искате ли да имате интерактивно платно, което можете да играете на своя Jupyter Notebook? Ако е така, тогава трябва да опитате разширението на пакета ipycanvas. Тези разширения ви позволяват да създадете платно с възможност за рисуване във вашия бележник Jupyter със стил на рисуване. Нека първо инсталираме пакета.

pip install ipycanvas orjson

След като инсталираме пакета, нека се опитаме да инициираме платно за ръчно рисуване от „примера за бележник“.

from ipywidgets import Image,ColorPicker, IntSlider, link, AppLayout, HBox, RoughCanvas, hold_canvas
width = 800
height = 800
canvas = RoughCanvas(width=width, height=height)
drawing = False
position = None
shape = []
def on_mouse_down(x, y):
    global drawing
    global position
    global shape
drawing = True
    position = (x, y)
    shape = [position]
def on_mouse_move(x, y):
    global drawing
    global position
    global shape
if not drawing:
        return
with hold_canvas(canvas):
        canvas.stroke_line(position[0], position[1], x, y)
position = (x, y)
shape.append(position)
def on_mouse_up(x, y):
    global drawing
    global position
    global shape
drawing = False
    
    with hold_canvas(canvas):
        canvas.stroke_line(position[0], position[1], x, y)
        canvas.fill_polygon(shape)
shape = []
canvas.on_mouse_down(on_mouse_down)
canvas.on_mouse_move(on_mouse_move)
canvas.on_mouse_up(on_mouse_up)
canvas.stroke_style = '#749cb8'
picker = ColorPicker(description='Color:', value='#749cb8')
link((picker, 'value'), (canvas, 'stroke_style'))
link((picker, 'value'), (canvas, 'fill_style'))
HBox((canvas, picker))

На изображението по-горе си играя с платното, което създадох с горния код. Можете да опитате да щракнете върху платното и да нарисувате нещо интересно.

Ако все пак искате да разгледате какво може да направи ipycanvas, можете да прочетете цялата документация тук.

Заключение

Jupyter Notebook е една от най-използваните IDE от специалисти по данни заради гъвкавостта, която предлага. Дейности като визуализация на данни често се извършват и в бележника. За да помогна с тази дейност, очертавам пет интересни интерактивна визуализация на разширенията на Jupyter. Те са:

  1. ipywidgets
  2. панди-профилиране
  3. ipympl
  4. itables
  5. ipycanvas

Надявам се да помогне!

Посетете ме в моя LinkedInили Twitter.

Ако харесвате моето съдържание и искате да получите по-задълбочени познания относно данните или просто ежедневния живот като учен по данни, моля, помислете дали да не се абонирате за моя бюлетин тук.

Ако не сте абонирани като среден член, моля, помислете дали да не се абонирате чрез моя реферал.