Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Datavisualisering med pandor

Pandas har hjälpt oss hittills i fasen av dataförbehandling. Även om vi i ett fall, när vi skapade histogram, också har använt en annan modul från Pandas – plotting.

Vi har medvetet undvikit är så långt, eftersom att införa det tidigare skulle väcka fler frågor än det besvarade. Nämligen pandor och Matplotlib var en så vanligt förekommande duo att Pandas har börjat integrera Matplotlibs funktionalitet. Det kraftigt förlitar sig på Matplotlib för att göra någon faktisk plottning, och du hittar många Matplotlib-funktioner insvepta i källkoden. Alternativt kan du använda andra backends för plottning, som t.ex Plotly och Bokeh.

Men Pandas introducerar oss också för ett par intriger som inte en del av Matplotlibs standard plottyper, som t.ex KDE:er, Andrews Curves, Bootstrap plots och Scatter matriser.

Smakämnen plot() funktion hos en panda DataFrame använder backend som anges av plotting.backend, och beroende på kind argument – ​​genererar en plot med hjälp av det givna biblioteket. Eftersom många av dessa överlappar – är det ingen idé att täcka in plottyper som t.ex line, bar, hist och scatter. De kommer att producera ungefär samma plotter med samma kod som vi hittills har gjort med Matplotlib.

Vi ska bara kort ta en titt på plot() funktion eftersom den underliggande mekanismen hittills har utforskats. Låt oss istället fokusera på några av handlingarna som vi kan inte redan lätt göra med Matplotlib.

Detta kommer att bli ett mycket kort kapitel, eftersom Pandas plottnings- och visualiseringsförmåga bleknar i jämförelse med Matplotlib – men det är fortfarande användbart att känna till några av dessa, samt vara medveten om förmågan att plotta från DataFrames direkt.

Smakämnen DataFrame.plot() Funktion

Smakämnen plot() funktion accepterar x och y funktioner och en kind argument. Alternativt, för att undvika kind argument kan du också ringa DataFrame.plot.kind() istället, och passera in x och y funktioner.

De accepterade värdena för kind argument är: line, bar, barh (horisontell stapel), hist, box, kde, density (synonym till kde), area, pie, scatter och hexbin (liknar en Heatmap).

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

Istället för att tillhandahålla Series instanser som vi gör för Matplotlib – det räcker att tillhandahålla kolumnnamn, och eftersom du ringer till plot() funktion på DataFrame du visualiserar är det lätt för Pandas att mappa dessa strängvärden till lämpliga kolumnnamn.

Vart och ett av dessa samtal gör ett nytt Figure instans och plottar lämpliga värden på den:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Att plotta flera axlar på samma Figure, kan du göra en Figure och en eller flera Axes via plt.subplots() och tilldela lämpligt Axes till ax varje argument plot.plot_type() ringa upp:

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

Några av standardargumenten, såsom rotation argument är faktiskt olika i plot() samtal. Till exempel, rotation förkortas till rot. Detta gör det lite knepigt att bara byta mellan Matplotlib och Pandas, eftersom du med största sannolikhet kommer att hamna på dokumentationssidorna, bara kolla vilka argument som kan tillämpas och vilka som inte kan.

Nu istället för att skapa en ny Figure or Axes t.ex. kommer var och en av dessa tomter att placeras i lämplig Axes fall vi har försett dem med:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

I allmänhet är det bekvämt och snabbt att plotta med Pandas – men ändå, för att plotta barplots, linjeplots och boxplots, kommer du förmodligen att vilja gå med Matplotlib. Det är både den underliggande motorn som Pandas oundvikligen använder, och den har också fler anpassningsalternativ, och du behöver inte komma ihåg en ny uppsättning argument som du kan använda med Pandas plots.

Som sagt, för vissa tomter kanske du vill föredra pandas, eftersom de måste göras manuellt i Matplotlib, och vissa av dem är så besvärliga att göra att det inte är värt ansträngningen, såsom KDE-linjer.

pandor plottning Modulerna

Vad DataFrames har att erbjuda när det gäller visualisering är inte alltför nytt för oss. Men den underliggande modulen de kallar, pandas.plotting gör. De plotting modulen har flera funktioner som vi kan använda, som t.ex autocorrelation_plot(), bootstrap_plot()och scatter_matrix().

Var och en av dessa accepterar antingen a Series eller ett DataFrame, beroende på vilken typ av visualisering de producerar, samt vissa parametrar för plottning av specifikationer och stylingändamål.

Bootstrap plot

Bootstrapping är processen att slumpmässigt ta (med ersättning) en datauppsättning, och beräkna mått på noggrannhet som t.ex. förspänning, variation och konfidensintervaller för stickproven. "Med utbyte" innebär i praktiken att varje slumpmässigt valt element kan väljas igen. Utan ersättning betyder att efter varje slumpmässigt valt element tas det bort från poolen för nästa prov.

A Bootstrap plot, skapad av Pandas bootstraps medel-, median- och mellanregisterstatistiken för en datauppsättning, baserat på provet size, varefter handlingen i efterhand visas via plt.show(). Standardargumenten för size och samples är 50 och 500 respektive.

Det betyder att vi samplar för en funktion 50 värden. Sedan genereras ett delsampling med 50 element (syntetisk data) för dessa 50 värden och en sammanfattande statistik (medelvärde/median/mellanområde) beräknas för dem. Denna process upprepas 500 gånger, så i slutändan har vi 500 sammanfattande statistik:

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. Vertikal sökning. Ai.

Autokorrelationsplot

Autokorrelationsplots används för att kontrollera dataslumpmässighet, för tidsseriedata. Flera olika autokorrelationer beräknas för olika tidsstämplar, och om uppgifterna verkligen är slumpmässiga – kommer korrelationen att vara nära noll. Om inte – kommer korrelationen att vara större än noll.

Låt oss rita två autokorrelationsplottar – en med vår Värde funktion och en med en Series fylld med slumpmässiga värden:

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

Autokorrelationsplotten för random_series borde kretsa kring 0, eftersom det är slumpmässiga data, medan plotten för Value funktionen kommer inte:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Det är värt att notera att autokorrelation mäter en formen av slumpmässighet, som okorrelerade, men icke-slumpmässiga data existerar. Om det är icke-slumpmässigt, men inte har några signifikanta korrelationer – skulle autokorrelationsplotten indikera att data är slumpmässig.

Scatter matriser

Scatter matriser tomt a rutnät av Scatter Plots för alla funktioner mot alla funktioner. Eftersom detta oundvikligen också jämför varje funktion med sig själv – den diagonal där detta händer ersätts vanligtvis med en Histogram av den funktionen, snarare än en Scatter Plot. Scatter matriser är också kända som Par tomter, och Seaborn erbjuder en pairplot() fungerar bara för detta.

Smakämnen scatter_matrix() funktion accepterar en DataFrame och producerar en scatter-matris för alla dess numeriska funktioner, och returnerar en 2D-array av Axes instanser som utgör Scatter-matrisen. För att justera något om dem, vill du iterera igenom 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()

Detta resulterar i en ganska stor scatter-matris av alla funktioner mot alla andra funktioner:

Datavisualisering med Pandas PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Du kan också passera i diagonal argument, som accepterar 'hist' or 'kde' för att ange vilken typ av distributionsdiagram du vill plotta på diagonalen, samt alpha, som anger genomskinligheten för markörerna i spridningsdiagrammen.

Tidsstämpel:

Mer från Stackabuse