<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Блог об аналитике, визуализации данных, data science и BI, заметки с тегом: BI-инструменты</title>
<link>http://test.leftjoin.ru/tags/bi-tools/</link>
<description></description>
<generator>E2 (v3365; Aegea)</generator>

<item>
<title>Обзор дашборда в Superset</title>
<guid isPermaLink="false">134</guid>
<link>http://test.leftjoin.ru/all/superset-bi-guide/</link>
<comments>http://test.leftjoin.ru/all/superset-bi-guide/</comments>
<description>
&lt;p&gt;В сегодняшней статье в рамках &lt;a href="http://test.leftjoin.ru/all/modern-bi-systems/"&gt;большого обзора BI-систем&lt;/a&gt; мы вновь посмотрим на обновленный и улучшенный &lt;a href="https://superset.apache.org"&gt;Apache Superset&lt;/a&gt; — open-source инструмент с множеством опций, которые позволяют пользователям с любым опытом изучать и визуализировать данные, от простых линейных графиков до высокодетализированных геопространственных диаграмм (ух!).&lt;/p&gt;
&lt;p&gt;В видео обзоре мы разберем интерфейс этого BI-инструмента, конфигурацию, настроим отчеты и визуализацию (с дополнительными примерами), поговорим о фишках и сложностях Apache Superset, и построим итоговый дашборд.&lt;br /&gt;
Кстати, &lt;a href="https://superstore-superset.herokuapp.com/superset/dashboard/superstore-old/"&gt;первую версию дашборда&lt;/a&gt; мы сделали еще в прошлом году, но с тех пор вышло много апдейтов и мы построили новый. Так как мы уже показывали вам дашборд в Superset, в видео мы сравним предыдущую версию с новой и обсудим различия.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/N5y-B4-DQEo" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Все аналитики команды Valiotti Analytics оценили дашборд в Superset. В итоге, мы получили следующие средние оценки (1 — худшая оценка, 10 — лучшая):&lt;br /&gt;
Отвечает ли заданным вопросам — &lt;b&gt;8,1&lt;/b&gt;&lt;br /&gt;
Порог входа в инструмент — &lt;b&gt;5,8&lt;/b&gt;&lt;br /&gt;
Функциональность инструмента — &lt;b&gt;7,7&lt;/b&gt;&lt;br /&gt;
Удобство пользования — &lt;b&gt;8,1&lt;/b&gt;&lt;br /&gt;
Соответствие результата макету — &lt;b&gt;8,9&lt;/b&gt;&lt;br /&gt;
Визуальная составляющая — &lt;b&gt;7,3&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Итог: дашборд получает &lt;b&gt;7,7 баллов из 10&lt;/b&gt;. &lt;a href="https://superstore-superset.herokuapp.com/superset/dashboard/superstore/"&gt;Посмотрите на финальный результат и тоже оцените его!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Автор дашборда, член команды Valiotti Analytics — &lt;a href="https://t.me/Blablamc"&gt;&lt;b&gt;Егор Сатюков&lt;/b&gt;&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
</description>
<pubDate>Mon, 16 May 2022 10:20:45 +0300</pubDate>
</item>

<item>
<title>Обзор дашборда в Metabase</title>
<guid isPermaLink="false">116</guid>
<link>http://test.leftjoin.ru/all/metabase-bi-guide/</link>
<comments>http://test.leftjoin.ru/all/metabase-bi-guide/</comments>
<description>
&lt;p&gt;В новом обзоре BI-систем мы посмотрим на &lt;a href="https://www.metabase.com"&gt;Metabase&lt;/a&gt; — open-source инструмент для бизнес-аналитики, в котором можно писать запросы к данным нескольких видов и визуализировать результаты на дашбордах. Ещё Metabase может сам описать ваш датасорс и построить множество разных графиков, а ещё инструмент позволяет создавать «пульсы» благодаря встроенной системе оповещений, которые будет отправлять вам в Slack или на почту уведомления об изменениях в данных.&lt;/p&gt;
&lt;p&gt;В видео говорим про интерфейс BI-инструмента, про виды запросов и визуализаций в Metabase, про подключение датасорсов, про реализацию переменных и фильтров, про сводные таблицы (сделаны очень грамотно!), вёрстку дашборда в системе и публикацию в сети.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/-Rrciw8xuYg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Внутри команды мы оценили дашборд в Metabase и получили следующие средние оценки (1 — худшая оценка, 10 — лучшая):&lt;br /&gt;
Отвечает ли заданным вопросам — 8,6&lt;br /&gt;
Порог входа в инструмент — 6,0&lt;br /&gt;
Функциональность инструмента — 7,2&lt;br /&gt;
Удобство пользования — 7,4&lt;br /&gt;
Соответствие результата макету — 7,0&lt;br /&gt;
Визуальная составляющая — 6,6&lt;/p&gt;
&lt;p&gt;Итог: дашборд получает 7,1 баллов из 10. &lt;a href="http://analyticsuperstore.herokuapp.com/public/dashboard/ca3b98bd-6186-45c0-b205-852733ff1e98"&gt;Посмотрите на полученный результат&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Автор дашборда, член команды Valiotti Analytics — &lt;a href="https://t.me/MariaAvdeeva624"&gt;Мария Авдеева&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
</description>
<pubDate>Wed, 08 Sep 2021 13:22:25 +0300</pubDate>
</item>

<item>
<title>Обзор дашборда в Dash</title>
<guid isPermaLink="false">114</guid>
<link>http://test.leftjoin.ru/all/dash-bi-guide/</link>
<comments>http://test.leftjoin.ru/all/dash-bi-guide/</comments>
<description>
&lt;p class="note"&gt;&lt;a href="http://test.leftjoin.ru/tags/plotly/"&gt;Посмотрите&lt;/a&gt; и другие наши материалы про plotly&lt;/p&gt;
&lt;p&gt;Сегодня публикуем не совсем классический выпуск обзора BI-инструментов — потому что речь пойдёт о &lt;a href="https://dash.plotly.com/"&gt;Dash&lt;/a&gt;, фреймворке для Python от &lt;a href="https://plotly.com/python/"&gt;plotly&lt;/a&gt;. Dash — гибкий инструмент, который предоставляет набор компонентов для работы с HTML и Bootstrap для создания дашбордов с графиками plotly. Дашборд, созданный при помощи Dash — это веб-страница, написанная на Python. Любую диаграмму можно настроить, изменив передаваемые параметры прямо в коде. А работать с самими данными можно любым удобным в Python способом — например, при помощи датафреймов pandas.&lt;/p&gt;
&lt;p&gt;В новом обзоре посмотрим на работу коллбэков и фильтров в Dash, а также на реализацию таблиц и диаграмм дашборда Superstore в plotly и Dash.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/HYDHljU1h7w" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Внутри команды мы оценили дашборд и получили следующие средние оценки (1 — худшая оценка, 10 — лучшая):&lt;br /&gt;
Отвечает ли заданным вопросам — 8,83&lt;br /&gt;
Порог входа в инструмент — 4,83&lt;br /&gt;
Функциональность инструмента — 8,66&lt;br /&gt;
Удобство пользования — 7,83&lt;br /&gt;
Соответствие результата макету — 9,00&lt;br /&gt;
Визуальная составляющая — 8,16&lt;/p&gt;
&lt;p&gt;Итог: дашборд получает 8,05 баллов из 10. &lt;a href="https://superstore-dash.herokuapp.com/"&gt;Посмотрите на полученный результат&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Автор дашборда, член команды Valiotti Analytics — &lt;a href="https://t.me/emazurova"&gt;Елизавета Мазурова&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
</description>
<pubDate>Tue, 03 Aug 2021 13:18:50 +0300</pubDate>
</item>

