Gegevenswetenschap - Gegevensvoorbereiding


Voordat gegevens worden geanalyseerd, moet een datawetenschapper de gegevens extraheren en schoon en waardevol maken.


Gegevens extraheren en lezen met Panda's

Voordat gegevens kunnen worden geanalyseerd, moeten deze worden geïmporteerd/geëxtraheerd.

In het onderstaande voorbeeld laten we u zien hoe u gegevens importeert met Panda's in Python.

We gebruiken de read_csv()functie om een ​​CSV-bestand met de gezondheidsgegevens te importeren:

Voorbeeld

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

Voorbeeld uitgelegd

  • Importeer de Panda's-bibliotheek
  • Noem het dataframe als health_data.
  • header=0 betekent dat de headers voor de variabelenamen in de eerste rij staan ​​(merk op dat 0 de eerste rij in Python betekent)
  • sep=","betekent dat "," wordt gebruikt als scheidingsteken tussen de waarden. Dit komt omdat we het bestandstype .csv gebruiken (door komma's gescheiden waarden)

Tip: Als je een groot CSV-bestand hebt, kun je de head()functie gebruiken om alleen de bovenste 5 rijen weer te geven:

Voorbeeld

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

Gegevens opschonen

Bekijk de geïmporteerde gegevens. Zoals u kunt zien, zijn de gegevens "vuil" met foutieve of niet-geregistreerde waarden:

Vuile gegevens
  • Er zijn enkele lege velden
  • Gemiddelde puls van 9 000 is niet mogelijk
  • 9 000 wordt als niet-numeriek behandeld vanwege het spatiescheidingsteken
  • Eén waarneming van de maximale puls wordt aangeduid als "AF", wat niet logisch is

We moeten de gegevens dus opschonen om de analyse uit te voeren.


Lege rijen verwijderen

We zien dat de niet-numerieke waarden (9 000 en AF) in dezelfde rijen staan ​​met ontbrekende waarden.

Oplossing: we kunnen de rijen met ontbrekende waarnemingen verwijderen om dit probleem op te lossen.

Wanneer we een dataset laden met Panda's, worden alle lege cellen automatisch geconverteerd naar "NaN" -waarden.

Dus het verwijderen van de NaN-cellen geeft ons een schone dataset die kan worden geanalyseerd.

We kunnen de dropna()functie gebruiken om de NaN's te verwijderen. axis=0 betekent dat we alle rijen met een NaN-waarde willen verwijderen:

Voorbeeld

health_data.dropna(axis=0,inplace=True)

print(health_data)

Het resultaat is een dataset zonder NaN-rijen:

Opgeschoonde gegevens

Gegevenscategorieën

Om gegevens te analyseren, moeten we ook weten met welke soorten gegevens we te maken hebben.

Gegevens kunnen worden onderverdeeld in drie hoofdcategorieën:

  1. Numeriek - Bevat numerieke waarden. Kan worden onderverdeeld in twee categorieën:
    • Discreet: getallen worden als "geheel" geteld. Voorbeeld: u kunt geen 2,5 sessies hebben getraind, het is 2 of 3
    • Continu: getallen kunnen oneindig nauwkeurig zijn. U kunt bijvoorbeeld 7 uur, 30 minuten en 20 seconden slapen, of 7.533 uur
  2. Categorisch - Bevat waarden die niet tegen elkaar kunnen worden gemeten. Voorbeeld: Een kleur of een soort training
  3. Ordinaal - Bevat categorische gegevens die tegen elkaar kunnen worden afgemeten. Voorbeeld: Schoolcijfers waar A beter is dan B enzovoort

Door het type gegevens te kennen, weet u welke techniek u moet gebruiken bij het analyseren ervan.


Gegevenstypen

We kunnen de info()functie gebruiken om de gegevenstypen binnen onze dataset weer te geven: 

Voorbeeld

print(health_data.info())

Resultaat:

Datatype float en object

We zien dat deze dataset twee verschillende soorten data heeft:

  • Float64
  • Object

We kunnen hier geen objecten gebruiken om te berekenen en analyses uit te voeren. We moeten het type object converteren naar float64 (float64 is een getal met een decimaalteken in Python).

We kunnen de astype()functie gebruiken om de gegevens om te zetten in float64.

In het volgende voorbeeld worden "Average_Pulse" en "Max_Pulse" geconverteerd naar het gegevenstype float64 (de andere variabelen zijn al van het gegevenstype float64):

Voorbeeld

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

Resultaat:

Gegevenstype zweven

Nu heeft de dataset alleen float64-gegevenstypen.


Analyseer de gegevens

Wanneer we de dataset hebben opgeschoond, kunnen we beginnen met het analyseren van de data.

We kunnen de describe()functie in Python gebruiken om gegevens samen te vatten:

Voorbeeld

print(health_data.describe())

Resultaat:

  Looptijd Gemiddelde_Puls Max_Pulse Calorie_Burnage Uren_Werk Uren_Slaap
Graaf 10.0 10.0 10.0 10.0 10.0 10.0
Gemeen 51.0 102.5 137,0 285.0 6.6 7,5
Soa 10.49 15.4 11.35 30.28 3.63 0,53
min 30.0 80,0 120.0 240.0 0.0 7.0
25% 45.0 91,25 130.0 262.5 7.0 7.0
50% 52.5 102.5 140.0 285.0 8.0 7,5
75% 60,0 113,75 145.0 307,5 8.0 8.0
Max 60,0 125,0 150,0 330.0 10.0 8.0
  • Tellen - Telt het aantal waarnemingen
  • Gemiddelde - De gemiddelde waarde
  • Std - Standaarddeviatie (uitgelegd in het hoofdstuk statistieken)
  • Min - De laagste waarde
  • 25% , 50% en 75% zijn percentielen (uitgelegd in het hoofdstuk statistiek)
  • Max - De hoogste waarde