Datavisualisatie met Pandas PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Datavisualisatie met Panda's

Pandas heeft ons tot nu toe geholpen in de fase van gegevensvoorverwerking. Hoewel we in één geval bij het maken van histogrammen ook een andere module van Pandas hebben gebruikt: plotting.

Tot nu toe hebben we dit doelbewust vermeden, omdat een eerdere introductie ervan meer vragen zou oproepen dan het zou beantwoorden. Namelijk Panda's en Matplotlib was zo'n veel voorkomend en alomtegenwoordig duo, dat Pandas de functionaliteit van Matplotlib is gaan integreren. Het hard vertrouwt op Matplotlib voor het daadwerkelijke plotten, en je zult veel Matplotlib-functies in de broncode aantreffen. Als alternatief kunt u andere backends gebruiken voor het plotten, zoals Plotly en Bokeh.

Pandas laat ons echter ook kennismaken met een aantal plots niet een onderdeel van de standaard plottypen van Matplotlib, zoals KDE's, Andrews-curven, Bootstrap-percelen en Spreidingsmatrices.

De plot() functie van een Panda's DataFrame gebruikt de backend gespecificeerd door plotting.backend, en afhankelijk van de kind argument – ​​genereert een plot met behulp van de gegeven bibliotheek. Omdat veel van deze elkaar overlappen, heeft het geen zin om plottypen zoals line, bar, hist en scatter. Ze zullen vrijwel dezelfde plots produceren met dezelfde code als we tot nu toe met Matplotlib hebben gedaan.

We bekijken slechts kort de plot() omdat het onderliggende mechanisme tot nu toe is onderzocht. Laten we ons in plaats daarvan concentreren op enkele van de plots die we hebben kan niet al gemakkelijk doen met Matplotlib.

Dit zal een heel kort hoofdstuk zijn, omdat de plot- en visualisatiemogelijkheden van Pandas verbleken in vergelijking met Matplotlib – maar het is nog steeds nuttig om een ​​aantal hiervan te kennen, en je bewust te zijn van de mogelijkheid om te plotten vanuit DataFrames direct.

De DataFrame.plot() Functie

De plot() functie accepteert x en y functies, en een kind argument. Als alternatief, om te voorkomen dat de kind argument, je kunt ook bellen DataFrame.plot.kind() in plaats daarvan, en passeer de x en y kenmerken.

De geaccepteerde waarden voor de kind argument zijn: line, bar, barh (horizontale balk), hist, box, kde, density (synoniem voor kde), area, pie, scatter en hexbin (vergelijkbaar met een hittekaart).

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

In plaats van het verstrekken van de Series instances zoals we doen voor Matplotlib – het is voldoende om de kolom namen, en aangezien je de plot() functie op de DataFrame u visualiseert, is het voor Pandas eenvoudig om deze tekenreekswaarden aan de juiste kolomnamen toe te wijzen.

Elk van deze oproepen vormt een nieuwe Figure instance en plot de juiste waarden erop:

Datavisualisatie met Pandas PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Om meerdere assen op hetzelfde te plotten Figure, je kunt een Figure en een of meer Axes via plt.subplots() en wijs de juiste toe Axes aan de ax betoog van ieder plot.plot_type() bellen:

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

Enkele van de standaardargumenten, zoals de rotation argument zijn eigenlijk anders in de plot() oproepen. Bijvoorbeeld, rotation wordt afgekort tot rot. Dit maakt het een beetje lastig om te doen gewoon overstappen tussen Matplotlib en Pandas, omdat je hoogstwaarschijnlijk op de documentatiepagina's terechtkomt, waar je alleen maar controleert welke argumenten kunnen worden toegepast en welke niet.

Nu, in plaats van een nieuw Figure or Axes Elk van deze percelen zal bijvoorbeeld op de juiste plek worden gestationeerd Axes exemplaren die we ze hebben geleverd:

Datavisualisatie met Pandas PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Over het algemeen is het plotten met Panda's handig en snel, maar toch zul je voor het plotten van Bar Plots, Line Plots en Box Plots waarschijnlijk Matplotlib willen gebruiken. Het is zowel de onderliggende engine die Pandas onvermijdelijk gebruikt, als ook meer aanpassingsmogelijkheden, en je hoeft geen nieuwe reeks argumenten te onthouden die je kunt gebruiken met Pandas-plots.

