Vizualizace grafů v poznámkových blocích

Dokončeno

Vizualizace dat je klíčovým aspektem zkoumání dat. Zahrnuje prezentaci dat v grafickém formátu, což usnadňuje srozumitelnější a využitelné komplexní data.

Díky poznámkovým blokům Microsoft Fabric a datovým rámcům Apache Sparku se vaše tabulkové výsledky automaticky zobrazují jako grafy bez nutnosti dalšího kódování.

Screenshot of the tabular results being automatically presented as charts without the need for any additional coding.

Tip

Opensourcové knihovny, jako je matplotlib a vykreslení mimo jiné, se dají použít také k vylepšení prostředí pro zkoumání dat.

Principy kategorických a číselných proměnných

U kategorických proměnných je důležité pochopit různé kategorie nebo úrovně v proměnné. To zahrnuje identifikaci počtu pozorování v každé kategorii, která se označuje jako počty nebo četnosti. Kromě toho je důležité pochopit, jaký podíl nebo procento pozorování každá kategorie představuje.

Pokud jde o číselné proměnné, je potřeba zvážit několik aspektů. Střední hodnota proměnné, která může být střední, medián nebo režim, poskytuje souhrn proměnné.

Rozptylové míry, jako je rozsah, interquartilový rozsah (IQR), směrodatná odchylka nebo rozptyl, poskytují přehled o rozprostření proměnné. Nakonec je pochopení rozdělení proměnné klíčem. To zahrnuje určení, zda je proměnná normálně distribuovaná, nebo sleduje jiné rozdělení a identifikuje všechny odlehlé hodnoty.

Často se označují jako souhrnné statistiky číselných a kategorických proměnných.

Souhrnná statistika

Souhrnné statistiky jsou k dispozici pro datové rámce Apache Spark při použití parametru summary=True.

Screenshot of the summary statistics being automatically presented without the need for any additional coding.

Případně můžete vygenerovat souhrnné statistiky pomocí Pythonu.

import pandas as pd

df = pd.DataFrame({
    'Height_in_cm': [170, 180, 175, 185, 178],
    'Weight_in_kg': [65, 75, 70, 80, 72],
    'Age_in_years': [25, 30, 28, 35, 32]
})

desc_stats = df.describe()
print(desc_stats)

Univariátní analýza

Jednovariátová analýza je nejjednodušší forma analýzy dat, kde analyzovaná data obsahují pouze jednu proměnnou. Hlavním účelem jednovariátní analýzy je popsat data a najít vzory, které v ní existují.

Jedná se o běžné grafy používané k provádění jednovariátní analýzy.

  • Histogramy: Slouží k zobrazení frekvence každé kategorie souvislé proměnné. Můžou pomoct identifikovat střední hodnotu, tvar a šíření dat.

  • Krabicové grafy: Slouží k zobrazení rozsahu, interquartilového rozsahu (IQR), mediánu a potenciálních odlehlých hodnot číselné proměnné.

  • Pruhové grafy: Jsou podobné histogramům, ale obvykle se používají pro kategorické proměnné. Každý pruh představuje kategorii a výška nebo délka pruhu odpovídá jeho frekvenci nebo poměru.

Následující kód vytvoří krabicový graf a histogram pomocí Pythonu.

import numpy as np
import matplotlib.pyplot as plt

# Let's assume these are the heights of a group in inches
heights_in_inches = [63, 64, 66, 67, 68, 69, 71, 72, 73, 55, 75]

fig, axs = plt.subplots(1, 2, figsize=(10, 5))

# Boxplot
axs[0].boxplot(heights_in_inches, whis=0.5)
axs[0].set_title('Box plot of heights')

# Histogram
bins = range(min(heights_in_inches), max(heights_in_inches) + 5, 5)
axs[1].hist(heights_in_inches, bins=bins, alpha=0.5)
axs[1].set_title('Frequency distribution of heights')
axs[1].set_xlabel('Height (in)')
axs[1].set_ylabel('Frequency')

plt.tight_layout()
plt.show()

Screenshot of a box plot and histogram using Python.