<item>
<title>Анализируем речь в Python: О чем говорят гости youtube-канала вДудь</title>
<guid isPermaLink="false">111</guid>
<link>http://test.leftjoin.ru/</link>
<comments>http://test.leftjoin.ru/</comments>
<description>
&lt;p&gt;Сегодня при помощи ML мы будем анализировать прямую речь. В качестве данных используем интервью, которые журналист Юрий Дудь берет для своего YouTube-канала.&lt;br /&gt;
Выход практически каждого ролика на канале «вДудь» считается событием, а некоторые из этих релизов даже сопровождаются скандалами из-за неосторожных высказываний его гостей.&lt;br /&gt;
Посмотрим с помощью Python и лемматизации о чем таком интересном рассказывали герои роликов канала «вДудь».&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Парсим тексты субтитров&lt;/b&gt;&lt;br /&gt;
В этом проекте мы будем использовать библиотеки, которые обрабатывают тексты, но сначала нам нужно эти тексты добыть. Импортируем API-интерфейс Python &lt;span class="inline-code"&gt;youtube_transcript_api&lt;/span&gt;, который скачивает субтитры из видео на YouTube.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;import pandas as pd
import numpy as np

from youtube_transcript_api import YouTubeTranscriptApi
import json&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Предобработаем URL видео для скачивания субтитров. Всего мы собрали 100 роликов с интервью. В некоторых из интервью нет подготовленных субтитров. В файле &lt;span class="inline-code"&gt;‘dud.csv’&lt;/span&gt; заранее подготовлен список гостей канала вДудь с ссылками на их интервью.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;def new_url(s):
    return s.replace('watch?v=','').replace('be.com','.be').replace('www.','')

def url_to_id(s):
    return s.partition('be/')[2]

df = pd.read_csv('dud.csv')
df['URL'] = df['URL'].apply(new_url)
df['video_id'] = df['URL'].apply(url_to_id)
df = df.set_index(keys='Гость')&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;У нас теперь есть датафрейм, в котором пока только информация о гостях и ссылка на видео. Но это пока.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-06-01--10.49.04.png" width="638" height="407" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Загрузим в нашу таблицу субтитры интервью. Если субтитры найти не удалось, то выведем на экран имена людей, к интервью с которыми их нет или они отключены (или субтитры есть, но не на русском языке).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;texts = []
no_sub = []
for speaker in df.index:
    video_id = df.loc[speaker,'video_id']
    try:
        data = YouTubeTranscriptApi.get_transcript(video_id, languages=['ru', 'ru'])
        data = ' '.join([words['text'] for words in data])
    except Exception:
        print('Нет Субтитров для: ', speaker)
        no_sub.append(speaker)
        data = &amp;quot;&amp;quot;
    texts.append(data)
df['text'] = texts
df.to_csv('df_dud.csv')&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;У девяти из 100 интервьюируемых субтитров не оказалось и нам вернулся такой текст:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;Нет Субтитров для:  L'one
Нет Субтитров для:  Шнур
Нет Субтитров для:  Ресторатор
Нет Субтитров для:  Амиран
Нет Субтитров для:  Ильич
Нет Субтитров для:  Соболев
Нет Субтитров для:  Иван Дорн
Нет Субтитров для:  Навальный
Нет Субтитров для:  Noize MC&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Анализируем тексты&lt;/b&gt;&lt;br /&gt;
Анализ текстовой информации сложен в той степени, в какой сложен язык, на котором написан текст. Самый популярный способ решения такой аналитической задачи — стемминг. Стеммингом называют процесс нахождения стема — основы слова. Для стемминга используют библиотеку NLTK (Natural Language Toolkit), которая содержит правила образования стемов.&lt;br /&gt;
Этот метод хорошо работает с английскими словами, но у русского языка слишком сложно устроена морфология образования слов, что повышает вероятность ошибки. Стемминг будет хорошим выбором для анализа строк, содержание которых вы примерно представляете себе (например, когда пользователя просят заполнить форму).&lt;br /&gt;
Для нашего кейса лучше выбрать лемматизацию — приведение слова к его словарной форме. Проведя лемматизацию текстовых данных по правилам русского языка мы получим существительные в именительном падеже единственного числа (кошками — кошка), прилагательные в именительном падеже мужского рода (пушистая — пушистый), а глаголы в инфинитиве несовершенного вида (бежит — бежать). В этом проекте мы используем MyStem и Pymorphy. Обе библиотеки представляют собой морфологические анализаторы.&lt;br /&gt;
Кроме того, поскольку при анализе  мы будем использовать алгоритмы машинного обучения, то нам нужно избавиться от слов, которые часто встречаются, но не несут какой-то ценности для анализа. В противном случае они могут повлиять на работу модели. Список таких стоп-слов возьмем из библиотеки &lt;span class="inline-code"&gt;nltk.corpus&lt;/span&gt;.&lt;br /&gt;
Максимально подробно о подготовке текста к анализу мы рассказывали в материале &lt;a href="http://test.leftjoin.ru/all/borderline-text-analysis/" class="nu"&gt;«&lt;u&gt;Python и тексты нового альбома Земфиры&lt;/u&gt;»&lt;/a&gt;. Тут была проведена идентичная работа подготовка текстов, после чего мы посчитали количество уникальных слов (’Unique Words’) и записали, как часто они встречаются в речи собеседников Дудя (‘PPT Unique Words’).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;df['Total Words'] = df['text'].apply(number_words)
df['Unique Words'] = df['text'].apply(set).apply(len)
df['PPT Unique Words'] = df['Unique Words'] / df['Total Words'] * 100
df['PPT Unique Words'] = df['PPT Unique Words'].apply(lambda x: round(x,2))
df.to_csv('df_dud.csv')&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Строим облако слов&lt;/b&gt;&lt;br /&gt;
Автоматизируем построение облака слов для каждого гостя Дудя. Таким образом мы узнаем какие слова встречаются в их речи чаще всего. Для визуализации инсталлируем &lt;span class="inline-code"&gt;wordcloud&lt;/span&gt;, а &lt;span class="inline-code"&gt;word_tokenize&lt;/span&gt; подсчитает количество слов, которые будут встречаться чаще всего.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;import nltk
from wordcloud import WordCloud
import pandas as pd
import matplotlib.pyplot as plt
from nltk import word_tokenize, ngrams

