Dataframe

Jotta voit itse harjoitella dataframen käyttöä, tarvitset Anacondan ja sen mukana asentuvan Jupyter notebookin.

Tämän artikkelin ohjelmakoodin ja tulosteet löydät GitHubista:

https://github.com/taanila/tilastoapu/blob/master/df1.ipynb

Jos kopioit koodia itsellesi, niin kannattaa käyttää GitHubia. Tästä artikkelista kopioidut koodit eivät välttämättä toimi oikein.

Pandas-kirjasto

Excelissä ja tilasto-ohjelmissa (SPSS, SAS, Stata, Minitab,…) analysoitava data tallennetaan taulukkomuotoon. Vastaava tietorakenne Pythonissa on nimeltään dataframe. Dataframe ei sisälly Pythonin standardikirjastoon. Dataframe on määritelty pandas-ohjelmakirjastossa. Tämän vuoksi dataframea hyödyntävissä ohjelmissa täytyy ottaa pandas-kirjasto käyttöön:

import pandas as pd

Vakiintuneen tavan mukaisesti käytän pandas sijasta lyhennettä pd.

Tässä artikkelissa tutustut alustavasti dataframen rakenteeseen ja joihinkin toiminallisuuksiin.

Luo dataframe

Seuraavassa luon dataframen Pythonin dictionary (sanakirja) -tyyppisestä tietorakenteesta:

raw_data = {'tuote':['muikkukukko', 'lanttukukko','lihalörtsy', 
   'kasvislörtsy'], 'varasto':[8, 10, 5, 7], 
   'hinta':[15, 12, 3, 3]}

Dictionaryn voit ajatella tietorakenteena, jossa on otsikoita (tuote, varasto, hinta) ja otsikoihin liittyvää dataa. Esimerkiksi tuote-otsikkoon liittyvä data on muutamista perinneruuista koostuva lista.

Luon raw_data -dictionarysta dataframen pd.DataFrame-toiminnolla. Tässä esimerkissä annan dataframelle nimeksi df. Ilman columns-lisämääritystä sarakkeet järjestyisivät otsikoiden mukaiseen aakkosjärjestykseen.

df = pd.DataFrame(raw_data, columns = ['tuote',  'varasto',  
   'hinta'])
df

Komennolla df voin tulostaa dataframen Jupyter notebookiin:

df1

Komennolla df.shape selviää, että dataframen koko on 4 riviä ja 3 saraketta. Näiden neljän rivin ja kolmen sarakkeen lisäksi dataframe on indeksoitu:

  • rivi-indeksit ovat 0, 1, 2, 3. Tämä selviää myös komennolla df.index
  • sarakeindeksin arvot ovat tuote, varasto, hinta. Tämä selviää myös komennolla df.columns. Sarakkeisiin voin viitata myös indekseillä 0, 1, 2.

Viittaukset dataframen soluihin

Indeksien avulla voin viitata dataframen soluihin iloc-funktion avulla. Esimerkiksi df.iloc[1, 2] antaa tulokseksi lanttukukkojen hinnan 12 ja df.iloc[2, :] antaa tulokseksi kaikki lihalörtsyyn liittyvät tiedot.

Huomasithan, että dataframe-määrittelyssä määrittelin columns-indeksin arvot. Vastaavasti voin myös määritellä rivi-indeksille arvot. Seuraavassa määrittelen tuotteiden nimet rivi-indeksin arvoiksi:

df.index = df['tuote']
df

Tuloksena dataframe näyttää seuraavalta:

df2

Voin viitata dataframen soluihin indeksin arvoja käyttäen loc-funktiolla. Esimerkiksi

  • df.loc[’lihalörtsy’] näyttää lihalörtsyyn liittyvät tiedot,
  • df.loc[’lihalörtsy’, ’hinta’] näyttää lihalörtsyn hinnan 3,
  • df.loc[’muikkukukko’ : ’lanttukukko’, ’hinta’] näyttää muikkukukon ja lanttukukon hinnat.

Dataframe laskentaa

Voin laskea dataframeen uuden sarakkeen aikaisempien sarakkeiden perusteella: Esimerkiksi df[’arvo’] = df[’varasto’] * df[’hinta’] lisää dataframeen uuden sarakkeen:

df3

Voin kohdistaa Pythonin funktioita suoraan koko sarakkeeseen tai jopa koko dataframeen. Esimerkiksi df[’arvo’].sum() antaa tulokseksi arvojen summan 276. Kukkojen arvon saan selville komennolla

df.loc['muikkukukko':'lanttukukko', 'arvo'].sum()

Seuraavassa artikkelissani Avaa data dataframeen opit avaamaan Excel- ja csv-muotoisia datoja dataframeen.

Mainokset