Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Datavisualisering med pandaer

Pandas har hidtil hjulpet os i fasen med dataforbehandling. Selvom vi i et tilfælde, mens vi oprettede histogrammer, også har brugt et andet modul fra Pandas – plotting.

Vi har målrettet undgået er indtil videre, fordi at indføre det tidligere ville rejse flere spørgsmål, end det besvarede. Nemlig pandaer , Matplotlib var så almindelig en allestedsnærværende duo, at Pandas er begyndt at integrere Matplotlibs funktionalitet. Det stærkt er afhængig af Matplotlib til at lave en egentlig plotning, og du vil finde mange Matplotlib-funktioner pakket ind i kildekoden. Alternativt kan du bruge andre backends til plotning, som f.eks Komplott , bokeh.

Pandas introducerer os dog også for et par plot, der er ikke en del af Matplotlibs standard plottyper, som f.eks KDE'er, Andrews Curves, Bootstrap plots , Scatter matricer.

plot() funktion af en panda DataFrame bruger den backend, der er angivet af plotting.backendog afhængigt af kind argument – ​​genererer et plot ved hjælp af det givne bibliotek. Da mange af disse overlapper – nytter det ikke noget at dække plottyper som f.eks line, bar, hist , scatter. De vil producere stort set de samme plots med den samme kode, som vi hidtil har gjort med Matplotlib.

Vi vil kun kort tage et kig på plot() funktion, da den underliggende mekanisme er blevet undersøgt indtil videre. Lad os i stedet fokusere på nogle af de plots, som vi kan ikke allerede let gøre med Matplotlib.

Dette bliver et meget kort kapitel, da Pandas' plot- og visualiseringsevner blegner i forhold til Matplotlib – men det er stadig nyttigt at kende til nogle af disse, samt være opmærksom på evnen til at plotte fra DataFrames direkte.

DataFrame.plot() Funktion

plot() funktion accepterer x , y funktioner og en kind argument. Alternativt for at undgå kind argument, kan du også ringe DataFrame.plot.kind() i stedet, og bestå i x , y funktioner.

De accepterede værdier for kind argument er: line, bar, barh (vandret bjælke), hist, box, kde, density (synonym for kde), area, pie, scatter , hexbin (svarende til et varmekort).

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()

I stedet for at give Series tilfælde, som vi gør for Matplotlib – det er nok at give kolonnenavne, og siden du ringer til plot() funktion på DataFrame du visualiserer, er det nemt for Pandas at knytte disse strengværdier til de relevante kolonnenavne.

Hvert af disse opkald foretager et nyt Figure instans og plotter de relevante værdier på den:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

At plotte flere akser på den samme Figure, kan du lave en Figure og en eller flere Axes via plt.subplots() og tildel det relevante Axes til ax hvert argument plot.plot_type() opkald:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()

Nogle af standardargumenterne, som f.eks rotation argument er faktisk forskellige i plot() opkald. For eksempel, rotation er forkortet til rot. Dette gør det lidt svært at bare skift mellem Matplotlib og Pandas, da du højst sandsynligt ender på dokumentationssiderne, bare tjekker hvilke argumenter der kan anvendes og hvilke der ikke kan.

Nu, i stedet for at skabe en ny Figure or Axes for eksempel vil hver af disse grunde blive stationeret i det relevante Axes tilfælde, vi har forsynet dem med:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Generelt er det praktisk og hurtigt at plotte med Pandas – men alligevel vil du sandsynligvis gå med Matplotlib til at plotte barplot, linjeplot og boxplot. Det er både den underliggende motor Pandas uundgåeligt bruger, og den har også flere tilpasningsmuligheder, og du behøver ikke at huske et nyt sæt argumenter, som du kan bruge med Pandas plots.

Når det er sagt, for nogle plots, vil du måske foretrække pandas, da de skulle laves manuelt i Matplotlib, og nogle af dem er så besværlige at lave, at det ikke er besværet værd, såsom KDE-linjer.

pandaer' plotte Moduler

Hvad DataFrames har at tilbyde med hensyn til visualisering er ikke for nyt for os. Men det underliggende modul, de kalder, pandas.plotting gør. Det plotting modul har flere funktioner, som vi kan bruge, som f.eks autocorrelation_plot(), bootstrap_plot()og scatter_matrix().

Hver af disse accepterer enten en Series eller DataFrame, afhængigt af den type visualisering, de producerer, samt visse parametre til plotning af specifikationer og stylingformål.

Bootstrap plot

bootstrapping er processen med tilfældig stikprøve (med udskiftning) af et datasæt, og beregning af mål for nøjagtighed som f.eks. skævhed, varians , konfidensintervaller for de tilfældige prøver. "Med udskiftning" betyder i praksis, at hvert tilfældigt udvalgt element kan vælges igen. Uden udskiftning betyder, at efter hvert tilfældigt udvalgt element fjernes det fra puljen til den næste prøve.

A Bootstrap plot, skabt af Pandas bootstraps gennemsnits-, median- og mid-range-statistikken for et datasæt, baseret på prøven size, hvorefter plottet efterfølgende vises via plt.show(). Standardargumenterne for size , samples er 50 , 500 henholdsvis.

Det betyder, at for en funktion prøver vi 50 værdier. Derefter genereres en delprøve på 50 elementer (syntetiske data) for disse 50 værdier, og en opsummerende statistik (middel/median/mellemområde) beregnes for dem. Denne proces gentages 500 gange, så i sidste ende har vi 500 oversigtsstatistikker:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Autokorrelationsplot

Autokorrelationsplot bruges til at kontrollere for datatilfældighed, for tidsseriedata. Mange autokorrelationer beregnes for forskellige tidsstempler, og hvis dataene virkelig er tilfældige - vil korrelationen være tæt på nul. Hvis ikke – vil korrelationen være større end nul.

Lad os plotte to autokorrelationsplot – et med vores Værdi funktion, og en med en Series fyldt med tilfældige værdier:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()

Autokorrelationsplottet for random_series skal dreje sig om 0, da det er tilfældige data, mens plottet for Value funktion vil ikke:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Det er værd at bemærke, at autokorrelation måler én formular tilfældighed, som ukorreleret, men ikke-tilfældige data eksisterer. Hvis det er ikke-tilfældigt, men ikke har nogen signifikante korrelationer – ville autokorrelationsplottet indikere, at dataene er tilfældige.

Scatter matricer

Scatter matricer plot a gitter af scatter-plot for alle funktioner mod alle funktioner. Da dette uundgåeligt også sammenligner hver funktion med sig selv - den diagonal hvor dette sker, erstattes typisk med en Histogram af denne funktion, snarere end et scatter-plot. Scatter matricer er også kendt som Par plots, og Seaborn tilbyder en pairplot() fungerer kun til dette.

scatter_matrix() funktion accepterer en DataFrame og producerer en Scatter Matrix for alle dens numeriske funktioner og returnerer en 2D-array af Axes instanser, der omfatter Scatter Matrix. For at justere noget ved dem, vil du gerne gentage dem:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()

Dette resulterer i en ret stor Scatter Matrix af alle funktionerne mod alle andre funktioner:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Du kan også bestå i diagonal argument, som accepterer 'hist' or 'kde' for at angive, hvilken type distributionsplot du gerne vil plotte på diagonalen, samt alpha, der specificerer gennemskinneligheden af ​​markørerne i scatter-plottene.

Tidsstempel:

Mere fra Stablemisbrug