Alles wat je nodig hebt voor data analyse met Python - van installatie tot geavanceerde visualisaties
Genereer Python code voor data analyse met Pandas. Selecteer de gewenste bewerkingen en de tool produceert direct de bijbehorende Python code die je kunt kopiëren naar je project.
Download de nieuwste versie van Python van de officiële website:
https://www.python.org/downloads/
python3 --version
in TerminalKies een ontwikkelomgeving (IDE) voor Python:
Installeer benodigde bibliotheken met pip (Python package manager):
# Basis data analyse bibliotheken
pip install pandas numpy matplotlib seaborn
# Voor geavanceerde data analyse
pip install scipy scikit-learn statsmodels
# Voor interactieve notebooks
pip install jupyter
# Controleer geïnstalleerde versies
pip list
pip
niet? Probeer pip3
of python -m pip
--user
toe aan het commandoMaak een nieuw bestand aan met extensie .py
en voer uit:
script.py
script.py
met een teksteditorcd pad/naar/map
python script.py
# Eerste Python script
import pandas as pd
# Maak een eenvoudige DataFrame
data = {'Naam': ['Jan', 'Piet', 'Klaas'], 'Leeftijd': [25, 30, 35]}
df = pd.DataFrame(data)
# Toon de data
print(df)
De belangrijkste bibliotheek voor data manipulatie en analyse. Biedt DataFrame structuur voor efficiënt werken met gelabelde en relationele data.
Installatie: pip install pandas
Belangrijkste functies:
Fundamentele bibliotheek voor wetenschappelijk rekenen. Biedt ondersteuning voor grote, multidimensionale arrays en matrices.
Installatie: pip install numpy
Belangrijkste functies:
Primaire bibliotheek voor data visualisatie in Python. Biedt veel flexibiliteit voor het maken van statische, geanimeerde en interactieve visualisaties.
Installatie: pip install matplotlib
Belangrijkste functies:
High-level interface voor aantrekkelijke statistische visualisaties, gebouwd op Matplotlib.
Installatie: pip install seaborn
Belangrijkste functies:
Machine learning bibliotheek voor Python. Eenvoudige en efficiënte tools voor data mining en data analyse.
Installatie: pip install scikit-learn
Belangrijkste functies:
Ontbrekende data kan analyses verstoren. Hier zijn manieren om ermee om te gaan:
# Verwijder rijen met ontbrekende waarden
df.dropna(inplace=True)
# Verwijder kolommen met te veel ontbrekende waarden
df.dropna(axis=1, thresh=0.7*len(df), inplace=True)
# Vul ontbrekende waarden in met gemiddelde
df.fillna(df.mean(), inplace=True)
# Voor categorische data: vul in met modus
df['categorie'].fillna(df['categorie'].mode()[0], inplace=True)
# Forward fill (neemt vorige waarde)
df.fillna(method='ffill', inplace=True)
# Toon aantal dubbele rijen
print(f"Aantal dubbele rijen: {df.duplicated().sum()}")
# Verwijder dubbele rijen
df.drop_duplicates(inplace=True)
# Dubbele rijen gebaseerd op specifieke kolommen
df.drop_duplicates(subset=['kolom1', 'kolom2'], keep='first', inplace=True)
# Converteer naar numeriek
df['kolom'] = pd.to_numeric(df['kolom'], errors='coerce')
# Converteer naar datum
df['datum'] = pd.to_datetime(df['datum'], format='%d-%m-%Y')
# Converteer naar categorisch
df['categorie'] = df['categorie'].astype('category')
# Converteer boolean strings
df['boolean'] = df['boolean'].map({'ja': True, 'nee': False})
# Met IQR methode
Q1 = df['kolom'].quantile(0.25)
Q3 = df['kolom'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# Toon uitschieters
outs = df[(df['kolom'] < lower_bound) | (df['kolom'] > upper_bound)]
print(f"Aantal uitschieters: {len(outs)}")
# Verwijder uitschieters
df = df[(df['kolom'] >= lower_bound) & (df['kolom'] <= upper_bound)]
# Vervang door grenswaarden
df['kolom'] = df['kolom'].clip(lower_bound, upper_bound)
# Of vervang door mediaan
median = df['kolom'].median()
df.loc[df['kolom'] > upper_bound, 'kolom'] = median
df.loc[df['kolom'] < lower_bound, 'kolom'] = median
# Verwijder whitespace
df['tekst'] = df['tekst'].str.strip()
# Converteer naar lowercase
df['tekst'] = df['tekst'].str.lower()
# Vervang substrings
df['tekst'] = df['tekst'].str.replace('oud', 'nieuw')
# Extract delen van strings
df['postcode'] = df['adres'].str.extract(r'(\d{4}\s?[A-Z]{2})')
# Splits strings
df[['voornaam', 'achternaam']] = df['naam'].str.split(' ', 1, expand=True)
# Staafdiagram
df['kolom'].value_counts().plot.bar(figsize=(10,6), title='Frequentie per categorie')
# Lijndiagram voor tijdreeksen
df.plot.line(x='datum', y='waarde', figsize=(12,6))
# Histogram voor distributies
df['numeriek'].plot.hist(bins=30, alpha=0.7)
# Boxplot voor uitschieters
df.boxplot(column='numeriek', by='categorie', figsize=(10,6))
# Scatter plot voor relaties
df.plot.scatter(x='kolom1', y='kolom2', alpha=0.5)
import seaborn as sns
import matplotlib.pyplot as plt
# Relatie tussen variabelen
sns.pairplot(df, hue='categorie')
# Boxplot met seaborn
sns.boxplot(x='categorie', y='waarde', data=df)
plt.xticks(rotation=45)
# Heatmap voor correlaties
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
# Violin plot voor distributie
sns.violinplot(x='groep', y='waarde', data=df, split=True)
# Regressie plot
sns.lmplot(x='x', y='y', data=df, hue='categorie', ci=None)
# Maak een figuur met subplots
fig, ax = plt.subplots(2, 2, figsize=(12,10))
# Eerste subplot
df['kolom1'].plot.hist(ax=ax[0,0], bins=20, color='skyblue')
ax[0,0].set_title('Distributie van kolom1')
# Tweede subplot
df.plot.scatter(x='kolom1', y='kolom2', ax=ax[0,1], alpha=0.6)
ax[0,1].set_title('Relatie tussen kolom1 en kolom2')
# Algemene titel
fig.suptitle('Data Analyse Visualisaties', fontsize=16)
# Layout optimaliseren
plt.tight_layout()
# Opslaan als bestand
plt.savefig('visualisaties.png', dpi=300, bbox_inches='tight')
Voor interactieve visualisaties in Jupyter Notebooks:
# Plotly installeren
pip install plotly
# Voorbeeld interactieve plot
import plotly.express as px
fig = px.scatter(df, x='kolom1', y='kolom2', color='categorie',
size='grootte', hover_data=['extra_info'],
title='Interactieve Scatter Plot')
fig.show()
# Interactief dashboard met widgets
from ipywidgets import interact
@interact
def plot_by_category(categorie=df['categorie'].unique()):
subset = df[df['categorie'] == categorie]
subset.plot.scatter(x='x', y='y', title=f'Data voor {categorie}')