def word_cloud(df, occup=None, general=True):
    if occup:
        df = df[df['Род деятельности'] == occup] 
    if general:
        data_source = zip([occup], [' '.join([el for el in df['Prepared Text']])])
        col_count, row_count = 1, 1
    else:
        data_source = zip([el for el in df.index], df['Prepared Text']) 
        col_count = max(1, df.shape[0] // 3)
        row_count = df.shape[0] // col_count + 1
        
    fig = plt.figure()
    plt.figure(figsize=(10, 10))
    fig.patch.set_facecolor('white')
    plt.subplots_adjust(wspace=0.3, hspace=0.2)
    i = 1
    for name, text in data_source:
        tokens = word_tokenize(text)
        text_raw = &amp;quot; &amp;quot;.join(tokens)
        wordcloud = WordCloud(colormap='PuBu', background_color='white', contour_width=10).generate(text_raw)
        plt.subplot(row_count, col_count, i, label=name,frame_on=True)
        plt.tick_params(labelsize=10)
        plt.imshow(wordcloud)
        plt.axis(&amp;quot;off&amp;quot;)
        plt.title(name,fontdict={'fontsize':12,'color':'grey'},y=1.0)
        plt.tick_params(labelsize=10)
        i += 1
    plt.savefig(f'./word_cloud/{occup}.png', dpi=900)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;У нас получились вот такие облака слов по каждому из гостей программы:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-06-02--18.58.17.png" width="1198" height="678" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Работа с Word2vec&lt;/b&gt;&lt;br /&gt;
С помощью библиотеки &lt;span class="inline-code"&gt;gensim&lt;/span&gt; вызываем модуль, который должен представить слова в наших текстах как векторы.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;import plotly.graph_objects as go
import plotly.figure_factory as ff
from scipy import spatial
import collections
import pymorphy2
import gensim

morph = pymorphy2.MorphAnalyzer()&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для работы модели используем бинарный файл &lt;span class="inline-code"&gt;‘model.bin’&lt;/span&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;model = gensim.models.KeyedVectors.load_word2vec_format('model.bin', binary=True)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Модель &lt;b&gt;Word2Vec&lt;/b&gt; основана на нейронных сетях и позволяет представлять слова в виде векторов, учитывая семантическую составляющую. Ее мы уже использовали в анализе лирики Земфиры. Косинусная мера семантически схожих слов будет стремиться к 1, а  у двух слов, не имеющих ничего общего по смыслу, она близка к 0.&lt;br /&gt;
Напишем функцию, которая будет принимать список слов из наших интервью, распознавать для каждого часть речи, а затем получать и суммировать вектора — так мы сможем находить вектора не для одного слова, а для целых предложений и текстов.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;def get_vector(word_list):
    vector = 0
    for word in word_list:
        pos = morph.parse(word)[0].tag.POS
        if pos == 'INFN':
            pos = 'VERB'
        if pos in ['ADJF', 'PRCL', 'ADVB', 'NPRO']:
            pos = 'NOUN'
        if word and pos:
            try:
                word_pos = word + '_' + pos
                this_vector = model.word_vec(word_pos)
                vector += this_vector
            except KeyError:
                continue
    return vector&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для каждого интервью находим вектор и собираем соответствующий столбец в датафрейм:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;vec_list = []
for word in df['Prepared Text']:
    vec_list.append(get_vector(word.split()))
df['Vector'] = vec_list&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Напишем функцию, который будет подсчитывать N-граммы для каждого гостя:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;def get_top_five_ngrams(text, n):
    counter = collections.Counter()
    bigrams = list(ngrams(text, n))
    counter.update(bigrams)
    return counter.most_common()[:10]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Построим топ N-грамм в соответствии с группой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;top_words = dict.fromkeys(df.index)
for person in df.index:
    text = df.loc[person,'Prepared Text']
    n_gram = get_top_five_ngrams(text.split(), 1)
    n_list = []
    for item in n_gram:
        n_list.append(item[0][0])
    top_words[person] = n_list
ordered_pesrons = df.index
top_2_words = []
for person in ordered_pesrons:
    top_2_words.append(top_words[person])
df['Top bigramms'] = top_2_words&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Напишем функцию, которая будет добавлять самые часто встречающиеся слова в речи интервьюируемого:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;def top_similar(df, occup=None, agg='Person'):
    if occup:
        df = df[df['Род деятельности'] == occup]
    if agg == 'Person':
        top_words_person = dict.fromkeys(df.index)
        for person in df.index:
            vec = df.loc[person, 'Vector']
            words = model.similar_by_vector(vec, topn=10)
            top_words_person[person] = [el[0].split('_')[0] for el in words]
        df_person_words = pd.DataFrame(columns=[agg,'Top Words'])
    elif agg == 'Total':
        top_words_person = {'Total':0}
        vec = df['Vector'].sum()
        words = model.similar_by_vector(vec, topn=10)
        top_words_person['Total'] = [el[0].split('_')[0] for el in words]
        df_person_words = pd.DataFrame(columns=[agg,'Top Words'])
    
    for k,v in top_words_person.items():
        df_person_words = df_person_words.append({agg:k, 'Top Words':v},ignore_index=True)
    df_person_words = df_person_words.set_index(keys=agg) 
    
    return df_person_words&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для дальнейшей работы группируем гостей по цеховой принадлежности. Наверное, можно ожидать, что режиссеры будут обсуждать кино и все, что с ним связано, а музыканты — музыку.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;df_occup = pd.DataFrame(columns=['Occupation', 'Top Words'])
for occup in df['Род деятельности'].unique():
    words = top_similar(df, occup=occup, agg='Total')['Top Words'][0]
    df_occup = df_occup.append({'Occupation':occup, 'Top Words’:words},ignore_index=True)

for i in range(10):
    df_occup[f'Top {i+1} word'] = df_occup['Top Words'].apply(lambda x: x[i])&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;У нас получится новый датафрейм с топом слов для каждой категории гостей (музыкант, политик, актер и тд).&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-06-02--20.55.04.png" width="1104" height="631" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Анализ риторики гостя&lt;/b&gt;&lt;br /&gt;
Используя метод &lt;span class="inline-code"&gt;similar_by_vector&lt;/span&gt; для каждого из видов деятельности интервьюируемых, мы получаем список слов, которые наиболее точно описывают тематику текстов.&lt;br /&gt;
Стоит отметить, что слово «государство» стоит на первом месте не только в интервью политиков и бизнесменов, но и дизайнеров с писателями. Очевидно, что тема разговора у всех профессиональных групп смещена в сторону политики.&lt;br /&gt;
Актёры, кинокритики и музыканты описываются вполне закономерными для их сфер деятельности словами. А вот у фотографов нет ни слова про фотографию или творчество, но есть «работа», «трудоустройство», «существовать» и “семья”.&lt;br /&gt;
Сравним риторику героев, построив box plot для каждой категории с помощью &lt;span class="inline-code"&gt;plotly&lt;/span&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;import plotly.express as px

l = []
for el,ind in zip(df['Род деятельности'].value_counts(), df['Род деятельности'].value_counts().index):
    if el &amp;gt; 1:
        l.append(ind)

df_kpi = df[df['Род деятельности'].isin(l)]
for kpi in ['Total Words', 'Unique Words','PPT Unique Words']:
    buf_df = df_kpi[['Род деятельности',kpi]]
    fig = px.box(df_kpi, 
                 x='Род деятельности',
                 y=kpi,
                )
    fig.show()&lt;/code&gt;&lt;/pre&gt;&lt;iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plotly.com/~Bespalova/3.embed?link=false" height="650" width="100%"&gt;&lt;/iframe&gt;
&lt;p&gt;Наиболее разговорчивыми гостями оказались блогеры — и в среднем, и по медиане они наговорили больше всего слов. И опередили по этому показателю даже писателей. А вот самыми немногословными оказались рэперы, хотя, казалось бы, вот кто должен быть хорош в импровизации.&lt;/p&gt;
&lt;iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plotly.com/~Bespalova/5.embed?link=false" height="650" width="100%"&gt;&lt;/iframe&gt;
&lt;p&gt;Что касается количества уникальных слов, то и тут блогеры значительно ушли вперед. Согласно медианным значениям, тройка лидеров выглядит так — блогер, журналист и писатель. А вот словарный запас рэперов оставляет желать лучшего.&lt;/p&gt;
&lt;iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plotly.com/~Bespalova/1.embed?link=false" height="650" width="100%"&gt;&lt;/iframe&gt;
&lt;p&gt;Если говорить об отношении уникальных слов к общему количеству, то у всех групп гостей примерно одинаковый медианный показатель. Наиболее вариативными оказались музыканты — усы от их ящика показываю наибольший разброс значений.&lt;/p&gt;
</description>
<pubDate>Mon, 07 Jun 2021 11:26:28 +0300</pubDate>
</item>

<item>
<title>Деплой дашборда на виртуальной машине Amazon EC2</title>
<guid isPermaLink="false">107</guid>
<link>http://test.leftjoin.ru/all/deploy-dashboard-ec2/</link>
<comments>http://test.leftjoin.ru/all/deploy-dashboard-ec2/</comments>
<description>
&lt;p&gt;Мы уже рассказывали о том, как развернуть дашборд с помощью сервиса Elastic Beanstalk от Amazon Web Services. В этом материале расскажем как развертывать дашборды на виртуальной машине Amazon EC2.&lt;/p&gt;
&lt;h2&gt;Подготовка&lt;/h2&gt;
&lt;p&gt;Начало работы с платформой AWS и создание сервера мы описали в материале &lt;a href="http://test.leftjoin.ru/all/stavim-clickhouse-na-aws/"&gt;Устанавливаем Clickhouse на AWS&lt;/a&gt;. Проект дашборда был подготовлен в предыдущей заметке &lt;a href="http://test.leftjoin.ru/all/dashboard-python-2/"&gt;Деплой дашборда на AWS Elastic Beanstalk&lt;/a&gt;. Все файлы можно скачать из нашего репозитория на &lt;a href="https://github.com/valiotti/leftjoin/tree/master/dashboard_deployment"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Работа с терминалом&lt;/h2&gt;
&lt;p&gt;Подключитесь к вашему серверу на EC2 через терминал, используя SSH-ключ.&lt;br /&gt;
Из домашней директории копируем архив с необходимыми файлами на сервер командой scp:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;scp -i /home/user/.ssh/ssh_key.pem /home/user/brewery_dashboard.zip ubuntu@api.sample.ru:/home/ubuntu/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Распаковываем архив с помощью команды &lt;span class="inline-code"&gt;unzip&lt;/span&gt;, указав директорию:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;unzip -d /home/ubuntu/brewery_dashboard brewery_dashboard.zip&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После этого в каталоге появится папка &lt;span class="inline-code"&gt;/brewery_dashboard/&lt;/span&gt;, в которой среди прочих будет текстовый файл &lt;span class="inline-code"&gt;requirements.txt&lt;/span&gt;. В нем находятся все библиотеки Python, которые нужны для корректной работы дашборда. Устанавливаем их следующей командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Запускаем дашборд&lt;/h2&gt;
&lt;p&gt;Создаем сервисный файл &lt;span class="inline-code"&gt;brewery.service&lt;/span&gt; в системной папке &lt;span class="inline-code"&gt;/etc/systemd/system&lt;/span&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo touch brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В нем прописываем всю необходимую информацию для деплоя нашего дашборда. Текстовый редактор вызывается следующей командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo nano brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В WorkingDirectory указываем папку, в которой находятся файлы проекта, а в ExecStart команду для запуска:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;[Unit]
Description=Brewery Dashboard
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/brewery_dashboard/
ExecStart=/usr/bin/gunicorn3 --workers 3 --bind 0.0.0.0:8083 application:application&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-04-29--14.21.41.png" width="669" height="130" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Запускаем &lt;span class="inline-code"&gt;brewery.service&lt;/span&gt; следующей командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo systemctl start brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И проверяем успешность запуска:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo systemctl status brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Система должна ответить, что все хорошо:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-04-29--14.24.57.png" width="991" height="257" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь дашборд доступен по публичному адресу сервера с указанием порта . Можно открыть его в браузере или вставить на любой сайт с помощью тега &amp;lt;iframe&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;ifrаme id='igraph' scrolling='no' style='border:none;'seamless='seamless' src='http://54.227.137.142:8083/' height='1100' width='800'&amp;gt;&amp;lt;/ifrаme&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Fri, 30 Apr 2021 14:33:38 +0300</pubDate>
</item>

<item>
<title>Обзор дашборда Yandex DataLens</title>
<guid isPermaLink="false">102</guid>
<link>http://test.leftjoin.ru/all/yandex-datalens-guide/</link>
<comments>http://test.leftjoin.ru/all/yandex-datalens-guide/</comments>
<description>
&lt;p&gt;Два года назад Яндекс выпустил собственный инструмент для визуализации данных — Yandex DataLens, работающий на базе Yandex Cloud. В блоге уже выходил &lt;a href="http://test.leftjoin.ru/all/obzor-yandex-datalens/"&gt;обзор инструмента&lt;/a&gt; — но тогда сервис был на стадии Preview, и за два года функционал инструмента расширили. Сервис тарифицируемый и без привязки платёжного аккаунта поработать в нём не получится, но помимо платного тарифа есть и бесплатный.&lt;/p&gt;
&lt;p class="note"&gt;Подробнее о тарифах Yandex DataLens можно почитать в &lt;a href="https://cloud.yandex.ru/docs/datalens/pricing#sessions"&gt;документации&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;В сегодняшнем обзоре BI-систем мы посмотрим, как зарегистрировать аккаунт в DataLens, подключить датасет и создать дополнительные таблицы на основе SQL-запросов, построить визуализации, связать их с фильтрами и добавить на дашборд согласно &lt;a href="http://test.leftjoin.ru/all/bi-task-canvas/"&gt;макету&lt;/a&gt;, а затем опубликовать результат.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/wKz6rE9n0wY" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Внутри команды мы оценили дашборд в DataLens и получили следующие средние оценки (1 — худшая оценка, 10 — лучшая):&lt;/p&gt;
&lt;p&gt;Отвечает ли заданным вопросам — 7,0&lt;br /&gt;
Порог входа в инструмент — 8,0&lt;br /&gt;
Функциональность инструмента — 7,0&lt;br /&gt;
Удобство пользования — 8,3&lt;br /&gt;
Соответствие результата макету — 7,5&lt;br /&gt;
Визуальная составляющая — 8,5&lt;br /&gt;
Итог: дашборд получает 8 баллов из 10. &lt;a href="https://datalens.yandex/l3ype8oswf00g"&gt;Посмотрите на полученный результат&lt;/a&gt;.&lt;/p&gt;
</description>
<pubDate>Wed, 17 Mar 2021 12:36:34 +0300</pubDate>
</item>

<item>
<title>Как создавать дашборды, используя подход продуктивного мышления</title>
<guid isPermaLink="false">97</guid>
<link>http://test.leftjoin.ru/all/make-dashboards-using-product-thinking-approach/</link>
<comments>http://test.leftjoin.ru/all/make-dashboards-using-product-thinking-approach/</comments>
<description>
&lt;p class="note"&gt;Этот материал — перевод статьи &lt;a href="https://shopify.engineering/make-dashboards-using-product-thinking-approach?utm_campaign=The%20Data%20Science%20Roundup&amp;utm_medium=email&amp;utm_source=Revue%20newsletter" class="nu"&gt;«&lt;u&gt;How to Make Dashboards Using a Product Thinking Approach&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ни для кого не секрет, что передача результатов исследований другим людям — важнейшая часть науки о данных. Один из инструментов, который мы часто используем в Shopify — дашборды. Этот пост — пошаговое руководство по созданию дашбордов, ориентированных на пользователя и результат.&lt;/p&gt;
&lt;p&gt;Люди используют слово «дашборд» для обозначения разных вещей. В этом посте я сужаю своё определение до автоматически обновляемого набора визуализаций данных и бизнес-показателей.&lt;/p&gt;
&lt;p&gt;К сожалению, если вы несерьёзно относитесь к процессу создания дашборда, получится так, что вы вложили много усилий в создание продукта, который не имеет реальной ценности. Дашборд, который никто не использует полезен примерно так же, как барахло из магазинов на диване. Итак, как вы можете убедиться том, что ваш дашборд удовлетворяет запросам пользователя?&lt;/p&gt;
&lt;p&gt;Ключевой момент — продуктовое мышление. Это неотъемлемая часть отдела Data Science в Shopify. Как мы создаём продукты, думая о наших продавцах, так и специалисты по обработке данных создают дашборды, ориентированные на потребности аудитории.&lt;/p&gt;
&lt;h2&gt;Нужен ли мне дашборд?&lt;/h2&gt;
&lt;p&gt;Прежде чем мы погрузимся в создание дашбордов, первое, о чём вы должны спросить себя — подходит ли этот инструмент вам. Есть множество других способов передачи данных, включая длинные отчёты и презентации. Создание и обслуживание дашборда может занять много времени, и вам ни к чему тратить силы без необходимости.&lt;/p&gt;
&lt;p&gt;Вопросы, которые следует задать себе:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Будут ли данные дашборда обновляться динамически?&lt;/li&gt;
&lt;li&gt;Хотите ли вы, чтобы исследование было интерактивным?&lt;/li&gt;
&lt;li&gt;Ваша цель заключается в том, чтобы мониторить что-то и отвечать на вопросы, связанные с данными?&lt;/li&gt;
&lt;li&gt;Нужно ли пользователю возвращаться к этим данным ввиду их ежедневного изменения?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Если на большинство вопросов вы ответили «Да», то дашборд — хороший выбор для решения вашей проблемы.&lt;/p&gt;
&lt;p&gt;Иначе, если ваша цель — призыв пользователя к действию, дашборд — не лучший выбор. Дашборды удобны, потому что они автоматически представляют обновляемые метрики и визуализации. Если вы хотите рассказать историю, чтобы повлиять на аудиторию, вам лучше поработать с историческими статическими данными в отчёте или презентации.&lt;/p&gt;
&lt;h2&gt;1. Поймите проблему и аудиторию&lt;/h2&gt;
&lt;p&gt;После того, как вы приняли решение создать дашборд, вам нужно определить цель и аудиторию. Можете начать с подобной таблицы:&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Аудитория&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Цель&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Команда обработки данных&lt;/td&gt;
&lt;td&gt;Решить, нужно ли отправлять экспериментальную фичу всем нашим продавцам&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Руководство&lt;/td&gt;
&lt;td&gt;Мониторить влияние COVID-19 на продавцов в розничных магазинах&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Продуктовая команда&lt;/td&gt;
&lt;td&gt;Обнаружить изменения в поведении пользователей после внедрения новой фичи&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Может получиться так, что для одной аудитории у вас больше одной цели. Это означает, что вам нужно больше одного дашборда.&lt;/p&gt;
&lt;p&gt;Четко определив свою аудиторию и причину создания дашборда, вам нужно выяснить, какие показатели лучше всего удовлетворяют потребностям группы. В большинстве случаев это неочевидно и может превратиться в долгую беседу с пользователем, и это нормально! Время, потраченное на данном этапе, принесёт плоды позже.&lt;/p&gt;
&lt;p&gt;Хорошие показатели — те, которые тщательно отобраны с учётом поставленных целей. Если ваша цель — отслеживание аномалий, вам необходимо включить широкий спектр метрик и визуализаций с заданными пороговыми значениями. Если вы хотите, чтобы дашборд показывал, насколько успешен ваш продукт, вам нужно подумать о небольшом количестве KPI, которые являются показателями реальной ценности.&lt;/p&gt;
&lt;p&gt;После того, как вы определитесь с показателями и визуализацией данных, составьте приблизительный план того, как они будут представлены: это может быть электронная таблица, или что-то более наглядное — эскиз на доске или в даже ежедневнике. Покажите его целевой группе, прежде чем писать код: важно убедиться, что ваше предложение поможет решить их проблему.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/NewFeatureDashboard.jpg" width="470" height="600" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример макета дашборда. Визуальное представление способствует быстрому согласованию&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь, когда у вас есть план, вы готовы приступить к созданию дашборда.&lt;/p&gt;
&lt;h2&gt;2. Помните о своих пользователях&lt;/h2&gt;
&lt;p&gt;Основная сложность создания дашборда заключается в том, что представление данных должно одновременно точным и понятным вашей аудитории.&lt;/p&gt;
&lt;p&gt;Когда дело доходит до точности и эффективности, вам, вероятно, придётся написать код или запросы для создания показателей или визуализации на основе ваших данных. В Shopify при написании кода мы всегда следуем лучшим методам работы с программным обеспечением.&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Придерживайтесь единых стандартов оформления, чтобы сделать запросы более читабельными&lt;/li&gt;
&lt;li&gt;Оптимизируйте запросы, чтобы сделать их максимально эффективными&lt;/li&gt;
&lt;li&gt;Пользуйтесь системами контроля версий, чтобы отслеживать изменение кода в процессе разработки&lt;/li&gt;
&lt;li&gt;Получите обратную связь по дашборду для обмена контекстом&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Способ представления данных напрямую влияет на понимание данных пользователем.&lt;/p&gt;
&lt;h2&gt;Используйте макет, чтобы сосредоточить внимание пользователей&lt;/h2&gt;
&lt;p&gt;Как и на первой полосе газеты, вашим пользователям нужно узнать самую важную информацию в первые несколько секунд. Один из способов сделать это — структурировать дашборд в виде перевернутой пирамиды, у которой вверху самые «сочные» заголовки, в середине — важные детали, а внизу — общая, но не менее важная справочная информация.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/InvertedPyramid.jpg" width="732" height="600" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Перевернутая пирамида —  пример организации иерархии информации, которую вы отражаете на дашборде&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Не забудьте использовать исходные цели из первого этапа при формировании иерархии.&lt;/p&gt;
&lt;p&gt;Делайте макет логичным и простым. Провожайте взгляд пользователя по странице, используя последовательную визуальную иерархию заголовков и разделов. Сгруппируйте вместе связанные показатели, чтобы их было легко найти.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/VisualHierarchy.jpg" width="768" height="529" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Визуальная иерархия, группировка разделов и свободное пространство делают дашборд удобным для чтения&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Не бойтесь добавлять свободное пространство — оно даёт пользователям передышку улучшает понимание информации.&lt;/p&gt;
&lt;h2&gt;Оставляйте только целевой контент&lt;/h2&gt;
&lt;p&gt;Визуализации, которые вы выбираете для дашборда, могут сделать его лучше или навредить. По этому поводу существует множество ресурсов, поэтому я не буду вдаваться в подробности, но стоит ознакомиться с теорией и поэкспериментировать с тем, что лучше всего подходит для вашей ситуации.&lt;/p&gt;
&lt;p&gt;Будьте смелыми и удалите все визуализации или KPI, не имеющие прямого отношения к вашим целям. Лишние подробности скрывают важные факты под беспорядком. Если вам все равно кажется, что они нужны, подумайте о создании отдельного дашборда для вторичного анализа.&lt;/p&gt;
&lt;h2&gt;Убедитесь, что ваш дашборд включает бизнес-контекст и контекст данных&lt;/h2&gt;
&lt;p&gt;Обеспечьте достаточный бизнес-контекст, чтобы кто-то, открывший ваш дашборд, мог сразу получить ответы на такие вопросы:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Почему существует этот дашборд&lt;/li&gt;
&lt;li&gt;Для кого он создан&lt;/li&gt;
&lt;li&gt;Когда он был построен и когда он перестанет быть актуальным&lt;/li&gt;
&lt;li&gt;Какие функции он реализует&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Контекст данных тоже способен сориентировать пользователя и задать базовый уровень для показателей на дашборде. Например, вместо того, чтобы просто показывать число новых пользователей за неделю, добавьте стрелку, показывающую направление и процентное изменение с того же времени на прошлой неделе.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/StatisticsDemonstratingValueWithContext.jpg" width="768" height="399" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Статистика справа лучше, чем слева, потому что преподносит контекст.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Контекст можно предоставить и другим путём — например, наладив сегментацию или фильтрацию данных. Различные сегменты могут давать результаты с совершенно противоположными значениями.&lt;/p&gt;
&lt;h2&gt;Перед публикацией подумайте об актуальности данных&lt;/h2&gt;
&lt;p&gt;Свежесть дашборда зависит от актуальности приведённых данных, поэтому подумайте о том, как часто обновляется информация. Перед отправкой лучше всего получить как минимум два технических обзора и одобрение предполагаемых пользователей. В конце концов, если они не понимают дашборд или не видят в нём ценности, они не будут им пользоваться.&lt;/p&gt;
&lt;h2&gt;3. Поддержка&lt;/h2&gt;
&lt;p&gt;Предположим, вы приложили много усилий, чтобы понять проблему и аудиторию, и создали лучший дашборд на свете. Однако важно помнить, что дашборд — это прежде всего инструмент, и важно убедиться, что он используется и приносит пользу.&lt;/p&gt;
&lt;h2&gt;«Продавайте» дашборд&lt;/h2&gt;
&lt;p&gt;Вы должны распространить информацию и убедиться, что дашборд попал в нужные руки. То, как вы решите продвигать свой инструмент, зависит от аудитории и команды, и хорошо бы подумать о том, как его запустить и сделать доступным для поиска в долгосрочной перспективе.&lt;/p&gt;
&lt;p&gt;Перед запуском подумайте, как вы можете представить всем вашу работу. У вас будет только один шанс сделать это, поэтому действовать надо осознанно. Например, вы можете подготовить сопроводительное руководство по использованию дашборда в виде короткого пошагового видео.&lt;/p&gt;
&lt;p&gt;В долгосрочной перспективе убедитесь, что после запуска дашборд легко найти каждому, кто может в нём нуждаться. Можно разместить его на каких-нибудь внутренних порталах и использовать заголовки и теги, адаптированные к общим условиям поиска. Не бойтесь кричать о своем дашборде в подходящие моменты.&lt;/p&gt;
&lt;h2&gt;Используйте и улучшайте&lt;/h2&gt;
&lt;p&gt;Вернитесь к первоначальным целям и подумайте, как их достичь. Например, если задача дашборда — понять, стоит ли внедрять новую фичу, будьте готовы в момент принятия решения поделиться с коллегами своим мнением на основе данных дашборда.&lt;/p&gt;
&lt;p&gt;Отслеживайте использование дашборда, чтобы узнать, как часто люди делятся им или цитируют его. Так вы получите полное представление о том, какое влияние сумели оказать.&lt;/p&gt;
&lt;p&gt;Если дашборд не дал желаемого результата, выясните, что пошло не так. Есть ли что-то, что вы могли бы изменить, чтобы сделать его полезнее? Используйте это исследование, чтобы улучшить следующий дашборд.&lt;/p&gt;
&lt;h2&gt;Поддерживайте&lt;/h2&gt;
&lt;p&gt;Наконец, как и в случае с любой информационной системой, без надлежащего обслуживания дашборд придёт в негодность. Назначьте специалиста по данным или группу специалистов, которые ответят на вопросы или исправят возникшие проблемы.&lt;/p&gt;
&lt;h2&gt;Ключевые выводы&lt;/h2&gt;
&lt;p class="note"&gt;Посмотрите и другие наши переводы — &lt;a href="http://test.leftjoin.ru/all/10-rules-for-better-dashboard-design/" class="nu"&gt;«&lt;u&gt;10 правил для совершенного дизайна дашбордов&lt;/u&gt;»&lt;/a&gt; и &lt;a href="http://test.leftjoin.ru/all/guide-to-designing-tables/" class="nu"&gt;«&lt;u&gt;Полное руководство по созданию таблиц&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Теперь вы знаете, как разбить процесс создание дашборда с помощью продуктового мышления. Резюмируя, вы можете использовать продуктовый подход к созданию впечатляющего дашборда, выполнив следующие действия:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Понять проблему и аудиторию, спроектировать дашборд, который хорошо справляется с одной задачей для чёткого круга пользователей&lt;/li&gt;
&lt;li&gt;Учесть интересы пользователей, чтобы он был точным и простым для понимания&lt;/li&gt;
&lt;li&gt;Поддерживать полученный результат, продвигая и улучшая его в дальнейшем&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Выполнив эти три шага, вы создадите дашборд, который будет в центре внимания вашей аудитории.&lt;/p&gt;
</description>
<pubDate>Fri, 19 Feb 2021 17:44:12 +0300</pubDate>
</item>

<item>
<title>Обзор Looker</title>
<guid isPermaLink="false">96</guid>
<link>http://test.leftjoin.ru/all/looker-bi/</link>
<comments>http://test.leftjoin.ru/all/looker-bi/</comments>
<description>
&lt;p&gt;Looker — BI-инструмент класса self-service. Это подразумевает, что все отчёты и быструю аналитику пользователь делает самостоятельно без привлечения специалиста в области данных (последний заранее настраивает необходимые модели данных).&lt;/p&gt;
&lt;p&gt;Looker особенно популярен в США: в 2019 году Google купил стартап за $2,6 млрд. Тем не менее, далеко не каждый российский аналитик с ним знаком. В рунете ещё не было обзора на Looker, так что заложим фундамент для последующих публикаций.&lt;/p&gt;
&lt;p&gt;В сегодняшнем обзоре BI-систем мы изучим интерфейс Looker, погрузимся в терминологию инструмента, взглянем на готовые приложения в Marketplace, разберёмся с построением Look ML моделей и посмотрим на итоговый дашборд по датасету SuperStore.&lt;/p&gt;
&lt;p class="note"&gt;Подробнее об инструменте можно почитать в материале &lt;a href="http://test.leftjoin.ru/all/looker-overview/" class="nu"&gt;«&lt;u&gt;Обзор Looker&lt;/u&gt;»&lt;/a&gt;&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/cSJDtLKN-Hg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2&gt;Публикация дашборда&lt;/h2&gt;
&lt;p class="note"&gt;При публикации дашборда таким методом он может некорректно отображаться в браузерах Safari и Internet Explorer&lt;/p&gt;
&lt;p&gt;Для публикации мы использовали подход, описанный в &lt;a href="https://docs.looker.com/reference/embedding/sso-embed"&gt;документации Looker&lt;/a&gt;. Генерация ссылки происходит как в &lt;a href="https://github.com/looker/looker_embed_sso_examples/blob/master/python_example.py"&gt;примере с GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Предварительно выполняем создание нового пользователя в настройках админ-панели Looker с соответствующими просмотру дашборда доступами, чтобы любой незарегистрированной пользователь мог войти под этой учётной записью в одной сессии. Для вывода дашборда на веб-страницу используется фреймворк Flask, а сама сгенерированная ссылка вставляется как источник в тег iframe в html-файле. Весь код деплоим на Heroku, чтобы иметь постоянный URL для доступа к дашборду.&lt;/p&gt;
&lt;p&gt;Так как ссылка для SSO генерируется для одной сессии, нужно настроить Heroku Scheduler и прописать выполнение &lt;a href="https://gist.github.com/mattheworiordan/f052b7693aacd025f025537418fa5708"&gt;скрипта такого вида&lt;/a&gt; соответственно длине одной сессии. Например, если сессия длится 10 минут, то и выполнение должно происходить каждые 10 минут.&lt;/p&gt;
&lt;h2&gt;Оценки&lt;/h2&gt;
&lt;p&gt;Внутри команды мы оценили дашборд и получили следующие средние оценки (1 — худшая оценка, 10 — лучшая):&lt;br /&gt;
1) Отвечает ли заданным вопросам — 8,8&lt;br /&gt;
2) Порог входа в инструмент — 7&lt;br /&gt;
3) Функциональность инструмента — 7,4&lt;br /&gt;
4) Удобство пользования — 7,2&lt;br /&gt;
5) Соответствие результата макету — 7,8&lt;br /&gt;
6) Визуальная составляющая — 8,6&lt;br /&gt;
Итог: дашборд в Looker получает 7,8 баллов из 10.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://valiotti-analytics-looker.herokuapp.com/"&gt;Посмотрите на полученный результат&lt;/a&gt;.&lt;/p&gt;
</description>
<pubDate>Wed, 17 Feb 2021 15:41:51 +0300</pubDate>
</item>

