Jupyter je webové IDE. Kdykoli tedy vytiskneme datový rámec, vykreslí se pomocí HTML a CSS.
To nám umožňuje formátovat výstup stejně jako jakákoli jiná webová stránka.
Jedním zajímavým způsobem, jak to naformátovat, je vložení vložených grafů, které se zobrazují jako sloupec datového rámce, nazývaného také sparklines, abyste získali něco takového:
Tak jak vytvořit jeden, můžete se zeptat? Podívejme se na to níže.
Podívejme se nejprve na dovoz:
Dále vytvoříme fiktivní datovou sadu:
V souladu se čtyřmi řádky máme seznam náhodně generovaných cenových historií.
Nyní je naším cílem přidat čárový graf do každého řádku. Můžeme tedy vytvořit funkci a použít apply()
způsoba.
Nyní, jak bylo uvedeno výše, Jupyter vykreslí datový rámec pomocí HTML.
Pokud tedy dokážeme přijít na způsob, jak poskytnout nějaký HTML jako hodnotu buňky, která odkazuje na obrázek, Jupyter jej může vykreslit a zobrazit odpovídající čárový graf.
Zde je kód, který to udělá za nás:
Zatímco vykreslovací část je docela zřejmá, Zaměřme se na to, k čemu jsou určeny poslední čtyři řádky kódu (bez komentářů zde).
Cílem je převést graf na obrázek, který lze zobrazit na webové stránce.
První řádek tedy vytvoří nový objekt BytesIO img
. BytesIO
je třída v io
modul, který vytváří vyrovnávací paměť bajtů v paměti.
Druhý řádek uloží graf generovaný matplotlib do img
objekt jako obrázek PNG pomocí savefig
metoda objektu obrázku fig
.
Třetí řádek kóduje obsah img
objekt jako řetězec base64 pomocí b64encode
funkce z base64
modul. Výsledný řetězec base64 je poté dekódován do řetězce Unicode pomocí decode
metoda s utf-8
kódování.
Nakonec poslední řádek vrátí HTML <img>
tag s atributem source nastaveným na řetězec obrázku kódovaný base64. Když je tento řetězec vykreslen na webové stránce, zobrazí se obrázek generovaný matplotlib.
Nakonec vytvoříme řádek voláním metody na každém řádku datového rámce.
Celkově jsou sparklines vynikajícím nástrojem pro rychlé předávání trendů a vzorů v datech a mohou být zvláště užitečné, když chcete zobrazit spoustu informací na malém prostoru.
Kdykoli zavoláme existující metodu na datovém rámečku pandy, řekněme df.rename()
, je zřejmé, že rename()
metoda je definována ve třídě DataFrame.
Ale co když chcete k objektu DataFrame připojit vlastní metodu, řekněme, df.my_method()
. To je naprosto možné.
Naštěstí je pandy vysoce přizpůsobitelná knihovna a existuje mnoho způsobů, jak rozšířit její funkčnost tak, aby vyhovovala vašim potřebám.
Jedním z populárních přístupů je použití pandy-příchuť knihovna. Umožňuje definovat a připojit vlastní metody pandy k objektu DataFrame.
Můžete jej nainstalovat následujícím způsobem:
Dále napíšeme vlastní metodu do souboru my_pandas.py
.
Nyní zvažte, že máte následující datový rámec:
Nakonec můžeme importovat soubor vlastních metod my_pandas.py
, a připojí novou metodu k objektu DataFrame:
To je velmi užitečné pro zefektivnění pracovního postupu Pand. Díky tomu můžete vytvářet funkce přizpůsobené vašemu konkrétnímu případu použití a zefektivňovat a intuitivněji provádět úlohy analýzy dat.
Dataframe pandy se často vytváří ze seznamu Pythonu,slovníku, čtením souborů atd.
Věděli jste však, že můžete také vytvořit datový rámec ze seznamu objektů datové třídy?
Předpokládejme, že máte následující datovou třídu Point
:
Pojďme vytvořit spoustu objektů z této třídy.
Nyní, pokud předáme tento seznam objektů dataclass do pd.DataFrame
metoda, dostaneme DataFrame jako výstup:
Tento přístup může být velmi užitečný při práci s datovými třídami, protože poskytuje přímý způsob, jak vytvořit datový rámec pandy ze sbírky instancí.
Při použití metody na datový rámec pomocí apply()
, nevidíme pokrok a odhadovaný zbývající čas.
To však může být důležité při práci s velkými datovými sadami nebo složitými operacemi. Je to proto, že je obtížné vědět, jak dlouho bude trvat dokončení.
Ukazatel průběhu navíc může usnadnit rozhodnutí, zda počkat na dokončení operace nebo ji přerušit a zkusit jiný přístup.
Chcete-li to vyřešit, namísto použití apply()
metoda, můžete použít progress_apply()
z tqdm
.
Nejprve jej integrujte s Pandami následujícím způsobem:
Nyní, pokud použijeme df.progress_apply()
, dostaneme:
Při prezentaci dat v datovém rámečku může přidání titulků do tabulek poskytnout další kontext a učinit vaše data srozumitelnějšími namísto přidávání buněk markdown v poznámkovém bloku jupyter.
S pandas ‘ styling API, můžete přidat titulky do DataFrame. Podívejme se na příklad níže:
Zvažte například následující datový rámec:
Dále vyvoláme set_caption()
metoda na datovém rámečku style
accessor, jak je uvedeno níže:
Jak je uvedeno výše, datový rámec se nyní zobrazí s titulkem.
Celkově nám přidání titulků umožňuje stručně popsat datový rámec, jeho účel a jakékoli další relevantní informace, které mohou uživatelům pomoci rychleji a snadněji porozumět datům.
Když vytiskneme datový rámec, zobrazí se jako kolekce nezpracovaných čísel (nebo řetězců).
Zvažte například následující datový rámec:
V tomto případě mají sloupce našich dat nějakou vnitřní měrnou jednotku, což je pro čtenáře nezbytné vědět. Ale to není nikde vidět v datech.
Opět platí, že pomocí stylingového rozhraní API můžete formátovat výstupní náhled datového rámce, jak je uvedeno níže:
Nyní je mnohem evidentnější, co znamenají jednotlivé hodnoty, které ve výchozím náhledu chyběly.
Kromě toho můžete také prozkoumat balíček open-source Krásnépandas, který rozšiřuje třídu styler o mnoho dalších zajímavých nástrojů.