Pandas för datamanipulering
Ni kommer att läsa in CSV-filer i DataFrames, filtrera rader, välja kolumner, hantera saknade värden och beräkna sammanfattande statistik.
Pandas för datamanipulering är en gratis lektion i Machine Learning Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Machine Learning Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Machine Learning Academy innehåller totalt 4 lektioner.
Vad är Pandas och varför ska det användas?
Pandas hanterar tabelldata – rader och kolumner, ungefär som i ett kalkylblad. Dess DataFrame är platsen där ni läser in och rensar rådata innan den når modellen.
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)Läsa in data från CSV-filer
Läs in en fil på en enda rad med pd.read_csv(). Granska den sedan alltid: .head(), .info() och .describe() visar form, typer och saknade värden på några 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)Välja kolumner och rader
Välj kolumner med df['col'] och filtrera rader med booleska villkor. Använd .loc[] för etiketter och .iloc[] för positioner. Sätt varje villkor inom parenteser!
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 columnHantera saknade värden
Verkliga data innehåller luckor, som visas som NaN, och de flesta modeller klarar inte av dem. Era två alternativ är att ta bort raderna eller kolumnerna, eller fylla i dem med ett värde 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 och typkonvertering
Varje kolumn har en dtype, till exempel int, float eller object (text). Fel datatyp orsakar tysta fel – tal som lästs in som text kan inte användas i matematiska beräkningar. Använd .astype() för att konvertera.
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)Lägga till och omforma kolumner
Feature engineering innebär att skapa nya kolumner utifrån befintliga. Om ni kombinerar SibSp och Parch till en FamilySize kan modellen ofta lära sig bättre. 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: aggregera efter kategori
groupby() delar upp era data efter en kategori, tillämpar en funktion som medelvärde och kombinerar resultaten – precis som SQL:s GROUP BY. Perfekt för att snabbt upptäcka mönster.
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)Slå samman och sammanfoga DataFrames
Behöver ni data från två källor? pd.merge() sammanfogar DataFrames utifrån en gemensam nyckel, precis som en SQL-join. Använd pd.concat() för att stapla tabeller och få fler rader eller kolumner.
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)Sammanfattande statistik och värdeantal
Studera era data innan ni bygger en modell: .describe() sammanfattar tal och .value_counts() räknar kategorier. Kontrollera alltid klassobalans – den kan göra att noggrannheten blir missvisande.
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)Konvertera en DataFrame till NumPy för scikit-learn
Det sista steget före träningen är att skilja funktionerna (X) från målet (y) och sedan konvertera till NumPy med .to_numpy(). Nu har scikit-learn exakt det som förväntas.
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)Spara och läsa in bearbetade data
Efter all denna rensning bör ni spara arbetet så att ni aldrig behöver göra om det. df.to_csv() är enkelt; Parquet tar mycket mindre plats och är snabbare för stora datamängder.
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)Snabbtest
Testa er förståelse av begrepp inom maskininlärning med Python från den här lektionen.
Sammanfattning av lektionen
Ni har lärt er att bearbeta data med Pandas: DataFrames läser in och rensar tabeller, dropna och fillna hanterar saknade värden och groupby avslöjar mönster. Nästa steg: diagram. 📊
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Pandas för datamanipulering” gratis?
Ja – hela texten till ”Pandas för datamanipulering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Machine Learning Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Machine Learning Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Pandas för datamanipulering”?
Ni kommer att läsa in CSV-filer i DataFrames, filtrera rader, välja kolumner, hantera saknade värden och beräkna sammanfattande statistik. Ni övar på Machine Learning Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Machine Learning Academy?
Du behöver inga förkunskaper. Utbildningen i Machine Learning Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Pandas för datamanipulering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Machine Learning Academy-lektionen?
Ja. Varje Machine Learning Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Installera Anaconda och Jupyter Notebook
- NumPy-grunder: arrayer och matematiska operationer
- Pandas för datamanipulering
- Visualisera data med Matplotlib och Seaborn