<jupyter_start><jupyter_text>Analiza vin Projektna naloga za Programiranje 1 Vsi podatki v analizi so zajeti iz [winelibrary](https://winelibrary.com/search?color[]=Red&color[]=White&color[]=Rose&page=1&size[]=750ML). Seveda notri niso vsebovana vsa vina iz celega sveta, zato so lahko nekateri podatki precej pomankljivi ( morda vina nekatere države sploh niso vsebovana ali pa so vsebovana le poceni/draga vina in so zato povprečja nekoliko napačna).  Predpriprava<jupyter_code>import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

vina = pd.read_csv('obdelani-podatki/vina.csv', index_col='id')
okusi = pd.read_csv('obdelani-podatki/okusi.csv')
vonji = pd.read_csv('obdelani-podatki/vonji.csv')

pd.options.display.max_rows = 20

#pandas spreminja tipe objektov, mi pa vseeno želimo, da bojo letniki tipa int, nepodani letniki pa bodo označeni z 0
vina['letnik'] = vina['letnik'].fillna(0).astype('int')

vina<jupyter_output><empty_output><jupyter_text>Najdražja in najcenejša vina Najprej si za pregled oglejmo nekaj najdražjih in nekaj najcenejših vin.<jupyter_code>#najdražjih 5 vin
vina.sort_values('cena', ascending = False).head(5)<jupyter_output><empty_output><jupyter_text>Iz tabele vidimo, da je vseh pet najdražjih vin rdečih iz United States, natančneje iz Californije.Vsa so zaprta z plutnim zamaškom in vsaj nekoliko starana. Najdražje vino stane 1999,99€.<jupyter_code>#najcenejših 5 vin
vina.sort_values('cena').head(5)<jupyter_output><empty_output><jupyter_text>Vseh pet najcenejših vin je zaprtih vijačno, kar ne preseneča, saj je ta način zaprtja precej ugodnejši za proizvajalca, vino pa ima krajšo obstojnost. V nadaljevanju bomo preverili, ali to velja tudi v povpračju, torej ali so vina zaprta vijačno v splošnem cenejša od tistih s plutnim zamaškom.Zanimivo je, da tako najcenejše kot tudi najdražje vino prihaja iz United States ter tudi to, da tri izmed petih nimajo podanega letnika, kar nakazuje, da so cenejša vina lahko mešanica več različnih letnikov. Poglejmo si povprečje cen vin v posameznih državah. Pričakujemo, da bodo najdražja v najbol vinorodnih deželah (Francija, Amerika, Anglija).<jupyter_code>vina_po_drzavah = vina.groupby('drzava')
povprecja_cen_po_drzavah = vina_po_drzavah['cena'].mean().round(2)
povprecja_cen_po_drzavah[povprecja_cen_po_drzavah.index].sort_values().plot(kind = 'bar', title = 'Graf povprečnih cen vin po državah')<jupyter_output><empty_output><jupyter_text>Iz grafa je razvidno, da je poleg pričakovanih držav v samem vrhu tudi Lebanon.  Katera barva vina je v povprečju najdražja? Splošno znano so rdeča vina precej dražja, saj so v večini narejena za staranje, so zahtevnejša za pridelavo in ob koncu bogatejša.Poleg tega domnavam, da bodo roseji zaradi načina pridelave najcenejši, še vedno pa precej blizu belih vin.Preverimo naše domneve iz zbranih podatkov.<jupyter_code>#povprečje cen vin po barvah
vina_po_barvah = vina.groupby('barva')
povprecja_po_barvah = vina_po_barvah.cena.mean().round(2)
povprecja_po_barvah
plt.figure(figsize = (7,5))
ax = plt.gca()
ax.set(ylabel = 'Cena', title = 'Graf povprečja cen glede na barvo vina')
graf = plt.bar(povprecja_po_barvah.index, povprecja_po_barvah)
graf[0].set_color('darkred')
graf[1].set_color('mistyrose')
graf[2].set_color('gold')<jupyter_output><empty_output><jupyter_text>Graf očitno potrdi domnevo. Preseneča pa, da so roseji kar precej cenejši od belih vin.  Katere vino ima najvišjo vsebovanost alkohola? Poglejmo si, katero vino ima najvišjo vsebovanost alkohola.Domnevam, da bo to vino rdeče.<jupyter_code>vina[vina.alkohol == vina.alkohol.max()]<jupyter_output><empty_output><jupyter_text>Res je vino z najvišjo vsebovanostjo alkohola rdeče. Zanimivo se mi zdi, da je to vino iz Portugalske. Poglejmo si, ali ima tudi v povprečju Portugalska vina z največjo vsebovanostjo alkohola.<jupyter_code>povprecja_alkohola_po_drzavah = vina_po_drzavah['alkohol'].mean().round(2)
povprecja_alkohola_po_drzavah[povprecja_alkohola_po_drzavah.index].sort_values().plot(
    kind = 'bar', 
    title = 'Graf povprečne vsebovanosti alkohola po državah')<jupyter_output><empty_output><jupyter_text>Izgleda, da je povprečna vsbovanost alkohola precej enaka po vseh državah. Največjo vsebovanost alkohola ima Armenia, najmanjšo pa Belorusija.  Ali je vsebovanost alkohola povezana s ceno? Poglejmo si, ali je vsebovanost alkohola sploh kako povezana s ceno.<jupyter_code>plt.figure(figsize = (15,5))
plt.ylim(0,vina['cena'].max() + 100)
ax = plt.gca()
ax.grid()
ax.set(xlabel = 'Alkohol', ylabel = 'Cena', title = 'Graf cene v odvisnosti od alkohola vina')
plt.xticks(np.arange(vina.alkohol.min(), vina.alkohol.max(), step = 1))
plt.scatter(vina.alkohol, vina.cena)<jupyter_output><empty_output><jupyter_text>Na grafu opazimo, da ima največ vin okrog 13%-15% alkohola, kjer se nahajajo tudi najdražja vina. Torej so najdražja vina v okolici standardnih vrednosti alkohola (morda nekoliko nad standardom), v obeh ekstremih pa so vina najcenejša.  Kako sta okus in vonj povezana z barvo in zaprtjem? Za pregled pogostosti vonjev in okusev v odvisnosti od barve ter zaprtja najprej združimo naše tabele podatkov.<jupyter_code>vonji_in_okusi = pd.merge(vina[['ime','barva', 'zaprtje']], pd.merge(vonji, okusi), 
                          left_on = 'id' ,right_on = 'vino')
vonji_in_okusi<jupyter_output><empty_output><jupyter_text>Poglejmo si 10 najpogostejših vonjev in okusov v vinih.<jupyter_code>#kateri vonji se najpogosteje pojavljajo v vinih
najpogostejši_vonji = vonji_in_okusi.groupby('vonj').count().sort_values('vino').tail(10)
najpogostejši_vonji['vino']
#kateri okusi se najpogosteje pojavljajo v vinih
najpogostejši_okusi =  vonji_in_okusi.groupby('okus').count().sort_values('vino').tail(10)
najpogostejši_okusi['vino']<jupyter_output><empty_output><jupyter_text>Kaj pa najpogostejši okusi in vonji v posameznih barvah vin ali pa pri različnih zaprtjih vin?<jupyter_code>#pet najpogostejših vonjev na barvo vina
vonji_po_barvah = {}
for color in ['Red','White', 'Rose']:
    vonji_po_barvah[color] = vonji_in_okusi[vonji_in_okusi.barva == color].groupby('vonj').size().sort_values().tail(5)
vonji_po_barvah 
#pet najpogostejših okusov na barvo vina
okusi_po_barvah = {}
for color in ['Red','White', 'Rose']:
    okusi_po_barvah[color] = vonji_in_okusi[vonji_in_okusi.barva == color].groupby('okus').size().sort_values().tail(5)
okusi_po_barvah 
#pet najpogostejših vonjev na način zaprtja
vonji_po_zaprtju = {}
for zaprtje in ['Cork','Screwtop']:
    vonji_po_zaprtju[zaprtje] = vonji_in_okusi[vonji_in_okusi.zaprtje == zaprtje].groupby('vonj').size().sort_values().tail(5)
vonji_po_zaprtju
#pet najpogostejših okusov na način zaprtja
okusi_po_zaprtju = {}
for zaprtje in ['Cork','Screwtop']:
    okusi_po_zaprtju[zaprtje] = vonji_in_okusi[vonji_in_okusi.zaprtje == zaprtje].groupby('okus').size().sort_values().tail(5)
okusi_po_zaprtju<jupyter_output><empty_output><jupyter_text>Okusi in vonji vin zaprtih z zavitjem so nekoliko bolj sveži in kiselkasti, kar nakazuje, da so to mlada bela vina, za katere se v resnici tudi uporablja tako zaprtje.  Ali so letniki vin povezani s ceno vina?  Domnevamo, da bodo starejša rdeča vina dražja, saj se z njihovim staranjem njihova vrednost zvišuje. Pričakujem tudi nekaj odstopanj, saj niso vsa vina narejena za staranje in se jim tako lahko vrednost ne zvišuje.<jupyter_code>#povprečja cen po letnikih vina
#ker so neznani letniki označeni z 0, jih moramo odstraniti iz analize
vina_s_pravimi_letniki = vina[vina.letnik > 0]
vina_po_letih = vina_s_pravimi_letniki.groupby('letnik')
povprecja_po_letih = vina_po_letih['cena'].mean().round(2)

plt.figure(figsize = (15,4))
plt.ylim(0,povprecja_po_letih.max() +100)
ax = plt.gca()
ax.grid()
ax.set(xlabel = 'Letnik', ylabel = 'Cena', title = 'Graf cene v odvisnosti od letnika vina')
plt.scatter(povprecja_po_letih.index, povprecja_po_letih)
plt.plot(povprecja_po_letih.index, povprecja_po_letih)<jupyter_output><empty_output><jupyter_text>Za nekoliko lepšo predstavo je graf povezan s črto. V splošnem z izjemo odstopanj graf z starejšimi letniki res narašča, kar je še posebaj očitno zadnjih 10 let, saj imamo tu tudi veliko več podatkov. Opazimo tudi nekaj velikih odstopanj, kjer je preprosto lahko šlo za slab oziroma dober letnik.  Ali je cena povezana z oceno vina? V splošnem naj bi seveda bila cena povezana z oceno vina. Vendar menim, da to ne bo popolnoma res. Iz vsakdana vem, da so lahko nekatera veliko dražja vina podobna ali slabša nekaterim cenejšim. Cena je napreč odvisna tudi od proizvedene količine in morda od posebnih dogodkov pripetenih določeni steklenici.<jupyter_code>plt.figure(figsize = (10,3))
plt.scatter(vina.ocena, vina.cena )
plt.ylim(0,vina_z_oceno.cena.max() + 100)
plt.xlim(0,101)
ax = plt.gca()
ax.grid()
ax.set(xlabel = 'Ocena', ylabel = 'Cena', title = 'Graf ocene v odvisnosti od cene vina')<jupyter_output><empty_output><jupyter_text>Kot pričakovano je veliko odstopanj pri najdražjih vinih, vseeno pa zgoščenina (z izpuščenimi odstopanji) nakazuje eksponentno naraščanje cene z oceno. Nekoliko preseneča nekaj vin z zelo nizko oceno. Poglejmo si ta vina.<jupyter_code>vina.sort_values('ocena').head(5)<jupyter_output><empty_output><jupyter_text>Glede na ceno teh vin, menim, da so ta bila ocenjena po drugačni lestvici, zato jih izpustimo in si oglejmo podrobnejši graf v okolici ocen 80-100.<jupyter_code>vina_z_oceno = vina[vina.ocena.notnull()]

plt.figure(figsize = (10,6))
ax = plt.gca()
ax.grid(axis = 'y', color = 'lightgray')
ax.set(xlabel = 'Ocena', ylabel = 'Cena', title = 'Graf ocene v odvisnosti od cene vina')
plt.xlim(79,101)
plt.ylim(0,vina_z_oceno.cena.max() + 100)
plt.xticks(np.arange(79, 101, step = 1))
plt.yticks(np.arange(0, vina_z_oceno.cena.max() + 100, step = 100))
plt.scatter(vina.ocena, vina.cena )<jupyter_output><empty_output><jupyter_text>Opazimo, da morda vseeno narašča nekoliko počasneje kot eksponentna funkcija, vseeno pa hitreje kot linearna.  Ali je cena povezana z zaprtjem vina? Kot smo že pri pregledu na začetku opazili, da imajo najdražja vina plutni zamašek in najcenejša vijačni, domnevam, da bo enako veljalo tudi v povprečju.<jupyter_code>#povprečna cena na zaprtje
vina_po_zaprtju = vina.groupby('zaprtje', as_index=True)
povprecja_po_zaprtju = vina_po_zaprtju['cena'].mean().round(2)
povprecja_po_zaprtju
#koliko sploh imamo vin z nekim zaprtjem
vina_po_zaprtju.size().plot( kind = 'pie', y = None, autopct='%1.1f%%')
ax = plt.gca()
ax.set_ylabel('Zaprtje')<jupyter_output><empty_output><jupyter_text>Iz tortnega diagrama vidimo, da je 86% vin zaprtih s plutnim zamaškom in le 14% z zavitjem.<jupyter_code>#cene glede na zaprtje
vina_z_zaprtjem = vina[vina.zaprtje.notnull()]
vina_z_cork = vina_z_zaprtjem[vina_z_zaprtjem.zaprtje == 'Cork']
vina_s_screwtop = vina_z_zaprtjem[vina_z_zaprtjem.zaprtje == 'Screwtop']


fig, axs = plt.subplots(nrows=1, ncols=2, sharex = True, sharey = True ,figsize=(15,15))
axs[0].boxplot(vina_z_cork['cena'])
axs[0].set_xlabel('cork')
axs[1].boxplot(vina_s_screwtop['cena'])
axs[1].set_xlabel('screwtop')
plt.xticks([])<jupyter_output><empty_output><jupyter_text>Hitro opazimo, da so cene pri plutnem zaprtju veliko večje. Poglejmo si še grafa v svojih razmerjih.<jupyter_code>#graf cen glede na zaprtje vsak z svojo skalno lestvico
fig, axs = plt.subplots(nrows=1, ncols=2, sharex = True ,figsize=(15,15))
axs[0].boxplot(vina_z_cork['cena'])
axs[0].set_xlabel('cork')
axs[1].boxplot(vina_s_screwtop['cena'])
axs[1].set_xlabel('screwtop')
plt.xticks([])<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10176379042019713, 'fraction_numerical': 0.011239840913020924, 'mean_word_length': 6.570026178010472, 'pattern_counts': {'":': 0, '<': 73, '<?xml version=': 0, '>': 74, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '18', 'dir': 'jupyter-structured-clean-dedup', 'id': '460687', 'license': 'MIT', 'n_tokens_mistral': 5255, 'n_tokens_neox': 5137, 'n_words': 1144, 'path': 'Vina.ipynb', 'repo_name': 'ajdalemut/vina', 'size': '11566'}