Dat gezegd hebbende, zou je voor sommige plots misschien de voorkeur willen geven Pandas, omdat ze handmatig in Matplotlib moeten worden gemaakt, en sommige ervan zijn zo lastig te maken dat het de moeite niet waard is, zoals KDE-regels.

Panda's plotten Module

Wat DataFrames te bieden hebben op het gebied van visualisatie is niet zo nieuw voor ons. De onderliggende module die ze noemen, pandas.plotting doet. De plotting module heeft verschillende functies die we kunnen gebruiken, zoals autocorrelation_plot(), bootstrap_plot() en scatter_matrix().

Elk van deze accepteert een Series of DataFrame, afhankelijk van het type visualisatie dat ze produceren, evenals bepaalde parameters voor plotspecificaties en stijldoeleinden.

Bootstrap-plot

bootstrapping is het proces van het willekeurig bemonsteren (met vervanging) van een dataset en het berekenen van nauwkeurigheidsmetingen zoals vooringenomenheid, variantie en betrouwbaarheidsintervallen voor de willekeurige monsters. “Met vervanging” betekent in de praktijk dat elk willekeurig geselecteerd element opnieuw geselecteerd kan worden. Zonder vervanging betekent dat na elk willekeurig geselecteerd element het uit de pool wordt verwijderd voor het volgende monster.

A Bootstrap-plot, gemaakt door Pandas, bootstrapt de gemiddelde, mediaan en mid-range statistieken van een dataset na, gebaseerd op de steekproef size, waarna de plot vervolgens wordt getoond via plt.show(). De standaardargumenten voor size en samples zijn 50 en 500 respectievelijk.

Dit betekent dat we voor een kenmerk een steekproef nemen 50 waarden. Vervolgens wordt voor die 50 waarden een substeekproef met 50 elementen gegenereerd (synthetische gegevens) en wordt er een samenvattende statistiek (gemiddelde/mediaan/middenbereik) voor berekend. Dit proces wordt herhaald 500 keer, dus uiteindelijk hebben we 500 samenvattende statistieken:

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

Datavisualisatie met Pandas PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Autocorrelatieplot

Autocorrelatiegrafieken worden gebruikt om te controleren op willekeur van gegevens, voor tijdreeksgegevens. Meerdere autocorrelaties worden berekend voor verschillende tijdstempels, en als de gegevens echt willekeurig zijn, zal de correlatie bijna nul zijn. Als dat niet het geval is, is de correlatie groter dan nul.

Laten we twee autocorrelatieplots tekenen – één met onze Waarde functie, en één met een Series gevuld met willekeurige waarden:

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

De autocorrelatieplot voor de random_series omheen moeten draaien 0, omdat het willekeurige gegevens zijn, terwijl de plot voor de Value functie zal niet:

Datavisualisatie met Pandas PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het is vermeldenswaard dat autocorrelatie er één meet formulier van willekeur, aangezien er niet-gecorreleerde, maar niet-willekeurige gegevens bestaan. Als het niet willekeurig is, maar geen significante correlaties heeft, zou de Autocorrelation Plot aangeven dat de gegevens willekeurig zijn.

Spreidingsmatrices

Spreidingsmatrices plot een rooster van spreidingsdiagrammen voor alle features tegen alle features. Omdat dit onvermijdelijk elke functie met zichzelf vergelijkt, ook – de diagonaal waar dit gebeurt, wordt doorgaans vervangen door een histogram van dat kenmerk, in plaats van een spreidingsdiagram. Spreidingsmatrices zijn ook bekend als Paarpercelen, en Seaborn biedt een pairplot() functie alleen hiervoor.

De scatter_matrix() functie accepteert a DataFrame en produceert een spreidingsmatrix voor al zijn numerieke kenmerken, en retourneert een 2D-array van Axes instanties die de spreidingsmatrix vormen. Als je er iets aan wilt aanpassen, moet je ze doorlopen:

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

Dit resulteert in een vrij grote spreidingsmatrix van alle kenmerken ten opzichte van alle andere kenmerken:

Datavisualisatie met Pandas PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Je kunt ook langskomen in de diagonal argument, dat aanvaardt 'hist' or 'kde' om aan te geven welk type distributieplot u op de diagonaal wilt plotten, en alpha, waarbij de doorschijnendheid van de markeringen in de spreidingsdiagrammen wordt gespecificeerd.

Tijdstempel:

Meer van Stapelmisbruik