<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Сережа, епт, где дашборд?!</title><generator>teletype.in</generator><description><![CDATA[Кручу-верчу BI]]></description><image><url>https://teletype.in/files/47/47/4747e49e-4fc1-40c5-9215-1fbf0f8e2037.jpeg</url><title>Сережа, епт, где дашборд?!</title><link>https://teletype.in/@python-pro</link></image><link>https://teletype.in/@python-pro?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/python-pro?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/python-pro?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Mon, 13 Apr 2026 15:41:27 GMT</pubDate><lastBuildDate>Mon, 13 Apr 2026 15:41:27 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@python-pro/pyodbc-sqlalchemy-mysql-ntlm-auth-python-code</guid><link>https://teletype.in/@python-pro/pyodbc-sqlalchemy-mysql-ntlm-auth-python-code?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><comments>https://teletype.in/@python-pro/pyodbc-sqlalchemy-mysql-ntlm-auth-python-code?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro#comments</comments><dc:creator>python-pro</dc:creator><title>Python: подключение к MS SQL с использованием библиотеки SQLAlchemy и аутентификации NTLM</title><pubDate>Fri, 29 Dec 2023 14:28:17 GMT</pubDate><description><![CDATA[Для подключения к MS SQL с использованием библиотеки SQLAlchemy и аутентификации NTLM, вы можете воспользоваться библиотекой pyodbc вместе с sqlalchemy и pyodbc:]]></description><content:encoded><![CDATA[
  <p id="OL1p">Для подключения к MS SQL с использованием библиотеки SQLAlchemy и аутентификации NTLM, вы можете воспользоваться библиотекой <code>pyodbc</code> вместе с <code>sqlalchemy</code> и <code>pyodbc</code>:</p>
  <pre id="rpNx">from sqlalchemy import create_engine
from sqlalchemy import MetaData, Table

# Укажите свои параметры подключения
server = &#x27;your_server_name&#x27;
database = &#x27;your_database_name&#x27;
username = &#x27;your_username&#x27;
password = &#x27;your_password&#x27;

# Создайте строку подключения с использованием NTLM аутентификации
connection_string = f&#x27;mssql+pyodbc://{username}:{password}@{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server&amp;authentication=NTLM&#x27;

# Создайте движок SQLAlchemy
engine = create_engine(connection_string, echo=True)

# Создайте метаданные SQLAlchemy
metadata = MetaData()