<item>
<title>Radial pie в Tableau</title>
<guid isPermaLink="false">91</guid>
<link>http://test.leftjoin.ru/all/radial-pie-v-tableau/</link>
<comments>http://test.leftjoin.ru/all/radial-pie-v-tableau/</comments>
<description>
&lt;p&gt;Как-то раз на просторах YouTube мы нашли вот такое видео с гайдом по Radial Pie в Tableau:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/w6qEG7AyDYo" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Нам очень понравилась реализация — диаграмма сильно напоминает кольца активности Apple Watch. Но, к сожалению, по задумке графика кольца останавливаются на 270 градусах. Показываем, как сделать максимально приближенную к кольцам активности реализацию.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/rings.png" width="476" height="459" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Кольца активности в Apple Watch&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Подготовка данных&lt;/h2&gt;
&lt;p class="note"&gt;Данная визуализация является весьма спорной в контексте бизнес-дашбордов&lt;/p&gt;
&lt;p&gt;Загрузим датасорс в Tableau. Наши кольца — это круги из 360 точек, и для каждой нам нужно своё наблюдение. Это легко реализовать при помощи Bins: сначала перетянем файл под поле с этим же файлом, чтобы объединить датасет с самим собой. В результате датасет должен «удвоиться» и появится новое поле с наименованием файла.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-01-21--16.25.48.png" width="507" height="277" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Создадим новое вычисляемое поле и назовем его Path.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/2-20.png" width="496" height="129" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Затем перейдём на график. Кликнем правой кнопкой мыши по Path из раздела Measures и создадим из этого поля Bins. Size of bins установим на единицу:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/4-11.png" width="541" height="247" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Создадим новое вычисляемое поле Index:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/5-11.png" width="292" height="133" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;И поле Percentage, которое отобразит, насколько выполнены цели. Если достижение по цели будет больше самой цели, мы отобразим 1, чтобы не появлялись значения больше единицы.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/6-11.png" width="469" height="122" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь создаём следующие меры:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/7-6.png" width="258" height="111" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;wc_start — мера начальной координаты каждого кольца. Она считается по полю Order, соответственно, у Stand Order равен 1, а значит начинаться это кольцо будет раньше всех, в точке 1 по OY. У кольца Exercise Order равен 2, оно будет в середине. У Move Order равен 3 — это кольцо будет внешним и начнётся в точке 3.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/8-7.png" width="259" height="116" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/9-7.png" width="262" height="95" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;percentage_label — мера для Label, в которой записано процентное отношение достижения по цели к самой цели:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/9.1.png" width="293" height="118" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Y2 — вспомогательная мера для начальных точек колец:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/14-3.png" width="253" height="100" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Наконец, финальные поля X и Y. Если значение меньше 360, мы описываем при помощи синуса внутреннюю линию кольца, если больше — то внешнюю линию, иначе — острие, на котором кончается кольцо. Формула вычисления Y аналогична X, но считаем не синус, а косинус.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/10-7.png" width="562" height="215" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/11-6.png" width="575" height="234" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Визуализация&lt;/h2&gt;
&lt;p&gt;Измерение Path (bin) перетянем в поле Detail, X — в Columns, а Y — в Rows. X и Y должны вычисляться при помощи Path:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/12-4.png" width="631" height="388" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Тип графика сменим с Automatic на Polygon и перетянем меру Index в поле Path. Поле Description перетягиваем в Color.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/13-4.png" width="818" height="734" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Меру Y2 тоже перетягиваем в Rows и устанавливаем для оси Dual Axis. Из All в Marks необходимо удалить Measure Names. Правой кнопкой мыши кликаем на ОY и синхронизируем оси:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-01-21--15.07.33.png" width="221" height="185" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Для Y2 устанавливаем тип Circle и корректируем размер:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/123.png" width="949" height="462" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Работа над оформлением&lt;/h2&gt;
&lt;p&gt;В Tableau есть возможность самому подобрать нужную гамму. Для жмём на Colors, затем на Edit colors, выбираем нужное поле и указываем цвет. Для гаммы колец из WatchOS мы подобрали такие цвета:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Красный: rgb(229, 54, 83)&lt;/li&gt;
&lt;li&gt;Зелёный: rgb(186, 252, 79)&lt;/li&gt;
&lt;li&gt;Синий: rgb(117, 229, 228)&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-01-21--15.11.25.png" width="391" height="251" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;В Label Y2 перетягиваем поля Description и percentage_label. Устанавливаем выравнивание, Description выделяем жирным цветом, ставим галочку в Options у поля Allow labels to overlap other marks, чтобы Label был виден:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-01-21--15.14.59.png" width="498" height="404" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Скрываем все линии, границы и индикатор, заливаем фон чёрным цветом. Результат — такая диаграмма:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-01-21--15.17.58.png" width="670" height="678" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Книга и таблица из примера доступны в &lt;a href="https://github.com/valiotti/leftjoin/tree/master/active_rings_tableau"&gt;нашем репозитории&lt;/a&gt; на GitHub.&lt;/p&gt;
</description>
<pubDate>Thu, 21 Jan 2021 18:18:55 +0300</pubDate>
</item>

