Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Datavisualisering med pandaer

Pandas har hjulpet oss så langt i fasen av dataforbehandling. Selv om vi i ett tilfelle, mens vi opprettet histogrammer, også har brukt en annen modul fra Pandas – plotting.

Vi har målrettet unngått er så langt, fordi å introdusere det tidligere ville reise flere spørsmål enn det svarte. Nemlig pandaer og Matplotlib var en så vanlig en allestedsnærværende duo at Pandas har begynt å integrere Matplotlibs funksjonalitet. Den tungt er avhengig av Matplotlib for å gjøre noen faktisk plotting, og du vil finne mange Matplotlib-funksjoner pakket inn i kildekoden. Alternativt kan du bruke andre backends for plotting, som f.eks Plottly og Bokeh.

Imidlertid introduserer Pandas oss også for et par plott som ikke er en del av Matplotlibs standard plotttyper, som f.eks KDE-er, Andrews Curves, Bootstrap-plotter og Scatter matriser.

De plot() funksjonen til en panda DataFrame bruker backend spesifisert av plotting.backend, og avhengig av kind argument – ​​genererer et plott ved å bruke det gitte biblioteket. Siden mange av disse overlapper – er det ingen vits i å dekke plottyper som f.eks line, bar, hist og scatter. De vil produsere omtrent de samme plottene med samme kode som vi har gjort så langt med Matplotlib.

Vi skal bare kort ta en titt på plot() funksjon siden den underliggende mekanismen har blitt utforsket så langt. La oss heller fokusere på noen av handlingene vi kan ikke allerede lett gjøre med Matplotlib.

Dette blir et veldig kort kapittel, ettersom Pandas' plotte- og visualiseringsevner blekner sammenlignet med Matplotlib – men det er fortsatt nyttig å vite om noen av disse, samt være klar over muligheten til å plotte fra DataFrames direkte.

De DataFrame.plot() Funksjon

De plot() funksjon aksepterer x og y funksjoner, og en kind argument. Alternativt, for å unngå kind argument, kan du også ringe DataFrame.plot.kind() i stedet, og pass i x og y funksjoner.

De aksepterte verdiene for kind argument er: line, bar, barh (horisontal bar), hist, box, kde, density (synonym for kde), area, pie, scatter og hexbin (ligner på et varmekart).

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 å gi Series forekomster som vi gjør for Matplotlib – det er nok å gi kolonnenavn, og siden du ringer til plot() funksjon på DataFrame du visualiserer, er det enkelt for Pandas å tilordne disse strengverdiene til de riktige kolonnenavnene.

Hver av disse samtalene gjør en ny Figure forekomst og plotter de riktige verdiene på den:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Å plotte flere akser på den samme Figure, kan du lage en Figure og en eller flere Axes av plt.subplots() og tilordne passende Axes til ax argumentet til hver plot.plot_type() anrop:

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()

Noen av standardargumentene, for eksempel rotation argumentet er faktisk forskjellige i plot() samtaler. For eksempel, rotation er forkortet til rot. Dette gjør det litt vanskelig å bare bytt mellom Matplotlib og Pandas, ettersom du mest sannsynlig vil ende opp på dokumentasjonssidene, bare sjekke hvilke argumenter som kan brukes og hvilke som ikke kan.

Nå, i stedet for å lage en ny Figure or Axes for eksempel vil hver av disse tomtene bli stasjonert i den aktuelle Axes tilfeller vi har gitt dem:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Generelt er plotting med Pandas praktisk og raskt – men likevel, for å plotte barplott, linjeplott og boksplott, vil du sannsynligvis gå med Matplotlib. Det er både den underliggende motoren Pandas uunngåelig bruker, og har også flere tilpasningsmuligheter, og du trenger ikke å huske et nytt sett med argumenter som du kan bruke med Pandas-plott.