# Пример выполнения SQL-запроса
# Замените &#x27;your_table_name&#x27; на имя вашей таблицы
your_table = Table(&#x27;your_table_name&#x27;, metadata, autoload_with=engine)

# Ваш SQL-запрос
query = your_table.select()

# Выполнение запроса
result = engine.execute(query)

# Вывод результатов
for row in result:
    print(row)

# Закрытие соединения
engine.dispose()</pre>
  <p id="HY3V">Обратите внимание, что вы должны заменить <code>&#x27;your_server_name&#x27;</code>, <code>&#x27;your_database_name&#x27;</code>, <code>&#x27;your_username&#x27;</code>, и <code>&#x27;your_password&#x27;</code> на свои реальные данные подключения. Также, убедитесь, что у вас установлены библиотеки <code>pyodbc</code>, <code>sqlalchemy</code> и <code>pandas</code>:</p>
  <pre id="gkrp">pip install pyodbc sqlalchemy pandas</pre>
  <h2 id="ZPaT">Аунтентификация без логина и пароля</h2>
  <p id="SqMo">Если вы хотите использовать NTLM аутентификацию без явного указания логина и пароля, вы можете использовать Windows Integrated Authentication. В этом случае, библиотека <code>pyodbc</code> будет использовать учетные данные текущего пользователя Windows. Вот обновленный код:</p>
  <pre id="dXxK">from sqlalchemy import create_engine
from sqlalchemy import MetaData, Table

# Укажите свои параметры подключения
server = &#x27;your_server_name&#x27;
database = &#x27;your_database_name&#x27;

# Создайте строку подключения с использованием Windows Integrated Authentication (NTLM)
connection_string = f&#x27;mssql+pyodbc://{server}/{database}?driver=ODBC+Driver+17+for+SQL+Server&amp;authentication=NTLM&#x27;

# Создайте движок SQLAlchemy
engine = create_engine(connection_string, echo=True)

# Создайте метаданные SQLAlchemy
metadata = MetaData()

# Пример выполнения SQL-запроса
# Замените &#x27;your_table_name&#x27; на имя вашей таблицы
your_table = Table(&#x27;your_table_name&#x27;, metadata, autoload_with=engine)

# Ваш SQL-запрос
query = your_table.select()

# Выполнение запроса
result = engine.execute(query)

# Вывод результатов
for row in result:
    print(row)

# Закрытие соединения
engine.dispose()</pre>
  <p id="FdZt">В этом коде логин и пароль не указаны явно в строке подключения. Вместо этого используется Windows Integrated Authentication (NTLM), и библиотека <code>pyodbc</code> использует учетные данные текущего пользователя Windows для аутентификации. Пожалуйста, замените <code>&#x27;your_server_name&#x27;</code>, <code>&#x27;your_database_name&#x27;</code>, и <code>&#x27;your_table_name&#x27;</code> на свои реальные данные.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python-pro/python-read-data-from-sql-with-chunksize-parquet</guid><link>https://teletype.in/@python-pro/python-read-data-from-sql-with-chunksize-parquet?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><comments>https://teletype.in/@python-pro/python-read-data-from-sql-with-chunksize-parquet?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro#comments</comments><dc:creator>python-pro</dc:creator><title>Как при помощи Python читать таблицу из MS SQL с помощью chunksize</title><pubDate>Fri, 29 Dec 2023 13:27:49 GMT</pubDate><description><![CDATA[Как при помощи Python читать таблицу из MS SQL состоящую из 20 миллионов строк данных не полностью за один запрос, а с помощью chunksize и писать output в один файл parquet.]]></description><content:encoded><![CDATA[
  <blockquote id="Cndd"><em>Как при помощи Python читать таблицу из MS SQL состоящую из 20 миллионов строк данных не полностью за один запрос, а с помощью chunksize и писать output в один файл parquet.</em></blockquote>
  <p id="tlgI">Для выполнения этой задачи вы можете использовать библиотеки <code>pandas</code> для работы с данными и <code>pyodbc</code> для подключения к базе данных MS SQL. Вот пример кода, который демонстрирует, как это можно сделать:</p>
  <p id="VLrZ">Установите необходимые библиотеки:</p>
  <pre id="QjX2">pip install pandas pyodbc pyarrow</pre>
  <p id="3a7Z">Импортируйте библиотеки в вашем скрипте:</p>
  <pre id="ZRKm">import pandas as pd
import pyodbc</pre>
  <p id="A2ev">Установите параметры подключения к вашей базе данных MS SQL:</p>
  <pre id="WIX6">server = &#x27;your_server_name&#x27;
database = &#x27;your_database_name&#x27;
username = &#x27;your_username&#x27;
password = &#x27;your_password&#x27;</pre>
  <p id="CZAE">Установите параметры запроса:</p>
  <pre id="4e03">table_name = &#x27;your_table_name&#x27;
chunksize = 10000  # Размер блока (chunk) для пошагового чтения данных</pre>
  <p id="KEir">Создайте подключение к базе данных и используйте <code>pd.read_sql</code> с параметром <code>chunksize</code> для пошагового чтения данных:</p>
  <pre id="jcB7">connection_string = f&#x27;DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}&#x27;
conn = pyodbc.connect(connection_string)

query = f&#x27;SELECT * FROM {table_name}&#x27;
chunks = pd.read_sql(query, conn, chunksize=chunksize)</pre>
  <p id="ByTy">Используйте цикл для пошаговой обработки и записи данных в файл parquet:</p>
  <pre id="fjJD">output_filename = &#x27;output.parquet&#x27;

for i, chunk in enumerate(chunks):
    if i == 0:
        chunk.to_parquet(output_filename, index=False, engine=&#x27;pyarrow&#x27;)
    else:
        chunk.to_parquet(output_filename, index=False, engine=&#x27;pyarrow&#x27;, mode=&#x27;a&#x27;)</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python-pro/pandas-types-of-data-loading-from-mssql-parquet</guid><link>https://teletype.in/@python-pro/pandas-types-of-data-loading-from-mssql-parquet?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><comments>https://teletype.in/@python-pro/pandas-types-of-data-loading-from-mssql-parquet?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro#comments</comments><dc:creator>python-pro</dc:creator><title>Преобразование типов данных при загрузке данных из MS SQL в Pandas DataFrame и сохранение в Parquet</title><pubDate>Fri, 29 Dec 2023 12:31:18 GMT</pubDate><description><![CDATA[Pandas - мощная библиотека для анализа данных в языке программирования Python. Одной из её ключевых особенностей является работа с DataFrame, табличной структурой данных, которая предоставляет удобный интерфейс для манипуляций с данными. В этой статье мы рассмотрим, как произвести преобразование типов данных при загрузке данных из Microsoft SQL Server в Pandas DataFrame и как сохранить данные в формате Parquet с учетом корректных типов данных.]]></description><content:encoded><![CDATA[
  <p id="HCyV">Pandas - мощная библиотека для анализа данных в языке программирования Python. Одной из её ключевых особенностей является работа с DataFrame, табличной структурой данных, которая предоставляет удобный интерфейс для манипуляций с данными. В этой статье мы рассмотрим, как произвести преобразование типов данных при загрузке данных из Microsoft SQL Server в Pandas DataFrame и как сохранить данные в формате Parquet с учетом корректных типов данных.</p>
  <h2 id="ECzR">Шаг 1: Установка библиотек</h2>
  <p id="jcBd">Перед началом работы убедитесь, что у вас установлены необходимые библиотеки. Если их нет, установите их с помощью следующих команд:</p>
  <pre id="IoEo">pip install pandas
pip install pyodbc
pip install fastparquet</pre>
  <h2 id="WyZJ">Шаг 2: Подключение к MS SQL и загрузка данных в Pandas DataFrame</h2>
  <p id="kd63">Для начала подключимся к базе данных MS SQL Server с использованием библиотеки <code>pyodbc</code>:</p>
  <pre id="KBUt">import pandas as pd
import pyodbc

# Задайте свои параметры подключения
server = &#x27;your_server&#x27;
database = &#x27;your_database&#x27;
username = &#x27;your_username&#x27;
password = &#x27;your_password&#x27;

# Строка подключения
connection_string = f&#x27;DRIVER=ODBC Driver 17 for SQL Server;SERVER={server};DATABASE={database};UID={username};PWD={password}&#x27;

# Установка соединения
conn = pyodbc.connect(connection_string)

# SQL-запрос
sql_query = &#x27;SELECT * FROM your_table&#x27;

# Загрузка данных в DataFrame
df = pd.read_sql(sql_query, conn)</pre>
  <h2 id="2IP6">Шаг 3: Преобразование типов данных</h2>
  <p id="kGaC">После загрузки данных из базы данных MS SQL в DataFrame необходимо убедиться, что типы данных корректны. Для этого воспользуемся методом <code>astype()</code>:</p>
  <pre id="TkcU"># Преобразование типов данных
df[&#x27;DatetimeColumn&#x27;] = pd.to_datetime(df[&#x27;DatetimeColumn&#x27;], format=&#x27;%Y-%m-%d %H:%M:%S&#x27;, errors=&#x27;coerce&#x27;)
df[&#x27;DateColumn&#x27;] = pd.to_datetime(df[&#x27;DateColumn&#x27;], format=&#x27;%Y-%m-%d&#x27;, errors=&#x27;coerce&#x27;).dt.date
df[&#x27;TimeColumn&#x27;] = pd.to_datetime(df[&#x27;TimeColumn&#x27;], format=&#x27;%H:%M:%S&#x27;, errors=&#x27;coerce&#x27;).dt.time
df[&#x27;IntColumn&#x27;] = df[&#x27;IntColumn&#x27;].astype(int)
df[&#x27;FlagColumn&#x27;] = df[&#x27;FlagColumn&#x27;].astype(int)
df[&#x27;FloatColumn&#x27;] = df[&#x27;FloatColumn&#x27;].astype(float)</pre>
  <p id="pZXb">В приведенном выше коде <code>DatetimeColumn</code>, <code>DateColumn</code> и <code>TimeColumn</code> преобразуются в соответствующие типы данных даты и времени. <code>IntColumn</code> преобразуется в целое число, <code>FlagColumn</code> - в целое число 0 или 1, а <code>FloatColumn</code> - в число с плавающей точкой.</p>
  <h2 id="L4bh">Шаг 4: Сохранение в формате Parquet</h2>
  <p id="9fMM">Теперь, когда типы данных корректны, можно сохранить данные в формате Parquet с использованием библиотеки <code>fastparquet</code>:</p>
  <pre id="NP8m"># Задайте путь к файлу Parquet
parquet_path = &#x27;your_file.parquet&#x27;

# Сохранение в Parquet
df.to_parquet(parquet_path, index=False)</pre>
  <p id="SQ8Y">Теперь у вас есть DataFrame с корректными типами данных, загруженный из MS SQL Server, и сохраненный в формате Parquet.</p>
  <p id="Oh8X">Этот процесс обеспечивает правильное представление данных и сохраняет целостность типов при последующей загрузке данных в Pandas DataFrame.</p>
  <h2 id="tc41">Лучшие практики преобразования типов при загрузке данных в pandas</h2>
  <p id="A4g8">Преобразование типов данных при загрузке данных из CSV в DataFrame важно для обеспечения корректности анализа данных и оптимизации использования памяти. Ниже представлены лучшие практики для преобразования типов данных в Pandas DataFrame при чтении данных из CSV файлов:</p>
  <p id="hmUL"><strong>Используйте параметр <code>dtype</code> при чтении данных:</strong>Параметр <code>dtype</code> позволяет явно указать тип данных для каждого столбца. Это может быть особенно полезно при загрузке больших данных, чтобы избежать автоматического определения типов, которое может быть медленным. Пример:</p>
  <pre id="aZBf">dtype_dict = {&#x27;column1&#x27;: &#x27;int32&#x27;, &#x27;column2&#x27;: &#x27;float64&#x27;, &#x27;column3&#x27;: &#x27;str&#x27;}
df = pd.read_csv(&#x27;your_file.csv&#x27;, dtype=dtype_dict)</pre>
  <p id="tDAf"><strong>Используйте параметр <code>parse_dates</code> для дат:</strong></p>
  <p id="SOnc">Если ваши данные содержат столбцы с датами, используйте параметр <code>parse_dates</code> для автоматического преобразования в объекты даты. Пример:</p>
  <pre id="4BVX">date_columns = [&#x27;date_column1&#x27;, &#x27;date_column2&#x27;]
df = pd.read_csv(&#x27;your_file.csv&#x27;, parse_dates=date_columns)</pre>
  <p id="X7dH"><strong>Обрабатывайте пропущенные значения:</strong></p>
  <p id="auUI">Используйте параметр <code>na_values</code> для указания значений, которые следует считать пропущенными. Это важно, чтобы Pandas правильно обрабатывал пропущенные значения и не превращал их в строки. Пример:</p>
  <pre id="NPFf">na_values = [&#x27;-1&#x27;, &#x27;NA&#x27;, &#x27;null&#x27;]
df = pd.read_csv(&#x27;your_file.csv&#x27;, na_values=na_values)</pre>
  <p id="2obT"><strong>Выбирайте наименьший подходящий тип данных:</strong>Выбирайте наименьший подходящий тип данных для каждого столбца, чтобы оптимизировать использование памяти. Например, если столбец содержит целые числа в ограниченном диапазоне, используйте <code>int8</code> или <code>int16</code>, чтобы сэкономить память.</p>
  <p id="azFf"><strong>Оптимизируйте строковые столбцы:</strong>Если столбцы содержат ограниченное количество уникальных значений, рассмотрите возможность использования категориальных данных с помощью <code>astype(&#x27;category&#x27;)</code>. Это снижает потребление памяти и может ускорить операции с данными.</p>
  <pre id="8OWk">df[&#x27;categorical_column&#x27;] = df[&#x27;categorical_column&#x27;].astype(&#x27;category&#x27;)</pre>
  <p id="Tq3K"><strong>Обрабатывайте большие файлы порциями:</strong></p>
  <p id="FeUj">При работе с большими CSV-файлами используйте параметр <code>chunksize</code> для чтения данных порциями. Это может быть полезно, если ваши ресурсы по памяти ограничены.</p>
  <pre id="oLvU">chunk_size = 10000
chunks = pd.read_csv(&#x27;your_file.csv&#x27;, chunksize=chunk_size)
for chunk in chunks:
    # Обработка каждой порции данных</pre>
  <p id="8dAc"><strong>Используйте память для чисел с плавающей точкой:</strong></p>
  <p id="1Ft4">Если столбцы содержат числа с плавающей точкой, рассмотрите возможность использования <code>float32</code> вместо <code>float64</code>. Это уменьшит потребление памяти в два раза.</p>
  <pre id="Mmzy">df[&#x27;float_column&#x27;] = df[&#x27;float_column&#x27;].astype(&#x27;float32&#x27;)</pre>
  <h2 id="oZ3o">Как обрабатывать отдельно пустые значения для строк, для int, для дат, datetime</h2>
  <p id="xFbm">При формировании DataFrame из разных типов столбцов в одной команде с использованием <code>read_csv</code>, можно применить более общий подход к обработке пустых значений для разных типов данных. Воспользуемся параметром <code>converters</code> для более гибкого управления преобразованием данных. </p>
  <p id="XHwS">Пример:</p>
  <pre id="ItLa">import pandas as pd

# Задайте путь к вашему CSV файлу
csv_file_path = &#x27;your_file.csv&#x27;

# Функция для обработки пустых значений для строк (str)
def process_string(value):
    return &#x27;&#x27; if value in (&#x27;&#x27;, &#x27;NA&#x27;, &#x27;null&#x27;) else value

# Функция для обработки пустых значений для целых чисел (int)
def process_int(value):
    return pd.to_numeric(value, errors=&#x27;coerce&#x27;)

# Функция для обработки пустых значений для дат
def process_date(value):
    return pd.to_datetime(value, errors=&#x27;coerce&#x27;)

# Функция для обработки пустых значений для datetime
def process_datetime(value):
    return pd.to_datetime(value, errors=&#x27;coerce&#x27;)

# Задайте словарь с функциями-обработчиками для каждого столбца
column_processors = {
    &#x27;column1&#x27;: process_string,
    &#x27;column2&#x27;: process_string,
    &#x27;column3&#x27;: process_int,
    &#x27;column4&#x27;: process_int,
    &#x27;date_column1&#x27;: process_date,
    &#x27;date_column2&#x27;: process_date,
    &#x27;datetime_column1&#x27;: process_datetime,
    &#x27;datetime_column2&#x27;: process_datetime,
}

# Чтение CSV с применением обработчиков
df = pd.read_csv(csv_file_path, converters=column_processors)</pre>
  <p id="BF28">В данном примере:</p>
  <ul id="jefv">
    <li id="076O">Создаются функции-обработчики (<code>process_string</code>, <code>process_int</code>, <code>process_date</code>, <code>process_datetime</code>), каждая из которых принимает значение и возвращает преобразованное значение, обрабатывая пустые значения по своему усмотрению.</li>
    <li id="OnW9">Создается словарь <code>column_processors</code>, в котором каждому столбцу сопоставляется соответствующая функция-обработчик.</li>
    <li id="spHW">При чтении CSV используется параметр <code>converters</code>, который применяет соответствующий обработчик для каждого столбца.</li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python-pro/10-data-visualization-trends-that-will-be-relevant</guid><link>https://teletype.in/@python-pro/10-data-visualization-trends-that-will-be-relevant?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><comments>https://teletype.in/@python-pro/10-data-visualization-trends-that-will-be-relevant?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro#comments</comments><dc:creator>python-pro</dc:creator><title>10 трендов визуализации данных, которые будут актуальны в 2021 году</title><pubDate>Wed, 10 Feb 2021 06:59:24 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/3d/8f/3d8f0ce9-330a-4fd0-832c-468ebe733f5c.png"></media:content><category>Data Analysis</category><description><![CDATA[<img src="https://www.e-xecutive.ru/uploads/image/src/21885/content_Risunok3.png"></img>Источник: https://www.e-xecutive.ru/management/marketing/1993476-10-trendov-vizualizatsii-dannyh-kotorye-budut-aktualny-v-2021-godu]]></description><content:encoded><![CDATA[
  <p><strong>Источник:</strong> <a href="https://www.e-xecutive.ru/management/marketing/1993476-10-trendov-vizualizatsii-dannyh-kotorye-budut-aktualny-v-2021-godu" target="_blank">https://www.e-xecutive.ru/management/marketing/1993476-10-trendov-vizualizatsii-dannyh-kotorye-budut-aktualny-v-2021-godu</a></p>
  <p>Эти тренды помогут переосмыслить ваши отчеты, планы и презентации, чтобы они стали красивее и доступнее.</p>
  <p>В конце года подводят итоги, а в начале года занимаются планированием. И это вполне логично. Я же хотела бы начать год с рассказа о трендах, которые будут задавать тон в визуализации в 2021 году. Как это ни странно, но в бесконечном мире интернета я не нашла ни одной статьи, где были бы собраны все тренды визуализации. Поэтому решила сделать это самостоятельно и поделиться с вами.</p>
  <p>Итак, 10 основных трендов визуализации с примерами.</p>
  <h2>Тренд 1. Минимализм</h2>
  <p>При разработке графических данных, диаграмм и таблиц важно не перегружать пользователя ненужной информацией. В мире визуализации есть понятие <strong>Data-ink ratio</strong> <em>(коэффициент полезных чернил)</em>. Если вы в своем отчете потратите 75% чернил для украшения и только 25% для отображения полезной информации, то есть большая вероятность, что читатель упустит действительно значимые вещи. Ценность такой визуализации теряется.</p>
  <p>Меньше визуального мусора! Убираем все ненужное – сетку, лишние элементы дизайна, оси, если есть подписи данных. На первый план должны выходить данные, а не форма. Все больше диаграмм появляется именно в таком минималистическом стиле. И это прекрасно!</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21885/content_Risunok3.png" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21886/content_2.png" width="620" />
  </figure>
  <p><em>Источник: Росстат</em></p>
  <h2>Тренд 2. Простая инфографика для визуализации больших массивов данных</h2>
  <p>Читатели не будут долго разбираться в графиках, если глядя на них ничего не понятно. Сложная визуализация – это как лонгриды, которые мало, кто читает до конца. Упрощайте <a href="https://www.e-xecutive.ru/management/practices/1988443-kak-analitika-dobavlyaet-tsennosti-vashemu-produktu" target="_blank">анализ информации</a>: разбивайте данные на несколько графиков, подписывайте основные выводы, расставляйте акценты.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21887/content_3.png" width="620" />
  </figure>
  <p><em>Источник: исследования Яндекса</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21888/content_4.png" width="620" />
  </figure>
  <p><em>Источник: исследования Яндекса</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21889/content_5.png" width="620" />
  </figure>
  <p><em>Источник: Reddit</em></p>
  <h2>Тренд 3. Неяркие цвета, приглушенная цветовая палитра</h2>
  <p>Люди устали не только от лишних элементов на диаграммах, но и от ярких цветов. Слишком много вокруг <a href="https://www.e-xecutive.ru/career/hr-management/1784678-privychki-razdrazhiteli-ili-desyat-prichin-gnevatsya-na-kollegu" target="_blank">раздражителей</a> и информации. Используйте приглушенные оттенки, если хотите, чтобы на ваши диаграммы было приятно смотреть.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21890/content_6.png" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21891/content_7.png" width="620" />
  </figure>
  <p>Любовь к пастельным, мягким и неярким цветам в дизайне появилась еще в прошлом году. И этот тренд не намерен сбавлять обороты.</p>
  <p>Приглушенные цвета – это оттенки, разбавленные белым или черным цветом. Наглядно эту мысль демонстрирует вот этот пример:</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21892/content_8.jpg" width="620" />
  </figure>
  <p><em>Источник: Biecom</em></p>
  <p>Если вы сомневаетесь в своем чувстве цвета, используйте сервисы для подбора гармоничных палитр <em>(Color Hunt, COLOURLovers, Adobe Color)</em>.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21893/content_9.png" width="620" />
  </figure>
  <p><em>Источник: исследования Яндекса</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21894/content_10.png" width="620" />
  </figure>
  <p><em>Паллеты Colorhunt</em></p>
  <h2>Тренд 4. Упрощение легенды</h2>
  <p>Данный тренд относится именно к визуализации. Если можете не использовать легенду как отдельный элемент диаграммы – не используйте. Размещайте подписи в непосредственной близости с рядами данных. При этом цвет шрифта подписей должен соответствовать цвету линий.</p>
  <p>Посмотрите, как эффективно работает данное правило на линейных графиках ниже. И никаких лишних элементов!</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21895/content_11.png" width="620" />
  </figure>
  <p><em>Источник: Ayecapitalist</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21897/content_12.png" width="620" />
  </figure>
  <p><em>Источник: Towardsdatascience</em></p>
  <p>Отличное решение – вынести легенду в заголовок, делая акценты цветом:</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21898/content_13.png" width="620" />
  </figure>
  <p><em>Источник: Economist</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21899/content_14.png" width="620" />
  </figure>
  <p><em>Источник: Тинькоф-журнал</em></p>
  <h2>Тренд 5. Тонкие линии</h2>
  <p>Простые формы и иллюстрации, нарисованные тонкими линиями как будто от руки – еще один тренд 2021 года. Жирным шрифтам и прописным буквам нет места в трендовых отчетах. Используйте полужирное форматирование, которое выглядит более легким.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21900/content_15.png" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21901/content_16.png" width="620" />
  </figure>
  <p><em>Источник: Nytimes</em></p>
  <p>В данном контексте обратите внимание на шрифты light. Они занимают меньше места и не перегружают восприятие текста.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21902/content_17.png" width="620" />
  </figure>
  <h2>Тренд 6. Монохром и легкие градиенты</h2>
  <p>Диаграмма будет выглядеть <a href="https://www.e-xecutive.ru/management/marketing/1859070-devyat-oshibok-pri-ispolzovanii-infografiki-v-prezentatsiyah" target="_blank">более профессиональной</a> (и, следовательно, более достоверной), когда используется только несколько цветов или градиент – градация одного цвета от темного к светлому. При этом для акцента можно добавить более яркий оттенок комплементарного цвета, т.е. наиболее подходящего по сочетанию.</p>
  <p>Все чаще встречается и легкий градиент в более светлый тон основного цвета. Главное – не переусердствовать.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21903/content_18.png" width="620" />
  </figure>
  <p><em>Источник: Habr</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21906/content_19.png" width="419" />
  </figure>
  <p><em>Источник: Lukebeacon</em></p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21907/content_20.jpg" width="292" />
  </figure>
  <h2>Тренд 7. Шрифты с засечками</h2>
  <p>Шрифты с засечками становятся все популярнее. Их используют такие бренды как <strong>New York Times</strong> и <strong>Tiffany</strong>. Текст, набранный шрифтом с засечками, смотрится единым целым и легко читается. Часто такие элегантные шрифты составляют отличную пару сдержанному шрифту без засечек.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21911/content_21.jpg" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21912/content_22.jpg" width="620" />
  </figure>
  <p>В диаграммах и на графиках шрифт с засечками тоже смотрится гармонично. Times New Roman, знакомый нам со школы, навевает легкое чувство ностальгии.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21931/content_22.1.png" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21932/content_22.2.png" width="620" />
  </figure>
  <p><em>Источник: онлайн-школа визуализации Excellent</em></p>
  <h2>Тренд 8. Геометрические фигуры везде</h2>
  <p>В рекламе, в оформлении обложек и упаковок, в бизнес-презентациях все чаще встречаются геометрические фигуры: круги, квадраты, овалы, треугольники. Четкие фигуры легко нарисовать, смотрятся они современно и, что немаловажно, структурировано. В этом контексте графики и диаграммы – чистая геометрия, и, значит, актуальны.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21913/content_23.jpg" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21915/content_24.jpg" width="620" />
  </figure>
  <p><em>Источник: Biecom</em></p>
  <p>Даже в шаблоне резюме есть элементы инфографики.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21918/content_25.png" width="620" />
  </figure>
  <p><em>Больше примеров бесплатных шаблонов для Google Docs можно найти <a href="https://www.superside.com/blog/google-docs-templates" target="_blank">здесь</a></em></p>
  <h2>Тренд 9. Плоские иконки и эмодзи</h2>
  <p>На первый взгляд для бизнеса иконки и эмодзи не очень подходят. Однако, когда надо упростить восприятие информации или добавить эмоций, разделить контент или расставить акценты, без них не обойтись. При использовании иконок важно соблюдать единство типа, цвета и размера.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21919/content_26.jpg" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21920/content_27.jpg" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21921/content_28.jpg" width="620" />
  </figure>
  <p><em>Источник: Canva</em></p>
  <p>Почему бы не использовать иконки и эмодзи в Excel? На круговой диаграмме они смотрятся очень органично. Да и на гистограмме смайлик не воспринимается как нечто чуждое.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21922/content_29.png" width="620" />
  </figure>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21923/content_30.png" width="620" />
  </figure>
  <p><em>Источник: онлайн-школа визуализации Excellent</em></p>
  <h2>Тренд 10. Анимация</h2>
  <p>Все больше набирает тренд применения анимации. И это понятно, так как живые картинки притягивают и удерживают внимание, они очень показательные и интересно смотрятся. Все это решается несложным программированием. Пока сложно представить, как можно использовать анимацию в Excel в полной мере без специальных навыков программирования. Первое, что приходит на ум – срезы, сводные таблицы, формулы, выпадающие списки, дашборды.</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21924/content_31.png" width="620" />
  </figure>
  <p>Еще элементы «анимации» в Excel-отчете можно сделать следующим образом:</p>
  <ol>
    <li>Акцентируем внимание на область, на которую надо обратить внимание, «приглушив» остальную область фигурой с заливкой → подписываем вывод по «открытой» части.</li>
    <li>Следующим пунктом показываем тот же график, но оставляем «не приглушенной» другую область, на которую следует обратить внимание → остальные части «приглушаем» областью с заливкой → пишем новый вывод по «открытой» части графика.</li>
  </ol>
  <p>Например:</p>
  <p>В период 2006 по 2009 год наблюдался стабильный рост выручки в связи с открытием новых магазинов:</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21925/content_32.png" width="620" />
  </figure>
  <p>В период 2010 по 2013 год резкое падение по всем показателям в связи с ростом курса валюты:</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21927/content_33.png" width="620" />
  </figure>
  <p>И второй пример по этой же теме: делаем ярким цветом все элементы одной категории, по которой делаем вывод, а остальное – «приглушенным» тоном → следующим пунктом выделяем ярким элементы следующей категории с выводом, остальное – «приглушенным»:</p>
  <p>Количество заболеваний в цехе 1 с 2005 года пошло на спад после улучшения производственных условий (установка фильтра и снижение температуры среды):</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21928/content_34.png" width="620" />
  </figure>
  <p>Количество заболеваний в цехе 2 с 2005 года осталось в той же тенденции. В данном цехе не было произведено улучшение условий труда. Необходимо запланировать работы в следующий кап.ремонт:</p>
  <figure class="m_custom">
    <img src="https://www.e-xecutive.ru/uploads/image/src/21929/content_35.png" width="620" />
  </figure>
  <p>Такие приемы очень хорошо использовать в презентациях Power Point. При перелистывании слайдов будет появляться эффект анимации.</p>
  <hr />
  <p>Итак, самое время переосмыслить свои отчеты, исходя из представленных трендов. Оставляйте только самое важное, делайте отчеты легкими и воздушными, подбирайте правильные цвета и шрифты, расставляйте акценты, смело добавляйте эмоций.</p>
  <p>Ваши красивые и доступные отчеты делают вас трендовым специалистом, а мир – чуточку красивее и лучше.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python-pro/SumKKTJh7</guid><link>https://teletype.in/@python-pro/SumKKTJh7?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><comments>https://teletype.in/@python-pro/SumKKTJh7?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro#comments</comments><dc:creator>python-pro</dc:creator><title>Без проектирования сложно масштабировать систему</title><pubDate>Mon, 25 May 2020 18:44:38 GMT</pubDate><description><![CDATA[Рассуждения про проектирование системы.]]></description><content:encoded><![CDATA[
  <p>Рассуждения про проектирование системы.</p>
  <h2>Проектирование</h2>
  <p><strong>Проектирование системы</strong> - это когда на старте, до самой разработки, вы рисуете схему взаимодействия всех компонентов системы, описываете принципы функционирования системы, рисуете логические схемы, прорабатываете какие слои нужны в системе, продумываете структуру каталогов и т.д. Причем этот процесс всегда проходит несколько итераций улучшений.</p>
  <p>Постепенно накапливается много компонентов системы, вы начинаете оптимизировать схему, что-то убираете, что-то группируете/объединяете, где-то применяется динамическая схема работы (за счет параметров). Постепенно из сложной запутанной схемы вырастает лаконичное <strong>Решение</strong> на бумаге.</p>
  <p>Если процесс проектирования пропустить, то система/решение может функционировать и масштабироваться за счет энтузиазма разработчиков очень долгое время. Вы будете на ходу поднимать систему после очередного краха, латать дыры в архитектуре хардкодом, плодить дублированный код, хранить одинаковые данные в разных таблицах хранилища и т.д. </p>
  <p>Без проектирования скорость получения первых сверх быстрых результатов воодушевляет, правда через пару лет такой подход приведет к коллапсу развития системы. Даже опытные разработчики будут плутать в построенной системе, подолгу зависая над теми или иными справочниками, над кодом и т.д.</p>
  <h2>Почему игнорируют или пропускают стадию проектирования?</h2>
  <p>По сути, стадия проектирования всегда присутствует при разработке. Варьируется только продолжительность этого этапа и глубина проработки. Если у вас уже есть опыт разработки и есть ряд реализаций, то вы можете из различных кусков собрать новую архитектуру, более качественную и гибкую. Причем вам будет гораздо легче предусмотреть разные ситуации, заложить в систему нужную гибкость для дальнейшего масштабирования. Вы сможете спрогнозировать узкие места системы и предложить оптимальное решение исходя из ваших ресурсов.</p>
  <p>Когда опыта нет, то вы пытаетесь придумать хоть что-то, чтобы закрыть стоящую перед вами задачу. В таких ситуациях 20-ти килограммовая тачка с квадратными колесами кажется идеальным решением для грузчика, которому надо срочно раскидать кучу песка. Да, с большими усилиями, но это возможно.</p>
  <p><strong>Рассмотрим пример с API:</strong></p>
  <p>Например, вам нужно выгрузить данные из API, без какого-либо опыта вы полезете гуглить, найдете какой-то рабочий пример и из-него соберете свое решение задачи. Далее будет расти объем данных, ширина данных (количество полей в выгрузке), будет усложняться обработка данных, появится еще ряд API и т.д. Разработанный инструмент будет требовать все больше и больше вашего времени (на поддержку работоспособности, оптимизацию и т.д.). В какой-то момент вы достигните лимита запросов для API, придется использовать еще одну учетную запись или придется переработать алгоритм получения данных от API. В какой-то момент вы сядите за комп и придумаете как переработать решение, чтобы учесть все полученные шишки. На это уйдет некоторое время - эту стадию можно обозвать Редизайн системы. А дальше придется переписывать код, повторно тестировать систему, тестировать смежные области.</p>
  <p>Если бы у вас был опыт работы с API, то вы наверняка бы сразу предусмотрели инкрементальную выгрузку данных, разбили процесс на подэтапы (tasks), задачи бы объединили в jobs (пакеты обработки данных). Взяли бы какой-то менеджер для запуска задач. На основе запусков сформировали бы ежедневную отчетность, чтобы отслеживать текущие ошибки и видеть узкие места системы (которые потом можно переработать и снизить издержки эксплуатации системы).</p>
  <h2>Проектирование аналитической структуры предприятия</h2>
  <p>Проектировать можно как программу (из каких модулей состоит, как они взаимодействуют, какие классы или функции нужно написать и т.д.), так и аналитическую структуру предприятия.</p>
  <p>Есть управленческий учет, где продумываются количественные показатели для оценки эффективности бизнес-процессов, проектов, работы фирмы, производства и т.д. На основе общепринятых в компании показателей вырабатываются аналитические признаки. Справочники в системе учета приводятся в порядок, проверяется качество занесенных данных в справочники (контроль качества справочников). Это относится зачастую к справочникам контрагентов, товарных справочников и справочников услуг, должна быть выстроена иерархия категорий товаров. Должна быть выстроена четкая структура каналов продаж, введена классификация клиентов, чтобы можно было по этой классификации оценить наиболее прибыльные направления, а также понять где компания теряет деньги.</p>
  <h2>Контроль данных</h2>
  <p>Обязательно закладывайте в проектировании элемент контроля данных. Например, у вас должно быть описано или отображено на схеме, как вы будете автоматически сверять правдивость данных. Например, вы выгрузили данные из системы, сформировали отчеты и отправили руководству. Через час звонок и неприятный разговор. А если бы у вас были заложены механизмы контроля данных, то вам бы пришла отбивка - выявлены расхождения между системой аналитики и отчетом в системе 1С Предприятие.</p>
  <h2>Какие бесплатные инструменты для проектирования есть</h2>
  <p>Я использую очень часто сервис <a href="https://app.diagrams.net/" target="_blank">https://app.diagrams.net/</a> (ранее <a href="https://app.diagrams.net/" target="_blank">https://draw.io</a>). Документы можно сохранять на гугл диск и повторно открывать хоть с работы, хоть из дома.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python-pro/lVhM8_kGwf</guid><link>https://teletype.in/@python-pro/lVhM8_kGwf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro</link><comments>https://teletype.in/@python-pro/lVhM8_kGwf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python-pro#comments</comments><dc:creator>python-pro</dc:creator><title>Аналитика на мусорных данных</title><pubDate>Thu, 21 May 2020 21:44:36 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/42/f9/42f9c61e-bd22-4b35-a560-22b2f9f58b6d.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/71/85/718595c0-f0d5-40b7-a353-8b7c403fbaf2.png"></img>Салют! Это мой первый пост про отчетность компаний.]]></description><content:encoded><![CDATA[
  <p>Салют! Это мой первый пост про отчетность компаний.</p>
  <p>Многие компании задумываются о внедрении различных BI инструментов, потому что руководство хочет видеть красивые отчеты, дашборды, понимать как работает бизнес.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/71/85/718595c0-f0d5-40b7-a353-8b7c403fbaf2.png" width="1080" />
    <figcaption>Что хотелось бы получить при внедрении BI</figcaption>
  </figure>
  <p>Для того, чтобы реализовать эту задачу качественно, нужно правильно выстраивать процессы не обработки данных для BI системы, а бизнес-процессы по вводу данных в учетных системах. Далеко не всегда у бизнеса есть это понимание. Это большая проблема в людях на местах (скорей всего). Сделать хорошо всегда сложно и нужен человек драйвер, который все выстроит грамотно. Возможно даже в одиночку, главное, чтобы специалист был с руками из плеч и была воля руководства наделить этого человека правами творить.</p>
  <p>Если бизнес плохо ведет учет своей деятельности и хочет внедрить BI, то можно ли построить бизнес-аналитику?</p>
  <p>Можно, даже нужно! Сначала может получится очень хорошая аналитика за счет усилий по очистке данных. Различные меппинги, правила для обработки данных. Появится много различных отчетов у менеджмента. Даже выводы будут сделаны верные и BI себя окупит. Но вот дальше путь раздваивается.</p>
  <figure class="m_original">
    <img src="https://teletype.in/files/b1/18/b1189585-46f6-46e8-81ca-3943f11a90d3.png" width="500" />
  </figure>
  <p><strong>Проблема качества данных</strong> - это проблема масштабируемости. Если ваши данные кристально чистые и понятные, то вы меньше времени думаете как сделать правильную модель, как связать данные, как проверять данные, меньше времени тратите на исправление косяков.</p>
  <p>Выдавать правильные и качественные данные - это задача ERP: правильные бизнес-процессы, правильные настройки системы учета, защита от дурака, понятный интерфейс ERP.</p>
  <p><strong>На картинке два пути, но их все же три:</strong></p>
  <ul>
    <li>Пойти к топам и заявить - система говно, отдел такой-то работает несистемно, надо перестроить ведение данных вот так то и так то. За такие действия естественно можно заслужить плохую репутацию, поссориться с коллегами, вас скорей всего могут назначить ответственным за предложенные изменения, а коллеги навставляют палок в колеса. И в завершении вы либо справитесь с войне за качество данных, либо провалите битву со всеми вытекающими.</li>
    <li>Начать строить BI систему без участия в модернизации учета данных. Тут тоже свои последствия - Вы с каждым разом все меньше и меньше будете хотеть смотреть на эту кучу говна из палок. Безусловно, можно делать качественно из мусора, но с большими усилиями. И каждый раз прилагать титанические усилия не к поиску смыслов в данных, а к созданию моделей для аналитических приложений, очищать данные, настраивать правила, меппинги и харкод.</li>
    <li>Строить систему бизнес-аналитики на плохих данных и постепенно втираться в доверие к топам и сеять зерна сомнений в тех или иных подходах. Предлагать свои идеи, когда наберется лимит доверия.</li>
  </ul>
  <p>Вам очень повезло, если у вас есть отдел толковых ребят, которые занимаются качеством данных, правильно проектируют аналитические признаки в системе (атрибуты контрагентов, товаров и т.п.). Все выстроено логично, четко, системно. Но бывают и не очень ситуации ;)</p>
  <p>Первый рассмотренный вариант является самым быстрым и самым рискованным.</p>
  <p>Второй вариант непонятно к чему приведет, скорей всего к продолжительным страданиям.</p>
  <p>Третий вариант компромиссный с точки зрения сберегания своих нервов, но за пару лет разрастется система учета, разрастется система бизнес-аналитики, появится куча отчетов, которые уже не переделать без огромных трудозатрат. Но при этом можно постепенно все больше и больше оказывать влияние на топ-менеджмент по развороту к проблеме качества данных и учету данных.</p>
  <p>Опытным бы я советовал идти по первому пути - так можно попасть в топ менеджмент, проявив инициативу. Правда все зависит от открытости руководства. Если между вами и руководством амбарный замок, то лучше не соваться в эту гавань.</p>
  <p>Без опыта, конечно же второй вариант (у вас скорей всего будет начальник, который будет отвечать за последствия такой стратегии). Просто наслаждайтесь плохим опытом, ведь плохой опыт - тоже опыт. При этом вы вдоволь наэкспериментируетесь на всяких меппингах, мудренной обработке данных.</p>
  <p>Ну а третий вариант я проживаю в данный момент, уже набравшись опыта. Надеюсь, что может моя ситуация вырулит в правильное направление!</p>

]]></content:encoded></item></channel></rss>