Andmeanalüüs on tänapäeva ettevõtete ja organisatsioonide jaoks üha olulisem, et teha teadlikke otsuseid ja leida konkurentsieelis. Python on muutunud andmeanalüüsi valdkonnas domineerivaks keeleks tänu oma lihtsale süntaksile ja võimsatele teekidele. Selles artiklis tutvustame peamisi Pythoni tööriistu ja raamistikke, mida kasutatakse andmeanalüüsiks.
Miks just Python andmeanalüüsiks?
Enne kui sukeldume konkreetsete tööriistade juurde, vaatame, miks Python on andmeanalüüsiks nii populaarne:
- Lihtne süntaks – Python on kergesti õpitav ja loetav, mis teeb selle ideaalseks andmeanalüütikutele, kes pole tingimata programmeerimise eksperdid.
- Rikkalik ökosüsteem – Pythoni andmeanalüüsi teekide valik on väga lai ja pidevalt arenev.
- Kogukonna tugi – Suur ja aktiivne kogukond, mis tähendab rohkelt õppematerjale ja abi probleemide lahendamisel.
- Mitmekülgsus – Python ei sobi ainult andmeanalüüsiks, vaid ka veebiarenduseks, masinõppeks ja paljuks muuks, mis võimaldab lihtsalt integreerida andmeanalüüsi teiste süsteemidega.
1. NumPy: Numbrilise analüüsi alustala
NumPy (Numerical Python) on Pythoni andmeanalüüsi ökosüsteemi alustala. See pakub tuge suurtele mitmemõõtmelistele massiividele ja maatriksitele ning sisaldab kõrgtasemel matemaatilisi funktsioone.
Peamised funktsioonid:
- Efektiivsed mitmemõõtmelised massiivid (ndarray)
- Matemaatilised operatsioonid tervetel massiividel
- Lineaaralgebra, Fourier teisendus ja juhuslike arvude generaatorid
Näide NumPy kasutamisest:
import numpy as np
# Loome 2D massiivi
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
# Matemaatilised operatsioonid
print("Summa:", np.sum(arr))
print("Keskmine:", np.mean(arr))
print("Standardhälve:", np.std(arr))
# Massiivi kujundamine
print(arr.reshape(9, 1)) # Muudame massiivi kuju
2. Pandas: Andmete töötlemise ja analüüsi tööriist
Pandas on Pythoni teek, mis pakub andmestruktuure ja operatsioone andmete manipuleerimiseks ja analüüsimiseks. See on eriti kasulik struktureeritud andmete (tabelite) töötlemisel.
Peamised funktsioonid:
- DataFrame ja Series andmestruktuurid
- Andmete lugemine ja kirjutamine erinevatest failiformaatidest (CSV, Excel, SQL jne)
- Andmete puhastamine, filtreerimine, grupeerimine ja ühendamine
- Aegridade analüüs
Näide Pandas kasutamisest:
import pandas as pd
# Loome andmeraami
data = {
'Nimi': ['Jaan', 'Mari', 'Peeter', 'Anna'],
'Vanus': [28, 34, 29, 42],
'Linn': ['Tallinn', 'Tartu', 'Tallinn', 'Pärnu']
}
df = pd.DataFrame(data)
print(df)
# Andmete filtreerimine
tallinn_elanikud = df[df['Linn'] == 'Tallinn']
print("\nTallinna elanikud:")
print(tallinn_elanikud)
# Andmete grupeerimine
grupp = df.groupby('Linn').agg({'Vanus': ['mean', 'count']})
print("\nKeskmine vanus linnade kaupa:")
print(grupp)
3. Matplotlib: Andmete visualiseerimine
Matplotlib on Pythoni standardne visualiseerimisraamistik, mis võimaldab luua staatilisi, interaktiivseid ja animeeritud visualiseeringuid. See on ideaalne andmete illustreerimiseks ja mustritest arusaamiseks.
Peamised funktsioonid:
- Mitmesugused graafikutüübid (joongraafikud, tulpdiagrammid, sektordiagrammid jne)
- Kohandatavus ja paindlikkus keerukate visualiseeringute loomiseks
- Võimalus eksportida graafikuid erinevatesse failiformaatidesse
Näide Matplotlib kasutamisest:
import matplotlib.pyplot as plt
# Lihtsad andmed
x = [1, 2, 3, 4, 5]
y = [10, 25, 15, 30, 20]
# Joongraafik
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b-o', linewidth=2, markersize=8)
plt.title('Lihtne joongraafik')
plt.xlabel('X-telg')
plt.ylabel('Y-telg')
plt.grid(True)
plt.show()
# Tulpdiagramm
plt.figure(figsize=(10, 6))
plt.bar(x, y, color='green', alpha=0.7)
plt.title('Tulpdiagramm')
plt.xlabel('Kategooria')
plt.ylabel('Väärtus')
plt.show()
4. Seaborn: Statistiliste andmete visualiseerimine
Seaborn on Matplotlib-il põhinev kõrgtaseme visualiseerimisraamistik, mis on spetsiaalselt mõeldud statistiliste andmete visualiseerimiseks. See lihtsustab keerukate visualiseeringute loomist.
Peamised funktsioonid:
- Atraktiivsed vaikimisi värviteemad
- Eriteekid statistiliste suhete visualiseerimiseks
- Lihtne kategooriliste andmete visualiseerimine
Näide Seaborn kasutamisest:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Loome näidisandmed
np.random.seed(0)
tips = pd.DataFrame({
'total_bill': np.random.normal(20, 5, 100),
'tip': np.random.normal(3, 1, 100),
'sex': np.random.choice(['Male', 'Female'], 100),
'time': np.random.choice(['Lunch', 'Dinner'], 100),
'size': np.random.choice([1, 2, 3, 4], 100)
})
# Hajuvusdiagramm
plt.figure(figsize=(10, 6))
sns.scatterplot(x='total_bill', y='tip', hue='sex', size='size', data=tips)
plt.title('Jootraha vs Arve suurus')
plt.show()
# Karpdiagramm
plt.figure(figsize=(10, 6))
sns.boxplot(x='time', y='total_bill', hue='sex', data=tips)
plt.title('Arve suurus lõuna vs õhtusöögi ajal')
plt.show()
5. Scikit-learn: Masinõpe andmeanalüüsis
Scikit-learn on Pythoni masinõppe raamistik, mis pakub lihtsaid ja tõhusaid tööriistu andmeanalüüsiks ja ennustamiseks. See on eriti kasulik andmeanalüüsi projektide jaoks, mis hõlmavad ennustuste tegemist.
Peamised funktsioonid:
- Laialdaselt levinud masinõppe algoritmid (regressioon, klassifikatsioon, klasterdamine jne)
- Tööriistad andmete eeltöötluseks ja tunnuste valimiseks
- Mudelite hindamine ja hüperparameetrite häälestamine
Näide Scikit-learn kasutamisest:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np
# Loome näidisandmed
np.random.seed(0)
X = np.random.rand(100, 1) * 10
y = 2 * X.squeeze() + 1 + np.random.randn(100) * 2
# Jagame andmed treening- ja testandmeteks
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Treenime lineaarse regressiooni mudeli
model = LinearRegression()
model.fit(X_train, y_train)
# Teeme ennustused ja hindame mudelit
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Mudeli koefitsient: {model.coef_[0]:.2f}")
print(f"Mudeli vabaliige: {model.intercept_:.2f}")
print(f"Keskmine ruutviga: {mse:.2f}")
6. Jupyter Notebook: Interaktiivne arenduskeskkond
Jupyter Notebook ei ole otseselt andmeanalüüsi tööriist, vaid pigem keskkond, mis võimaldab ühendada koodi, teksti, visualiseeringuid ja valemeid ühte dokumenti. See on andmeanalüüsi projektide jaoks ülimalt kasulik.
Peamised funktsioonid:
- Interaktiivsed koodirakud, mida saab eraldi käivitada
- Markdown-vormingus dokumentatsioon
- Reaalajas visualiseerimine
- Lihtne jagamine ja koostöö
Jupyter Notebook on eriti kasulik andmeanalüüsi tööprotsessi dokumenteerimiseks ja tulemuste esitlemiseks teistele.
Praktiline näide: COVID-19 andmete analüüs
Vaatame lõpetuseks praktilist näidet, kuidas ülaltoodud tööriistu kombineerides saab analüüsida päriselu andmeid. Allpool on lihtsustatud näide COVID-19 andmete analüüsimisest:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Lae COVID-19 andmed (näide)
# Tegelikus elus saaksid need laadida nt Johns Hopkins University repositooriumist
# Siin loome lihtsalt näidisandmed
data = {
'Kuupäev': pd.date_range(start='2021-01-01', periods=90),
'Riik': ['Eesti'] * 30 + ['Soome'] * 30 + ['Läti'] * 30,
'Uued_juhud': [
*np.random.randint(100, 500, 30), # Eesti
*np.random.randint(200, 700, 30), # Soome
*np.random.randint(50, 300, 30) # Läti
]
}
covid_df = pd.DataFrame(data)
# Andmete ettevalmistamine
covid_df['Kuupäev'] = pd.to_datetime(covid_df['Kuupäev'])
covid_df.set_index('Kuupäev', inplace=True)
# Analüüsi uute juhtumite trende riikide kaupa
plt.figure(figsize=(14, 7))
for country in covid_df['Riik'].unique():
country_data = covid_df[covid_df['Riik'] == country]
plt.plot(country_data.index, country_data['Uued_juhud'], label=country)
plt.title('COVID-19 uued juhud riikide kaupa')
plt.xlabel('Kuupäev')
plt.ylabel('Uute juhtude arv')
plt.legend()
plt.grid(True)
plt.show()
# Võrdle riikide keskmisi juhtumeid karpdiagrammiga
plt.figure(figsize=(10, 6))
sns.boxplot(x='Riik', y='Uued_juhud', data=covid_df)
plt.title('COVID-19 juhtude jaotus riikide kaupa')
plt.show()
# Arvuta liikuv keskmine, et siluda andmeid
covid_df['Liikuv_keskmine'] = covid_df.groupby('Riik')['Uued_juhud'].transform(
lambda x: x.rolling(7).mean()
)
# Visualiseeri silutud trend
plt.figure(figsize=(14, 7))
for country in covid_df['Riik'].unique():
country_data = covid_df[covid_df['Riik'] == country]
plt.plot(country_data.index, country_data['Liikuv_keskmine'], label=f"{country} (7-päeva keskmine)")
plt.title('COVID-19 7-päeva liikuv keskmine riikide kaupa')
plt.xlabel('Kuupäev')
plt.ylabel('Uute juhtude arv (7-päeva keskmine)')
plt.legend()
plt.grid(True)
plt.show()
Kokkuvõte
Python pakub rikkalikku ökosüsteemi andmeanalüüsiks, alates andmete töötlemisest ja manipuleerimisest kuni visualiseerimise ja masinõppeni. NumPy, Pandas, Matplotlib, Seaborn ja Scikit-learn on kõik olulised tööriistad, mis aitavad andmetest tähenduslikku informatsiooni ammutada.
Alustuseks soovitame pöörata erilist tähelepanu Pandas-ile ja Matplotlib-ile, sest need on andmeanalüüsi alustala. Kui oled nendega tuttavaks saanud, on lihtsam liikuda edasi keerukamate tööriistade ja tehnikate juurde.
Andmeanalüüs Pythoniga on kasulik oskus paljudes valdkondades, alates ärianalüüsist kuni teaduseni. Pideva harjutamise ja õppimisega saad neid tööriistu enda kasuks tööle panna ja oma andmetest väärtuslikke teadmisi ammutada.
Kommentaarid (2)
Toomas Raud
2 päeva tagasiSuurepärane ülevaade! Olen alles alustanud Pandas-i õppimist ja see artikkel andis mulle palju selgust. Kas soovitaksite enne NumPy-d õppida või võib kohe Pandas-iga alustada?
VastaJäta kommentaar