In [1]:
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import numpy as py
#import scipy
# Make the graphs a bit prettier, and bigger
#pd.set_option('display.mpl_style', 'default')
#plt.rcParams['figure.figsize'] = (15, 5)
# This is necessary to show lots of columns in pandas 0.12.
# Not necessary in pandas 0.13.
pd.set_option('display.width', 5000)
pd.set_option('display.max_columns', 60)
Najprej sem spletne strani FIS pobrala podatke o smučarjih in njihovih id številkah na spletišču FIS. Id-je sem potrebovala za sestavljanje url naslovov posameznih športnikov. Zbrane podatke sem nato spravila v datoteko smucarji.csv.
In [2]:
pot="C://Users/Ziva/Documents/AlpineSkiing/csv-datoteke/smucarji.csv"
smucarji = pd.read_csv(pot, parse_dates=['rojstvo'])
Tabela izgleda tako:
In [3]:
smucarji[:10]
Out[3]:
Nato sem za vsakega od tekmovalcev s strani z njegovimi rezultati (npr. Eva-Maria Brem) pobrala podatke o vsaki tekmi: datum, prizorišče, disciplino, uvrstitev, zaostanek.
In [4]:
pot_brem = "C:/Users/Ziva/Documents/AlpineSkiing/csv-datoteke/BREM Eva-Maria.csv"
brem = pd.read_csv(pot_brem, parse_dates=['datum'])
Tabela za Evo-Mario Brem:
In [5]:
brem[:15]
Out[5]:
V kasnejši analizi se pojavi težava, da so podatki o uvrstitvi lahko številke ali besedilo (npr. DNQ1, DNF1, DSQ2 in DNS1), ki označuje odstope, diskvalifikacije in podobne anomalije. Zato tabeli dodamo nov stolpec mesto1, kjer besedilne podatke identificiramo z 0. Tu nas ne zanima, zakaj tekmovalka ni osvojila točk.
In [6]:
def pretvori(bes):
if bes in ['DNQ1', 'DNF1', 'DSQ2', 'DNS1','DNF2']:
return 0
else:
return int(bes)
In [7]:
brem['mesto1'] = brem['mesto'].map(pretvori)
brem[:15]
Out[7]:
V 2. in 13. vrstici je vidna razlika med stolpcema 'mesto' in 'mesto1'.
Če bomo želeli delati analizo skupnega seštevka, moramo pretvoriti mesto tudi v točke. Definiramo seznam 'tocke', v katerega na i-to mesto (i teče od 0 do 30) zapišemo, koliko točk tekmovalka dobi za osvojeno i-to mesto.
In [44]:
tocke=[0,100,80,60,50,45,40,36,32,29,26,24,22,20,18,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
def pretvori_2(bes):
if bes in ["DNQ1", "DNF1", "DSQ2", "DNS1", "DNF2"]:
return 0
else:
if int(bes) > 30:
return 0
else:
return tocke[int(bes)];
Opomba: mesto1 in tocke bi bilo bolj smiselno dodati v prvotni csv!!!!
In [42]:
brem['tocke'] = brem['mesto'].map(pretvori_2)
brem[:15]
Out[42]:
Pa si poglejmo, v katerih disciplinah najpogosteje tekmuje Eva-Maria Brem:
In [8]:
brem['disciplina'].value_counts()
Out[8]:
Eva-Maria Brem je torej najpogosteje tekmuje v slalomu in veleslalomu. Ponazorimo to še z grafom:
In [9]:
brem['disciplina'].value_counts().plot(kind='pie', figsize=(6,6))
Out[9]:
Čeprav najpogosteje tekmuje v slalomu in veleslalomu, pa to nista nujno disciplini, v katerih dosega najboljše rezultate. Najprej si poglejmo, kakšni so njeni rezultati v slalomu in nato še veleslalomu:
In [10]:
slalom = brem['disciplina'] == 'Slalom'
brem[slalom][:15]
Out[10]:
In [11]:
veleslalom = brem['disciplina'] == 'Giant Slalom'
brem[veleslalom][:15]
Out[11]:
Iz tabel je razvidno, da so njeni razultati v slalomu v vačini na repu trideseterice, med tem ko se v veleslalomu uvršča med 5 najboljših. To se še lepše vidi z grafov:
In [12]:
brem[slalom]['mesto1'].value_counts().plot(kind='bar')
Out[12]:
In [13]:
urejen = brem[veleslalom].sort_values(['mesto1'], ascending=True)
#urejen['mesto1'].value_counts()
#urejen['mesto1'].value_counts().plot(kind='bar')
#ne more uredit, ker DNQ1, DNF1, DSQ2 in DNS1 niso legit uvrstitve.
In [14]:
brem[veleslalom]['mesto1'].value_counts().plot(kind='bar')
Out[14]:
Zanima nas, koliko je smučarjev določene narodnosti. Najprej jih preštejmo, nato pa ponazorimo to z grafom:
In [24]:
smucarji['drzava'].value_counts()
Out[24]:
In [45]:
smucarji['drzava'].value_counts().plot(kind='pie', figsize = (6,6))
Out[45]:
Popravi graf, da najmanjše lepo prikaže!!!
Najprej si oglejmo, katere znamke smuči so najpogostejše v svetovnem pokalu:
In [15]:
smucarji['smuci'].value_counts()
Out[15]:
In [16]:
smucarji['smuci'].value_counts().plot(kind='pie', figsize=(6,6))
Out[16]:
Poglejmo, predstavniki katerih držav uporabljajo smuči Head (in koliko jih je):
To do: naredi graf, ki bo prikazal to za vse smuči.
In [31]:
smucarji[smucarji['smuci'] == "Head"]['drzava'].value_counts().plot(kind='bar')
Out[31]:
Podobno si lahko pogledamo, katerim proizvajalcem smuči najbolj zaupajo smučarji iz avstrije:
To do: naredi tak graf, ki bo prikazal to za vse države!
In [34]:
smucarji[smucarji['drzava'] == "AUT"]['smuci'].value_counts().plot(kind='bar')
Out[34]:
In [ ]: