Machine Learning Academy · Lektion

Pandas til datamanipulation

Indlæs CSV-filer i DataFrames, filtrér rækker, vælg kolonner, håndtér manglende værdier, og beregn opsummerende statistikker.

Lektion 3 af 413 trin

Pandas til datamanipulation er en gratis Machine Learning Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Machine Learning Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Machine Learning Academy-kurset indeholder 4 lektioner i alt.

Hvad er Pandas, og hvorfor skal du bruge det?

Pandas håndterer tabeldata — rækker og kolonner, ligesom i et regneark. Dets DataFrame er stedet, hvor du indlæser og renser rådata, før de når frem til din model.

import pandas as pd
import numpy as np

# Create a DataFrame manually
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Carol', 'Dave'],
    'age': [25, 30, 35, 28],
    'salary': [50000, 70000, 90000, 60000],
    'department': ['Engineering', 'Marketing', 'Engineering', 'Sales']
})
print(df)
print('\nShape:', df.shape)  # (4, 4)

Indlæsning af data fra CSV-filer

Indlæs en fil på én linje med pd.read_csv(). Undersøg derefter altid dataene: .head(), .info() og .describe() viser form, datatyper og manglende værdier på få sekunder.

import pandas as pd

# Load a CSV
df = pd.read_csv('titanic.csv')

# First inspection
print(df.head())       # first 5 rows
print(df.tail(3))      # last 3 rows
print(df.info())       # column types + non-null counts
print(df.describe())   # count, mean, std, min, max for numeric cols
print(df.columns.tolist())  # column names
print(df.shape)        # (891, 12)

Valg af kolonner og rækker

Vælg kolonner med df['col'], og filtrér rækker med booleske betingelser. Brug .loc[] til etiketter og .iloc[] til positioner. Sæt hver betingelse i parentes!

import pandas as pd

df = pd.read_csv('titanic.csv')

# Select columns
age = df['Age']                          # Series
subset = df[['Age', 'Fare', 'Survived']] # DataFrame

# Filter rows with boolean conditions
survivors = df[df['Survived'] == 1]
first_class_women = df[(df['Pclass'] == 1) & (df['Sex'] == 'female')]

# Label-based selection (row label, column label)
print(df.loc[0, 'Name'])  # first row, Name column

# Position-based selection
print(df.iloc[0, 0])      # first row, first column

Håndtering af manglende værdier

Virkelige data har huller, som vises som NaN, og de fleste modeller kan ikke håndtere dem. Du har to muligheder: fjern rækkerne eller kolonnerne, eller udfyld dem med en værdi som medianen.

import pandas as pd
import numpy as np

df = pd.read_csv('titanic.csv')

# Detect missing values
print(df.isnull().sum())  # count NaN per column
print(df.isnull().mean() * 100)  # % missing per column

# Drop columns with >50% missing
df_clean = df.dropna(thresh=len(df) * 0.5, axis=1)

# Fill numeric missing with median
df['Age'] = df['Age'].fillna(df['Age'].median())

# Fill categorical missing with most frequent
df['Embarked'] = df['Embarked'].fillna(df['Embarked'].mode()[0])

Datatyper og typekonvertering

Hver kolonne har en dtype som int, float eller object (tekst). En forkert datatype kan give skjulte fejl — tal, der er indlæst som tekst, kan ikke bruges i matematiske beregninger. Brug .astype() til at konvertere.

import pandas as pd

df = pd.read_csv('titanic.csv')
print(df.dtypes)  # see all column dtypes

# Convert a column's dtype
df['Survived'] = df['Survived'].astype(bool)
df['Pclass'] = df['Pclass'].astype('category')

# Convert object column to numeric (coerce errors to NaN)
df['Fare'] = pd.to_numeric(df['Fare'], errors='coerce')

# Parse dates
# df['date'] = pd.to_datetime(df['date'])

print(df.dtypes)

Tilføjelse og transformation af kolonner

Feature engineering betyder, at du opbygger nye kolonner ud fra eksisterende kolonner. Hvis du kombinerer SibSp og Parch til én FamilySize, kan det ofte hjælpe en model med at lære bedre. Se koden.

import pandas as pd

df = pd.read_csv('titanic.csv')

# Create a new column from existing ones
df['FamilySize'] = df['SibSp'] + df['Parch'] + 1  # +1 for self

# Binary flag: is the passenger alone?
df['IsAlone'] = (df['FamilySize'] == 1).astype(int)

# Bin a continuous feature into categories
df['AgeGroup'] = pd.cut(df['Age'], bins=[0, 12, 18, 60, 100],
                         labels=['Child', 'Teen', 'Adult', 'Senior'])

print(df[['FamilySize', 'IsAlone', 'AgeGroup']].head())

GroupBy: aggregering efter kategori

groupby() opdeler dine data efter en kategori, anvender en funktion som middelværdi og kombinerer resultaterne — ligesom SQL's GROUP BY. Det er perfekt til hurtigt at finde mønstre.

import pandas as pd

df = pd.read_csv('titanic.csv')

# Mean survival rate by class
survival_by_class = df.groupby('Pclass')['Survived'].mean()
print(survival_by_class)
# Pclass 1: ~0.63, Pclass 2: ~0.47, Pclass 3: ~0.24

# Multiple aggregations at once
summary = df.groupby('Pclass').agg(
    passengers=('Survived', 'count'),
    survival_rate=('Survived', 'mean'),
    avg_fare=('Fare', 'mean')
)
print(summary)

Sammenlægning og join af DataFrames

Har du brug for data fra to kilder? pd.merge() forbinder DataFrames via en fælles nøgle, ligesom et SQL-join. Brug pd.concat() til at stable tabeller med flere rækker eller kolonner.

import pandas as pd

customers = pd.DataFrame({'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Carol']})
orders = pd.DataFrame({'id': [1, 1, 2], 'amount': [50, 30, 70]})

# Inner join on 'id'
merged = pd.merge(customers, orders, on='id', how='inner')
print(merged)

# Stack DataFrames with the same columns
df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'A': [3, 4]})
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)

Opsummerende statistikker og værdiforekomster

Undersøg dine data, før du modellerer: .describe() opsummerer tal, og .value_counts() tæller kategorier. Kontrollér altid for klasseubalance — den kan vildlede nøjagtigheden.

import pandas as pd

df = pd.read_csv('titanic.csv')

# Numeric statistics
print(df['Age'].describe())
# count, mean, std, min, 25%, 50%, 75%, max

# Categorical distribution
print(df['Sex'].value_counts())
print(df['Pclass'].value_counts(normalize=True))  # proportions

# Correlation with target variable
correlations = df.corr()['Survived'].sort_values(ascending=False)
print(correlations)

Konvertering af en DataFrame til NumPy til scikit-learn

Det sidste trin før træning er at adskille features (X) fra målet (y) og derefter konvertere til NumPy med .to_numpy(). Nu har scikit-learn præcis det, som det forventer.

import pandas as pd
from sklearn.model_selection import train_test_split

df = pd.read_csv('titanic.csv')

# Select numeric features only for simplicity
features = ['Pclass', 'Age', 'SibSp', 'Parch', 'Fare']
df_model = df[features + ['Survived']].dropna()

X = df_model[features].to_numpy()       # shape (n, 5)
y = df_model['Survived'].to_numpy()     # shape (n,)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)
print('Train shape:', X_train.shape)
print('Test shape:', X_test.shape)

Lagring og indlæsning af behandlede data

Gem dit arbejde efter al den rensning, så du aldrig behøver at gøre det igen. df.to_csv() er enkelt; Parquet fylder langt mindre og er hurtigere til store datasæt.

import pandas as pd

df = pd.read_csv('titanic.csv')

# Save as CSV
df.to_csv('titanic_processed.csv', index=False)

# Save as Parquet (much faster for large files)
# df.to_parquet('titanic_processed.parquet', index=False)

# Load back
df_reloaded = pd.read_csv('titanic_processed.csv')
print('Reloaded shape:', df_reloaded.shape)

Hurtig kontrol

Test din forståelse af begreberne inden for Machine Learning med Python fra denne lektion.

Opsummering af lektionen

Du har lært at bearbejde data med Pandas: DataFrames indlæser og renser tabeller, dropna og fillna håndterer manglende værdier, og groupby afslører mønstre. Næste emne: diagrammer. 📊

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Pandas til datamanipulation” gratis?

Ja — hele teksten til “Pandas til datamanipulation” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Machine Learning Academy-kurset, skal du opgradere til CoddyKit PRO. Machine Learning Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Pandas til datamanipulation”?

Indlæs CSV-filer i DataFrames, filtrér rækker, vælg kolonner, håndtér manglende værdier, og beregn opsummerende statistikker. Du øver dig i Machine Learning Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Machine Learning Academy?

Der kræves ingen tidligere erfaring. Machine Learning Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Pandas til datamanipulation”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Machine Learning Academy-lektion?

Ja. Alle Machine Learning Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Installation af Anaconda og Jupyter Notebook
  2. NumPy-grundlag: Arrays og matematiske operationer
  3. Pandas til datamanipulation
  4. Visualisering af data med Matplotlib og Seaborn
← Tilbage til Machine Learning Academy