- Forvirret over, hvilket visualiseringsværktøj du skal bruge? Jeg har opdelt fordele og ulemper ved hvert bibliotek for dig
- Data
- Matplotlib
- Pros
- Kontra
- Takeaway: Matplotlib kan plotte alt, men komplekse plot kan tage meget mere kode end andre biblioteker
- Pros
- Gør almindeligt anvendte plots pænere
- Cons
- Plotly
- Pros
- Nemt at oprette interaktive plots
- Altair
- Pros
- Cons
- Bokeh
- Pros
- Konsekvenser
- Folium
- Pros
- Konklusion
Forvirret over, hvilket visualiseringsværktøj du skal bruge? Jeg har opdelt fordele og ulemper ved hvert bibliotek for dig
Denne guide er blevet opdateret med nogle mere dybdegående eksempler. Du kan finde den seneste version af bloggen her.
Hvis du starter med Python-visualisering, kan du måske blive overvældet af antallet af biblioteker og eksempler:
- Matplotlib
- Seaborn
- Plotly
- Bokeh
- Altair
- Folium
Hvis du har et DataFrame, der venter på at blive visualiseret, hvilken en skal du så vælge? Nogle biblioteker kan være bedre i specifikke tilfælde end de andre. Denne artikel vil vise fordele og ulemper ved hvert enkelt. Ved slutningen af denne artikel skulle du være i stand til at skelne de forskellige funktioner i hvert bibliotek og have lettere ved at vælge det optimale bibliotek.
Vi vil gøre dette ved at bruge et eksempeldatasæt og udforske det ved hjælp af hvert bibliotek med fokus på nogle få specifikke egenskaber:
Interaktivitet
Hvis du ønsker, at din visualisering skal være interaktiv?
Nogle biblioteker, såsom Matplotlib, gengiver visualiseringer som billeder; de er derfor gode til at forklare koncepter (i en artikel, et diasdæk eller en præsentation).
På den anden side giver biblioteker som Altair, Bokeh og Plotly dig mulighed for at oprette interaktive grafer, som dine brugere selv kan dykke ned i og udforske
Syntaks og fleksibilitet
Hvordan er syntaksen for hvert bibliotek forskellig? Biblioteker på lavere niveau som Matplotlib giver dig mulighed for at gøre alt, hvad du kan forestille dig – men på bekostning af et mere komplekst API. Nogle biblioteker som Altair er meget deklarative, hvilket gør det lettere at mappe til dine data.
Datatatype og visualisering
Arbejder du med et specialiseret brugsscenarie, f.eks. et geografisk plot, med store data eller bruger du en plot-type, som kun understøttes af et bestemt bibliotek?
Data
For at gøre det lettere at sammenligne vil jeg i denne artikel bruge de rigtige data, som jeg skraber fra Github:
Jeg vil indlejre visualiseringerne fra hvert bibliotek ved hjælp af Datapane, som er en Python-ramme og API til udgivelse og deling af Python-rapporter. Hvis du vil se flere eksempler fra den virkelige verden, kan du tjekke de rapporter, som brugerne har bidraget med, i Datapane-galleriet.
For at følge artiklen kan du enten downloade csv-filen herfra eller hente de direkte data fra Datapane Blob.
import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()
Husk at logge ind på Datapane med dit token på forhånd, hvis du vil bruge Blob’en. Dette bør tage mindre end 1 minut
Matplotlib
Matplotlib er nok det mest almindelige Python-bibliotek til visualisering af data. Alle, der interesserer sig for datalogi, har sandsynligvis brugt Matplotlib mindst én gang.
Pros
- Nemt at se dataenes egenskab
Når man analyserer data, kan det være ideelt at have et hurtigt kig på fordelingen.
For eksempel, hvis jeg vil have et hurtigt kig på fordelingen af de 100 bedste brugere med flest følgere, er det normalt nok at bruge Matplotlib.
Nemt at oprette interaktive plots
Plotly gør det også nemt at oprette interaktive plots. Interaktive plots er ikke kun smukke, men gør det også lettere for seerne at se nærmere på hvert datapunkt.
Huskede du det søjleplot, vi havde tidligere med matplotlib? Lad os se, hvordan det bliver med Plotly
Med ca. de samme linjer kode producerer vi et interaktivt plot, som vi kan føre musen hen over hver bjælke for at se, hvilken bruger og hvor mange følgere, som bjælken repræsenterer. Det betyder, at forbrugeren af din visualisering selv kan udforske den.
3. Komplekse plots gjort let
Med Plotly kan nogle plots, der normalt er udfordrende at skabe, nemt oprettes.
For eksempel, hvis vi ønsker at oprette et kort for at visualisere Github-brugernes placering, kan vi finde deres breddegrader og længdegrader som vist her, og derefter bruge disse data til at spotte brugernes placeringer på kortet som her
Med et par linjer kode er alle brugernes placeringer smukt repræsenteret på et kort. Farven på boblerne repræsenterer antallet af gafler, og størrelsen repræsenterer det samlede antal stjerner
Takeaway: Plotly er fantastisk til at skabe interaktive grafer i publikationskvalitet med få linjer kode.
Altair
Altair er et deklarativt statistisk visualiseringsbibliotek til Python baseret på vega-lite, hvilket gør det ideelt til plot, der kræver en masse statistisk transformation.
Pros
1. Enkel visualiseringsgrammatik
Den grammatik, der bruges til at skabe visualiseringen, er let at forstå. Det er kun nødvendigt at nævne forbindelserne mellem datakolonnerne til kodningskanalerne, og resten af plotningen håndteres automatisk. Dette lyder abstrakt, men er en stor ting, når man arbejder med data, og det gør visualiseringen af oplysninger virkelig hurtig og intuitiv.
For eksempel med titanic-dataene ovenfor, hvor vi gerne vil tælle antallet af personer i hver klasse, skal vi blot bruge count()
i y_axen
2. Let at transformere data
Altair gør det også meget let at transformere dataene, mens du opretter diagrammet
For eksempel, hvis vi gerne vil finde gennemsnitsalderen for hvert køn i Titanic, kan vi i stedet for at foretage transformationen på forhånd som i Plotly, udføre transformationen i koden for at oprette diagrammet.
Vi kunne også sørge for, at klassen er et nominelt data (kategoriske data uden nogen orden) ved hjælp af :N
eller sørge for, at mean_age er et kvantitativt data (mål for værdier som f.eks. tal) ved hjælp af :Q
Se en komplet liste over datatransformationer her
3. Let at sammenkæde plot
Altair giver dig også mulighed for at lave nogle imponerende sammenkædninger mellem plot, f.eks. ved at bruge et intervalvalg til at filtrere indholdet af et vedhæftet histogram.
For eksempel, hvis vi ønsker at visualisere antallet af personer i hver klasse inden for det interval, vi vælger et punktdiagram mellem alder og billetpris, kan vi gøre noget som dette.
Når vi trækker musen for at vælge intervallet inden for spredningsdiagrammet, kan vi se ændringen i søjlediagrammet nedenfor. Når dette kombineres med transformationerne og beregningerne fra tidligere, betyder det, at du kan oprette nogle ekstremt interaktive diagrammer, der foretager beregninger on-the-fly – uden at det overhovedet kræver en kørende Python-server!
Cons
Medmindre du angiver brugerdefineret styling, ser de enkle diagrammer som f.eks. søjlediagrammet ikke så stylet ud som seaborn eller Plotly. Altair anbefaler heller ikke datasæt med over 5000 prøver og anbefaler i stedet, at du aggregerer dine data før visualisering.
Takeaway: Altair er ideel til sofistikerede diagrammer til at vise statistik. Altair kan ikke håndtere data over 5000 prøver, og nogle enkle diagrammer ser ikke så stylet ud sammenlignet med Plotly eller Seaborn.
Bokeh
Bokeh er et fleksibelt interaktivt visualiseringsbibliotek, der er rettet mod webbrowsere til repræsentation.
Pros
- Interaktiv version af Matplotlib
Hvis vi skal rangordne blandt de interaktive visualiseringsbiblioteker ovenfor, vil Bokeh sandsynligvis rangere først i forhold til ligheden med Matplotlib.
Matplotlib kan skabe ethvert plot, fordi det er et visualiseringsbibliotek på lavt niveau. Bokeh kan både bruges som en grænseflade på højt niveau og på lavt niveau; det kan således skabe mange sofistikerede plots, som Matplotlib skaber, men med færre kodelinjer og højere opløsning.
For eksempel, cirkelplottet fra Matplotlib
Kan også oprettes med bedre opløsning og mere anvendelig ved hjælp af Bokeh
2. Link mellem parceller
Bokeh gør det også meget nemt at linke mellem parceller. Den ændring, der anvendes i et plot, vil blive anvendt på et andet plot med en lignende variabel.
For eksempel, hvis vi opretter 3 grafer side om side og ønsker at observere deres forhold, kan vi bruge forbundet børstning
ColumnDataSource
gør det muligt at dele dataene mellem graferne. Når vi anvender ændringen på et plot, ændres de andre plots således også tilsvarende.
Konsekvenser
Da Bokeh er et bibliotek, der til en vis grad har en grænseflade på mellemniveau, kræver det ofte mindre kode end Matplotlib, men det kræver mere kode at producere det samme plot som Seaborn, Altair eller Plotly.
For eksempel, for at skabe det samme tælleplot ved hjælp af titanic data, udover behovet for at transformere dataene på forhånd, skal vi også indstille bredden på søjlen og farven, hvis vi ønsker, at grafen skal se pæn ud
Hvis vi ikke tilføjede bredde til søjlediagrammet, ville grafen se sådan ud
Sådan, skal vi manuelt justere dimensionerne for at gøre plottet pænere
Hvis du ønsker at skabe et flot søjleplot på mindre kode, kan dette være ulempen ved Bokeh sammenlignet med andre biblioteker
Takeaway: Bokeh er det eneste bibliotek, hvis grænseflade spænder fra lav til høj, hvilket gør det nemt at fremstille både alsidig og elegant grafik. Dette har dog den pris, at det generelt kræver mere kode for Bokeh at skabe graferne med samme kvalitet som andre biblioteker.
Folium
Folium gør det nemt at visualisere data på et interaktivt bladkort. Biblioteket har en række indbyggede tilesets fra OpenStreetMap, Mapbox og Stamen
Pros
- Nemt at oprette et kort med markører
Selv om Plotly, Altair, og Bokeh også gør det muligt for os at oprette kort, bruger Folium et åbent gadekort for at give dig en tættere følelse af et Google Map med et minimum af kode
Husk, hvordan vi oprettede kortet for at visualisere Github-brugernes placering ved hjælp af Plotly? Vi kunne få kortet til at se endnu flottere ud med Folium
Den oprindelige placering i Brooklyn, NY. Zoom ud for at se andre steder på kortet. Med nogle kodelinjer har vi skabt et rigtigt kort, der viser brugernes placering.
2. Tilføj potentiel placering
Hvis vi ønsker at tilføje andre brugeres potentielle placeringer, gør Folium det nemt ved at give brugerne mulighed for at tilføje markører
Klik på kortet for at se en ny placering genereret lige der, hvor du klikker.
3. Plugins
Folium har en række plugins, som du kan bruge sammen med dit kort – herunder et plugin til Altair. Hvad hvis vi ønsker at se et varmekort over de samlede stjerner for Github-brugere i verden for at identificere, hvor der er et højt antal top Github-brugere med et højt antal af de samlede stjerner? Heatmap i Folium plugins giver dig mulighed for at gøre netop dette.
Zoom ud for at se det komplette billede af heatmappet.
Takeaway: Folium giver dig mulighed for at oprette et interaktivt kort med få kodelinjer. Det giver dig tæt på oplevelsen af et Google Map.
Konklusion
Godt tillykke! Du har netop lært om seks forskellige visualiseringsværktøjer til din visualisering. Jeg håber, at denne artikel har givet dig en fornemmelse af, hvad hvert bibliotek gør, og hvornår du skal bruge hvad. Hvis du forstår de vigtigste funktioner i hvert bibliotek, vil det gøre det hurtigere for dig at trække det rigtige bibliotek frem, når du har brug for det.
Hvis du stadig er i tvivl om, hvilket bibliotek du skal bruge til dine data, skal du bare vælge et, som du finder godt nok. Hvis koden så er for lang, eller hvis grafen ikke bliver så god, som du forestiller dig, skal du bare prøve med et andet bibliotek!
Føl dig fri til at fork og lege med koden til denne artikel i denne Github-repo.
Jeg kan godt lide at skrive om grundlæggende datavidenskabsbegreber og lege med forskellige algoritmer og datavidenskabsværktøjer. Du kan få kontakt med mig på LinkedIn og Twitter.
Stjern dette repo, hvis du vil se koderne til alle de artikler, jeg har skrevet. Følg mig på Medium for at holde dig opdateret med mine seneste datavidenskabsartikler som disse: