Een vriendelijke inleiding tot gegevensanalyse in Python

Door de jaren heen is het gebruik van python voor datawetenschap ongelooflijk gegroeid en blijft het dagelijks groeien.

Datawetenschap is een enorm studiegebied met veel subgebieden, waarvan data-analyse ongetwijfeld een van de belangrijkste van al deze gebieden is, en ongeacht iemands vaardigheidsniveau in datawetenschap, is het steeds belangrijker geworden om te begrijpen of heb er tenminste een basiskennis van.

Wat is data-analyse?

Gegevensanalyse is het opschonen en transformeren van een grote hoeveelheid ongestructureerde of ongeorganiseerde gegevens, met als doel belangrijke inzichten en informatie over deze gegevens te genereren die kunnen helpen bij het nemen van weloverwogen beslissingen.

Er zijn verschillende tools die worden gebruikt voor data-analyse, Python, Microsoft Excel, Tableau, SaS, enz. Maar in dit artikel zouden we ons concentreren op hoe data-analyse wordt uitgevoerd in Python. Meer specifiek, hoe het moet met een python-bibliotheek genaamd Panda’s.

Wat is Panda’s?

Pandas is een open-source Python-bibliotheek die wordt gebruikt voor gegevensmanipulatie en ruzie. Het is snel en zeer efficiënt en heeft tools om verschillende soorten gegevens in het geheugen te laden. Het kan worden gebruikt om verschillende vormen van gegevens opnieuw vorm te geven, te labelen, te indexeren of zelfs te groeperen.

Gegevensstructuren in panda’s

Er zijn 3 datastructuren in Panda’s, namelijk;

De beste manier om de drie van elkaar te onderscheiden, is door te zien dat de ene meerdere stapels van de andere bevat. Een DataFrame is dus een stapel series en een paneel is een stapel DataFrames.

Een reeks is een eendimensionale array

Een stapel van meerdere reeksen vormt een 2-dimensionaal DataFrame

Een stapel van meerdere dataframes vormt een driedimensionaal paneel

De gegevensstructuur waarmee we het meest zouden werken, is het tweedimensionale DataFrame, dat ook de standaardrepresentatie kan zijn voor sommige datasets die we tegen kunnen komen.

Gegevensanalyse in Panda’s

Voor dit artikel is geen installatie nodig. We zouden een tool gebruiken genaamd samenwerking gemaakt door Google. Het is een online python-omgeving voor data-analyse, machine learning en AI. Het is gewoon een cloudgebaseerd Jupyter-notebook dat vooraf is geïnstalleerd met bijna elk python-pakket dat u als datawetenschapper nodig zou hebben.

Ga nu naar https://colab.research.google.com/notebooks/intro.ipynb. Je zou het onderstaande moeten zien.

Klik in de navigatie linksboven op de bestandsoptie en klik op de optie “nieuwe notebook”. U zou een nieuwe Jupyter-notebookpagina in uw browser zien laden. Het eerste dat we moeten doen, is panda’s importeren in onze werkomgeving. We kunnen dat doen door de volgende code uit te voeren;

import pandas as pd

Voor dit artikel zouden we een dataset voor huizenprijzen gebruiken voor onze data-analyse. De dataset die we zouden gebruiken, kan worden gevonden hier. Het eerste dat we zouden willen doen, is deze dataset in onze omgeving laden.

  Handige tips om boeiende video's te maken en hun succes te meten

Dat kunnen we doen met de volgende code in een nieuwe cel;

df =  pd.read_csv('https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token=6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ', sep=',')

De .read_csv wordt gebruikt wanneer we een CSV-bestand willen lezen en we hebben een sep-eigenschap doorgegeven om aan te geven dat het CSV-bestand door komma’s wordt gescheiden.

We moeten ook opmerken dat ons geladen CSV-bestand is opgeslagen in een variabele df .

We hoeven de functie print() in Jupyter Notebook niet te gebruiken. We kunnen gewoon een variabele naam in onze cel typen en Jupyter Notebook zal het voor ons afdrukken.

We kunnen dat uitproberen door df in een nieuwe cel te typen en het uit te voeren, het zal alle gegevens in onze dataset afdrukken als een DataFrame voor ons.

Maar we willen niet altijd alle gegevens zien, soms willen we alleen de eerste paar gegevens en hun kolomnamen zien. We kunnen de functie df.head() gebruiken om de eerste vijf kolommen af ​​te drukken en df.tail() om de laatste vijf af te drukken. De uitvoer van een van de twee zou er als zodanig uitzien;

We zouden willen controleren op relaties tussen deze verschillende rijen en kolommen met gegevens. De functie .describe() doet precies dit voor ons.

Het uitvoeren van df.describe() geeft de volgende uitvoer;

We kunnen meteen zien dat de .describe() het gemiddelde, de standaarddeviatie, minimum- en maximumwaarden en percentielen geeft van elke kolom in het DataFrame. Dit is vooral erg handig.

We kunnen ook de vorm van ons 2D DataFrame controleren om erachter te komen hoeveel rijen en kolommen het heeft. We kunnen dat doen met behulp van df.shape die een tuple retourneert in het formaat (rijen, kolommen).

We kunnen ook de namen van alle kolommen in ons DataFrame controleren met behulp van df.columns.

Wat als we slechts één kolom willen selecteren en alle gegevens erin willen retourneren? Dit wordt gedaan op een manier die vergelijkbaar is met het doorbladeren van een woordenboek. Typ de volgende code in een nieuwe cel en voer deze uit

df['price ']

De bovenstaande code retourneert de prijskolom, we kunnen verder gaan door deze als zodanig in een nieuwe variabele op te slaan

price = df['price']

Nu kunnen we elke andere actie uitvoeren die kan worden uitgevoerd op een DataFrame op onze prijsvariabele, aangezien het slechts een subset is van een echt DataFrame. We kunnen dingen doen zoals df.head(), df.shape etc..

We kunnen ook meerdere kolommen selecteren door een lijst met kolomnamen als zodanig in df door te geven

data = df[['price ', 'bedrooms']]

Het bovenstaande selecteert kolommen met de namen ‘prijs’ en ‘slaapkamers’, als we data.head() in een nieuwe cel typen, krijgen we het volgende

  Hoe de Google Spreadsheets IF-functie te gebruiken

De bovenstaande manier om kolommen te splitsen, retourneert alle rij-elementen in die kolom. Wat als we een subset van rijen en een subset van kolommen uit onze dataset willen retourneren? Dit kan worden gedaan met behulp van .iloc en wordt geïndexeerd op een manier die vergelijkbaar is met python-lijsten. Dus we kunnen zoiets doen

df.iloc[50: , 3]

Dat geeft de 3e kolom terug van de 50e rij tot het einde. Het is vrij netjes en net hetzelfde als het snijden van lijsten in python.

Laten we nu eens wat heel interessante dingen doen, onze dataset voor huizenprijzen heeft een kolom die ons de prijs van een huis vertelt en een andere kolom vertelt ons het aantal slaapkamers dat een bepaald huis heeft. De huizenprijs is een continue waarde, dus het kan zijn dat we niet twee huizen hebben die dezelfde prijs hebben. Maar het aantal slaapkamers is enigszins discreet, dus we kunnen meerdere huizen hebben met twee, drie, vier slaapkamers, enz.

Wat als we alle huizen met hetzelfde aantal slaapkamers willen hebben en de gemiddelde prijs van elke afzonderlijke slaapkamer willen vinden? Bij panda’s is dat relatief eenvoudig te doen, het kan ook als zodanig;

df.groupby('bedrooms ')['price '].mean()

Het bovenstaande groepeert eerst het DataFrame op de datasets met identiek slaapkamernummer met behulp van de functie df.groupby(), daarna vertellen we het om ons alleen de slaapkamerkolom te geven en gebruiken we de functie .mean() om het gemiddelde van elk huis in de dataset te vinden .

Wat als we bovenstaande willen visualiseren? We zouden willen kunnen controleren hoe de gemiddelde prijs van elk afzonderlijk slaapkamernummer varieert? We hoeven alleen de vorige code als zodanig aan een .plot() functie te koppelen;

df.groupby('bedrooms ')['price '].mean().plot()

We hebben een output die er zo uitziet;

Het bovenstaande toont ons enkele trends in de gegevens. Op de horizontale as hebben we een duidelijk aantal slaapkamers (Let op, meer dan één huis kan X aantal slaapkamers hebben), Op de verticale as hebben we het gemiddelde van de prijzen met betrekking tot het corresponderende aantal slaapkamers op de horizontale as as. We merken nu direct dat huizen met 5 tot 10 slaapkamers een stuk duurder zijn dan huizen met 3 slaapkamers. Het zal ook duidelijk worden dat huizen met 7 of 8 slaapkamers veel meer kosten dan huizen met 15, 20 of zelfs 30 kamers.

Informatie zoals het bovenstaande is de reden waarom data-analyse erg belangrijk is, we zijn in staat om nuttige inzichten uit de data te halen die niet onmiddellijk of vrijwel onmogelijk op te merken zijn zonder analyse.

Ontbrekende gegevens

Laten we aannemen dat ik een enquête invul die uit een reeks vragen bestaat. Ik deel een link naar de enquête met duizenden mensen zodat ze hun feedback kunnen geven. Mijn uiteindelijke doel is om gegevensanalyse op deze gegevens uit te voeren, zodat ik enkele belangrijke inzichten uit de gegevens kan halen.

  Foto's van hoge kwaliteit online verzenden

Nu kan er veel misgaan, sommige landmeters voelen zich misschien ongemakkelijk bij het beantwoorden van sommige van mijn vragen en laten het blanco. Veel mensen zouden hetzelfde kunnen doen voor verschillende onderdelen van mijn enquêtevragen. Dit wordt misschien niet als een probleem beschouwd, maar stel je voor dat ik numerieke gegevens zou verzamelen in mijn enquête en voor een deel van de analyse moest ik de som, het gemiddelde of een andere rekenkundige bewerking krijgen. Verschillende ontbrekende waarden zouden leiden tot veel onnauwkeurigheden in mijn analyse, ik moet een manier vinden om deze ontbrekende waarden te vinden en te vervangen door enkele waarden die er een goede vervanging voor kunnen zijn.

Panda’s bieden ons een functie om ontbrekende waarden te vinden in een DataFrame genaamd isnull().

De functie isnull() kan als zodanig worden gebruikt;

df.isnull()

Dit retourneert een DataFrame van booleans die ons vertelt of de gegevens die daar oorspronkelijk aanwezig waren, echt ontbraken of ten onrechte ontbraken. De uitvoer zou er als zodanig uitzien;

We hebben een manier nodig om al deze ontbrekende waarden te kunnen vervangen, meestal kan de keuze van ontbrekende waarden als nul worden beschouwd. Soms kan het worden genomen als het gemiddelde van alle andere gegevens of misschien het gemiddelde van de gegevens eromheen, afhankelijk van de datawetenschapper en de use-case van de gegevens die worden geanalyseerd.

Om alle ontbrekende waarden in een DataFrame te vullen, gebruiken we de functie .fillna() die als zodanig wordt gebruikt;

df.fillna(0)

In het bovenstaande vullen we alle lege gegevens met de waarde nul. Het kan net zo goed elk ander nummer zijn dat we specificeren.

Het belang van gegevens kan niet genoeg worden benadrukt, het helpt ons om antwoorden rechtstreeks uit onze gegevens zelf te halen!. Data-analyse is volgens hen de nieuwe olie voor digitale economieën.

Alle voorbeelden in dit artikel zijn terug te vinden hier.

Bekijk voor meer informatie Online cursus Data-analyse met Python en Panda’s.

gerelateerde berichten