Apache superset: урок 4

Немного освоились с инструментом визуализации данных, время попробовать что-то интересное, то, что в Экселе сделать будет сложновато.

Дополнительные инструменты нам становятся нужны на больших объемах данных, скажем на 1,5 миллионах строк в файле.

Описываю пошагово:

Средствами Python соберем Датафрейм такого размера из трех выгрузок:

import pandas as pd
from sqlalchemy import create_engine

df1 = pd.read_excel('../Totals/Upload1.xlsx')
df2 = pd.read_excel('../Totals/Upload2.xlsx')
df3 = pd.read_excel('../Totals/Upload3.xlsx')

##С 4 выгрузкой приходится поколдовать

df4 = pd.read_csv('../Totals/Upload4.csv', header = 0, sep=';')
df4['Value'] = df4['Value'].str.replace(',','.')
df4.Value = pd.to_numeric(df4['Value'])

## Конкатенируем все 4 датафрейма
df_total = pd.concat([df1, df2, df3,df4], ignore_index=True, sort=False)

Для дальнейшей работ выгрузку надо отфильтровать, выбрать из неё только строки с нужными нам кодами:

##Подготовим строку для фильтра
car_codes = []
for i in range(1,173):
    code = 'A' + str(i) + '.1'
    car_codes.append(code)

##Фильтруем только строки с нужными кодами
df_d4 = df_total.loc[(df_total['Account'].isin(car_codes))]

А дальше вопрос - сохранять в CSV и вручную загружать в таблицы встроенной базы данных суперсет, или как?

Есть вариант! Для этих целей в том же контейнере Докера мы ранее подняли postgre SQL сервер.

Так загрузим полученный датафрейм в базу данных:

from sqlalchemy import select, delete, Table, MetaData
engine = create_engine('postgresql://test_user:test_pass@localhost:port/test_db')
meta = MetaData()
table_to_drop = Table('Car_sales', meta, autoload_with=engine)
table_to_drop.drop(engine)
df_d4.to_sql('Car_sales', engine)

В Суперсет добавляем источник данных и настроим визуализацию

Screenshot 2024 03 06 at 21 57 15

В этой визуализации добавлены динамические фильтры - график стал интерактивным

Screenshot 2024 03 06 at 21 58 37

Выложить исходные файлы?

Apache superset: урок 4
Метки:         

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *