Datawetenskap - Datavoorbereiding


Voordat data ontleed word, moet 'n datawetenskaplike die data onttrek en dit skoon en waardevol maak.


Onttrek en lees data met pandas

Voordat data ontleed kan word, moet dit ingevoer/onttrek word.

In die voorbeeld hieronder wys ons jou hoe om data in te voer met Pandas in Python.

Ons gebruik die read_csv()funksie om 'n CSV-lêer met die gesondheidsdata in te voer:

Voorbeeld

import pandas as pd

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

print(health_data)

Voorbeeld Verduidelik

  • Voer die Pandas-biblioteek in
  • Noem die dataraam as health_data.
  • header=0beteken dat die opskrifte vir die veranderlike name in die eerste ry gevind moet word (let daarop dat 0 die eerste ry in Python beteken)
  • sep=","beteken dat "," as die skeiding tussen die waardes gebruik word. Dit is omdat ons die lêertipe .csv (kommageskeide waardes) gebruik

Wenk: As jy 'n groot CSV-lêer het, kan jy die head()funksie gebruik om net die boonste 5 rye te wys:

Voorbeeld

import pandas as pd

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

print(health_data.head())

Data skoonmaak

Kyk na die ingevoerde data. Soos u kan sien, is die data "vuil" met verkeerde of ongeregistreerde waardes:

Vuil data
  • Daar is 'n paar leë velde
  • Gemiddelde polsslag van 9 000 is nie moontlik nie
  • 9 000 sal as nie-numeries hanteer word as gevolg van die spasieskeier
  • Een waarneming van maksimum pols word aangedui as "AF", wat nie sin maak nie

Dus, ons moet die data skoonmaak om die analise uit te voer.


Verwyder leë rye

Ons sien dat die nie-numeriese waardes (9 000 en AF) in dieselfde rye is met ontbrekende waardes.

Oplossing: Ons kan die rye met ontbrekende waarnemings verwyder om hierdie probleem op te los.

Wanneer ons 'n datastel met Pandas laai, word alle leë selle outomaties in "NaN"-waardes omgeskakel.

Dus, die verwydering van die NaN-selle gee ons 'n skoon datastel wat ontleed kan word.

Ons kan die dropna()funksie gebruik om die NaNs te verwyder. as=0 beteken dat ons alle rye wat 'n NaN-waarde het wil verwyder:

Voorbeeld

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

print(health_data)

Die resultaat is 'n datastel sonder NaN-rye:

Geskoongemaakte data

Datakategorieë

Om data te ontleed, moet ons ook die tipe data ken waarmee ons te doen het.

Data kan in drie hoofkategorieë verdeel word:

  1. Numeries - Bevat numeriese waardes. Kan in twee kategorieë verdeel word:
    • Diskrete: Getalle word as "heel" getel. Voorbeeld: Jy kan nie 2,5 sessies geoefen het nie, dit is óf 2 óf 3
    • Deurlopend: Getalle kan van oneindige akkuraatheid wees. Byvoorbeeld, jy kan vir 7 uur, 30 minute en 20 sekondes slaap, of 7,533 uur
  2. Kategories - Bevat waardes wat nie aan mekaar gemeet kan word nie. Voorbeeld: 'n Kleur of 'n tipe opleiding
  3. Ordinaal - Bevat kategoriese data wat aan mekaar gemeet kan word. Voorbeeld: Skool grade waar A beter is as B en so aan

Deur die tipe data te ken, sal jy kan weet watter tegniek om te gebruik wanneer jy dit ontleed.


Datatipes

Ons kan die info()funksie gebruik om die datatipes binne ons datastel te lys: 

Voorbeeld

print(health_data.info())

Resultaat:

Datatipe dryf en voorwerp

Ons sien dat hierdie datastel twee verskillende tipes data het:

  • Float64
  • Voorwerp

Ons kan nie voorwerpe gebruik om hier te bereken en analise uit te voer nie. Ons moet die tipe voorwerp omskakel na float64 (float64 is 'n getal met 'n desimale in Python).

Ons kan die astype()funksie gebruik om die data in float64 om te skakel.

Die volgende voorbeeld skakel "Average_Pulse" en "Max_Pulse" om na datatipe float64 (die ander veranderlikes is reeds van datatipe 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:

Datatipe dryf

Nou het die datastel slegs float64-datatipes.


Ontleed die data

Wanneer ons die datastel skoongemaak het, kan ons begin om die data te ontleed.

Ons kan die describe()funksie in Python gebruik om data op te som:

Voorbeeld

print(health_data.describe())

Resultaat:

  Duur Gemiddeld_Pulse Max_Pulse Kalorie_verbranding Ure_Werk Ure_Slaap
Tel 10.0 10.0 10.0 10.0 10.0 10.0
Beteken 51,0 102,5 137,0 285,0 6.6 7.5
Std 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
Maks 60,0 125,0 150,0 330,0 10.0 8.0
  • Tel - Tel die aantal waarnemings
  • Gemiddeld - Die gemiddelde waarde
  • Std - Standaardafwyking (verduidelik in die statistiek hoofstuk)
  • Min - Die laagste waarde
  • 25% , 50% en 75% is persentiele (verduidelik in die statistiek hoofstuk)
  • Max - Die hoogste waarde