Forwarded from Data Science Private Sharing
#Tip42 #EDA #Pandas
На прошлой неделе поучаствовал в хакатоне GO ALGO, организованный Московской фондовой биржей.
Для решения задачи нужно было анализировать биржевую информацию. И наконец-то мне мне удалось применить на практике очень редкий вид графиков — Спарклайны (Sparkline).
Спарклайны — это небольшие немаркированные графики. Обычно они не содержат ни осей ни подписей, поэтому в основном предназначены для передачи какой-то общей идеи.
А т.к. спарклайны очень маленькие, то они отлично помещаются в ячейках Pandas'а :)
Графики можно редактировать в определенных границах: менять их ширину/высоту, можно разукрасить на свое усмотрение. Также вы можете вывести другие типы графиков: барплоты, гистограммы и пр.
З.Ы. Сам хакатон проходил в интересном формате. С одной стороны это был обычный хактон - с чек-поинтами и общением с экспертами. С другой - он длился целых 10 дней (вместо обычных 2-3). А за это время можно было сделать неплохой продукт :)
На прошлой неделе поучаствовал в хакатоне GO ALGO, организованный Московской фондовой биржей.
Для решения задачи нужно было анализировать биржевую информацию. И наконец-то мне мне удалось применить на практике очень редкий вид графиков — Спарклайны (Sparkline).
Спарклайны — это небольшие немаркированные графики. Обычно они не содержат ни осей ни подписей, поэтому в основном предназначены для передачи какой-то общей идеи.
А т.к. спарклайны очень маленькие, то они отлично помещаются в ячейках Pandas'а :)
import base64
from io import BytesIO
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import HTML
def sparkline(data):
data = list(data)
fig, ax = plt.subplots(1, 1, figsize=(4, 0.25))
ax.plot(data)
# Убираем все лишнее с графика
ax.set_axis_off()
# Заливаем график
ax.fill_between(range(len(data)), data, len(data)*[min(data)], alpha=0.1)
# Выводим min/max
plt.plot(np.argmax(data), data[np.argmax(data)], 'r.')
plt.plot(np.argmin(data), data[np.argmin(data)], 'm.')
img = BytesIO()
plt.savefig(img)
img.seek(0)
plt.close()
return '<img src="data:image/png;base64,{}"/>'.format(base64.b64encode(img.read()).decode())
agg_df = df.groupby('tradedate', as_index=False)['pr_open'].agg(list)
agg_df['sparkline'] = agg_df['pr_open'].map(sparkline)
HTML(agg_df[['tradedate','sparkline']][-10:].to_html(escape=False))
Графики можно редактировать в определенных границах: менять их ширину/высоту, можно разукрасить на свое усмотрение. Также вы можете вывести другие типы графиков: барплоты, гистограммы и пр.
З.Ы. Сам хакатон проходил в интересном формате. С одной стороны это был обычный хактон - с чек-поинтами и общением с экспертами. С другой - он длился целых 10 дней (вместо обычных 2-3). А за это время можно было сделать неплохой продукт :)
✍1