Når det er sagt, for noen tomter vil du kanskje foretrekke pandaer, siden de må lages manuelt i Matplotlib, og noen av dem er så vanskelige å lage at det ikke er verdt innsatsen, for eksempel KDE-linjer.

Pandaer planlegging Moduler

Hva DataFrames har å tilby når det gjelder visualisering er ikke for nytt for oss. Imidlertid, den underliggende modulen de kaller, pandas.plotting gjør. De plotting modul har flere funksjoner som vi kan bruke, som f.eks autocorrelation_plot(), bootstrap_plot()og scatter_matrix().

Hver av disse godtar enten en Series eller en DataFrame, avhengig av hvilken type visualisering de produserer, samt visse parametere for plotting av spesifikasjoner og stylingformål.

Bootstrap Plot

bootstrapping er prosessen med tilfeldig prøvetaking (med erstatning) et datasett, og beregning av nøyaktighetsmål som f.eks. Bias, varians og tillitsintervaller for stikkprøvene. "Med erstatning" betyr i praksis at hvert tilfeldig valgt element kan velges på nytt. Uten erstatning betyr at etter hvert tilfeldig valgt element, fjernes det fra bassenget for neste prøve.

A Bootstrap Plot, laget av Pandas bootstraps gjennomsnitts-, median- og mellomnivåstatistikken til et datasett, basert på prøven size, hvoretter plottet i ettertid vises via plt.show(). Standardargumentene for size og samples er 50 og 500 henholdsvis.

Dette betyr at for en funksjon prøver vi 50 verdier. Deretter genereres en delprøve på 50 elementer (syntetiske data) for disse 50 verdiene og en oppsummeringsstatistikk (gjennomsnitt/median/mellomområde) beregnes for dem. Denne prosessen gjentas 500 ganger, så til slutt har vi 500 sammendragsstatistikker:

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. Vertikalt søk. Ai.

Autokorrelasjonsplott

Autokorrelasjonsplott brukes til å sjekke for datatilfeldighet, for tidsseriedata. Flere autokorrelasjoner beregnes for forskjellige tidsstempler, og hvis dataene er virkelig tilfeldige - vil korrelasjonen være nær null. Hvis ikke – vil korrelasjonen være større enn null.

La oss plotte to autokorrelasjonsplott – ett med vårt Verdi funksjon, og en med en Series fylt med tilfeldige verdier:

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()

Autokorrelasjonsplottet for random_series skal dreie seg om 0, siden det er tilfeldige data, mens plottet for Value funksjonen vil ikke:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Det er verdt å merke seg at autokorrelasjon måler en skjema av tilfeldighet, som ukorrelert, men ikke-tilfeldige data eksisterer. Hvis det er ikke-tilfeldig, men ikke har noen signifikante korrelasjoner - autokorrelasjonsplotten vil indikere at dataene er tilfeldige.

Scatter matriser

Scatter matriser plott a rutenett av spredningsplott for alle funksjoner mot alle funksjoner. Siden dette uunngåelig sammenligner hver funksjon med seg selv, også - diagonal hvor dette skjer erstattes vanligvis med en histogram av den funksjonen, i stedet for et scatterplot. Scatter matriser er også kjent som Par tomter, og Seaborn tilbyr en pairplot() funksjon kun for dette.

De scatter_matrix() funksjon aksepterer en DataFrame og produserer en Scatter Matrix for alle dens numeriske funksjoner, og returnerer en 2D-matrise med Axes forekomster som omfatter Scatter-matrisen. For å justere noe om dem, vil du gjerne gjenta 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 ganske stor scatter-matrise av alle funksjonene mot alle andre funksjoner:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Du kan også passere i diagonal argument, som godtar 'hist' or 'kde' for å spesifisere hvilken type distribusjonsplott du vil plotte på diagonalen, samt alpha, som spesifiserer gjennomsiktigheten til markørene i spredningsplottene.

Tidstempel:

Mer fra Stackabuse