Z výsledků můžeme vyvodit několik závěrů.

  • V krabicovém grafu je rozdělení výšek vlevo zkosené, což znamená, že existuje mnoho jednotlivců s výškou výrazně pod střední hodnotu.
  • Existují dva potenciální odlehlé hodnoty: 55 palců (4'7") a 75 palců (6'3"). Tyto hodnoty jsou nižší a vyšší než ostatní datové body.
  • Rozdělení výšek je přibližně symetrické kolem mediánu za předpokladu, že odlehlé hodnoty nerozšikmují rozdělení.

Bivariátní a multivariátní analýza

Bivariátní a multivariátová analýza pomáhá pochopit vztahy a interakce mezi různými proměnnými v datové sadě a často se zobrazují pomocí bodových grafů, korelačních matic nebo křížových tabulek.

Bodové grafy

Následující kód používá scatter() funkci z knihovny matplotlib k vytvoření bodového grafu. Určíme house_sizes pro osu x a house_prices pro osu y.

import matplotlib.pyplot as plt
import numpy as np

# Sample data
np.random.seed(0)  # for reproducibility
house_sizes = np.random.randint(1000, 3000, size=50)  # Size of houses in square feet
house_prices = house_sizes * 100 + np.random.normal(0, 20000, size=50)  # Price of houses in dollars

# Create scatter plot
plt.scatter(house_sizes, house_prices)

# Set plot title and labels
plt.title('House Prices vs Size')
plt.xlabel('Size (sqt)')
plt.ylabel('Price ($)')

# Display the plot
plt.show()

Screenshot of a scatter plot in a notebook.

V tomto bodovém grafu představuje každý bod dům. Vidíte, že při nárůstu velikosti domu (pohybující se doprava podél osy x) se cena také obvykle zvyšuje (pohyb nahoru podél osy y).

Tento typ analýzy nám pomáhá pochopit, jak změny závislých proměnných ovlivňují cílovou proměnnou. Analýzou vztahů mezi těmito proměnnými můžeme vytvářet předpovědi o cílové proměnné na základě hodnot závislých proměnných.

Tato analýza navíc může pomoct určit, které závislé proměnné mají významný dopad na cílovou proměnnou. To je užitečné pro výběr funkcí v modelech strojového učení, kde cílem je použít nejrelevantní funkce k predikci cíle.

Spojnicový graf

Následující skript Pythonu matplotlib pomocí knihovny vytvoří spojnicový graf simulovaných cen domů za období tří let. Vygeneruje seznam měsíčních dat od roku 2020 do roku 2022 a odpovídající seznam cen domů, který začíná od 200 000 KČ a každý měsíc zvyšuje s určitou náhodností.

Osa x grafu je naformátovaná tak, aby zobrazovala kalendářní data ve formátu Year-Month (Měsíc) a nastavila interval z ticků na ose X na každých šest měsíců.

import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import random
import matplotlib.dates as mdates

# Generate monthly dates from 2020 to 2022
dates = [datetime(2020, 1, 1) + timedelta(days=30*i) for i in range(36)]

# Generate corresponding house prices with some randomness
prices = [200000 + 5000*i + random.randint(-5000, 5000) for i in range(36)]

plt.figure(figsize=(10,5))

# Plot data
plt.plot(dates, prices)

# Format x-axis to display dates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=6)) # set interval to 6 months
plt.gcf().autofmt_xdate() # Rotation

# Set plot title and labels
plt.title('House Prices Over Years')
plt.xlabel('Year-Month')
plt.ylabel('House Price ($)')

# Show the plot
plt.show()

Screenshot of a line plot in a notebook.

Spojnicové grafy jsou snadno pochopitelné a čitelné. Poskytují jasný základní přehled průběhu dat v průběhu času a představují oblíbenou volbu pro data časových řad.

Párový graf

Párový graf může být užitečný, když chcete vizualizovat vztah mezi více proměnnými najednou.

import seaborn as sns
import pandas as pd

# Sample data
data = {
    'Size': [1000, 2000, 3000, 1500, 1200],
    'Bedrooms': [2, 4, 3, 2, 1],
    'Age': [5, 10, 2, 6, 4],
    'Price': [200000, 400000, 350000, 220000, 150000]
}

df = pd.DataFrame(data)

# Create a pair plot
sns.pairplot(df)

Screenshot of a pair plot in a notebook.

Tím se vytvoří mřížka grafů, ve kterých se každá funkce vykreslí proti každé jiné funkci. Na diagonále jsou histogramy znázorňující rozdělení jednotlivých funkcí. Off-diagonal grafy jsou bodové grafy znázorňující vztah mezi dvěma funkcemi.

Tento druh vizualizace nám může pomoct pochopit, jak různé funkce vzájemně souvisejí, a případně by se mohly použít k informování rozhodnutí o nákupu nebo prodeji domů.