<item>
<title>Обзор дашборда в Excel</title>
<guid isPermaLink="false">88</guid>
<link>http://test.leftjoin.ru/all/excel-bi-guide/</link>
<comments>http://test.leftjoin.ru/all/excel-bi-guide/</comments>
<description>
&lt;p&gt;На Excel я собаку съел: проработав много лет аналитиком, при помощи этого инструмента я автоматизировал маркетинговую отчетность, рассчитывал всевозможные репорты и рекламную эффективность, писал макросы, а однажды даже автоматизировал подключение MS Excel к базе данных Oracle через TextBox, в котором был записан текст запроса: получилась собственная SQL-консоль вроде Redash.&lt;/p&gt;
&lt;p&gt;В сегодняшнем видео на примере датасета SuperStore я покажу, что Excel — не просто калькулятор строк и столбцов, но и мощнейший аналитический инструмент, сопоставимый с промышленными BI-системами.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/rxu8jmsvw98" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Внутри команды мы оценили дашборд и получили следующие средние оценки (1 — худшая оценка, 10 — лучшая):&lt;/p&gt;
&lt;p&gt;Отвечает ли заданным вопросам — 8,4&lt;br /&gt;
Порог входа в инструмент — 7,0&lt;br /&gt;
Функциональность инструмента — 8,0&lt;br /&gt;
Удобство пользования — 6,0&lt;br /&gt;
Соответствие результата макету — 8,4&lt;br /&gt;
Визуальная составляющая — 7,4&lt;/p&gt;
&lt;p&gt;Итог: дашборд в Excel получает 7,5 баллов из 10. &lt;a href="https://github.com/valiotti/leftjoin/blob/master/Superstore-Dashboard.xlsm"&gt;Посмотрите&lt;/a&gt; на полученный результат.&lt;/p&gt;
</description>
<pubDate>Tue, 29 Dec 2020 15:10:17 +0300</pubDate>
</item>


</channel>
</rss>