Grundläggande inspektion av DataFrames
Använd head(), tail(), info(), describe() och shape för att snabbt förstå innehållet och strukturen i valfri DataFrame.
Grundläggande inspektion av DataFrames är en gratis lektion i Pandas & NumPy Academy på CoddyKit. Detta är lektion 4 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 Pandas & NumPy Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.
De fem första stegen med valfritt DataFrame-objekt
Varje gång Ni läser in en ny datamängd sparar en systematisk granskningssekvens många timmars felsökning. Pandas-verktygen för detta är: head() för att se de första raderna, tail() för de sista raderna, info() för kolumntyper och nullvärden, describe() för statistik och shape för dimensioner. Dessa fem kontroller tar mindre än en minut och avslöjar omedelbart de flesta problem med datakvaliteten.
import pandas as pd
# Assume df is loaded from a CSV
print(df.shape) # (rows, cols)
df.head() # first 5 rows
df.info() # dtypes + non-null counts
df.describe() # statisticshead() och tail()
df.head(n) returnerar de första n raderna (standardvärde 5) som en DataFrame. df.tail(n) returnerar de sista n raderna. Tillsammans hjälper de Er att verifiera att data har tolkats korrekt – kontrollera att kolumnnamnen finns på rubrikraden, att numeriska kolumner innehåller tal och att datumsträngar inte har misstolkats. De är icke-förstörande och returnerar nya DataFrame-objekt.
import pandas as pd
df = pd.DataFrame({'a': range(20), 'b': range(20, 40)})
print(df.head(3))
# a b
# 0 0 20
# 1 1 21
# 2 2 22
print(df.tail(2))
# a b
# 18 18 38
# 19 19 39info(): typer och antal icke-nullvärden
df.info() skriver ut en kort sammanfattning: indexets dtype, antalet icke-nullvärden per kolumn, varje kolumns dtype och den totala minnesanvändningen. Kolumner med färre icke-nullvärden än det totala antalet rader innehåller saknade data. Dtype object betyder ofta att kolumnen innehåller strängar (eller blandade typer) och kan behöva rensas före analys.
import pandas as pd
import numpy as np
df = pd.DataFrame({'name': ['A', 'B', None],
'score': [80.0, np.nan, 90.0],
'grade': ['A', 'C', 'A']})
df.info()
# Column Non-Null Count Dtype
# name 2 non-null object
# score 2 non-null float64
# grade 3 non-null objectdescribe(): statistisk sammanfattning
df.describe() beräknar antal, medelvärde, standardavvikelse, minsta värde, 25:e, 50:e (medianen) och 75:e percentilen samt största värde för alla numeriska kolumner. Skicka in include='all' för att även sammanfatta kolumner av typen object (strängar). Skicka in include='object' för att endast sammanfatta kategoriska kolumner. Resultatet är självt en DataFrame, så Ni kan spara det eller formatera det för en rapport.
import pandas as pd
df = pd.DataFrame({'age': [25, 30, 35, 40], 'score': [88, 72, 91, 65]})
print(df.describe().round(1))
# age score
# count 4.0 4.0
# mean 32.5 79.0
# std 6.5 12.0shape, ndim och size
df.shape är en tupel av typen (nrows, ncols). df.ndim returnerar alltid 2 för DataFrame-objekt. df.size är det totala antalet celler. Använd len(df) för antalet rader (samma som df.shape[0]). Detta är de enklaste rimlighetskontrollerna – bekräfta det förväntade antalet rader efter inläsning och efter varje filtreringssteg.
import pandas as pd
df = pd.DataFrame({'x': range(100), 'y': range(100), 'z': range(100)})
print(df.shape) # (100, 3)
print(len(df)) # 100
print(df.size) # 300
print(df.ndim) # 2dtypes och select_dtypes()
df.dtypes returnerar en Series som kopplar varje kolumnnamn till dess dtype. df.select_dtypes(include='number') returnerar en ny DataFrame med endast numeriska kolumner – användbart för att beräkna korrelationer eller tillämpa numeriska transformeringar utan att oavsiktligt bearbeta strängkolumner. Skicka in exclude='object' för att ta bort textkolumner.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [1.0,2.0], 'c': ['x','y']})
print(df.dtypes)
# a int64
# b float64
# c object
numeric = df.select_dtypes(include='number')
print(numeric.columns.tolist()) # ['a', 'b']isnull() och antal nullvärden
df.isnull().sum() ger antalet saknade värden per kolumn – det snabbaste sättet att hitta vilka kolumner som behöver rensas. Dividera med len(df) för att få andelen saknade värden. En kolumn med mer än 50 % saknade värden behöver ofta särskild behandling: antingen tar Ni bort den eller tillämpar imputering som är anpassad till domänen.
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, np.nan, 3], 'b': [np.nan, np.nan, 6]})
print(df.isnull().sum())
# a 1
# b 2
print((df.isnull().sum() / len(df)).round(2))
# a 0.33
# b 0.67value_counts() på en DataFrame-kolumn
Anropet df['col'].value_counts() listar frekvensen för varje unikt värde i kolumnen, sorterad efter antal. Lägg till normalize=True för procenttal. Använd dropna=False för att även räkna NaN som en kategori. Detta är det snabbaste sättet att kontrollera obalans mellan kategorier eller oväntade värden i en kategorisk kolumn.
import pandas as pd
df = pd.DataFrame({'status': ['active','inactive','active','active','banned']})
print(df['status'].value_counts())
# active 3
# inactive 1
# banned 1
print(df['status'].value_counts(normalize=True).round(2))Granska columns och index
df.columns.tolist() ger en vanlig Python-lista med kolumnnamn – användbart vid programmatiska ändringar eller loggning. df.index visar radetiketterna och deras typ. Kontrollera df.index.is_unique för att bekräfta att inga dubbla radetiketter finns, vilket är ett krav för många sammanfogningsoperationer och tidsserieberäkningar.
import pandas as pd
df = pd.DataFrame({'a': [1,2,3]}, index=['x', 'y', 'z'])
print(df.columns.tolist()) # ['a']
print(df.index.tolist()) # ['x', 'y', 'z']
print(df.index.is_unique) # Truesample() för slumpmässig granskning
df.sample(n) returnerar n slumpmässigt valda rader utan återläggning. df.sample(frac=0.1) returnerar 10 % av raderna. Ange random_state= för reproducerbarhet. Slumpmässigt urval är bättre än head() för att upptäcka problem i mitten av en stor datamängd som kanske inte syns i de första raderna.
import pandas as pd
df = pd.DataFrame({'x': range(1000), 'y': range(1000)})
print(df.sample(3, random_state=42))
print(df.sample(frac=0.005, random_state=0)) # 0.5% of rowsmemory_usage() för minnesbudgetering
df.memory_usage(deep=True) returnerar minnet som varje kolumn använder, i byte. deep=True tvingar fram en noggrann mätning av kolumner med dtype object, vars strängar ligger utanför DataFrame-bufferten. Summera värdena för att få den totala minnesanvändningen. Använd detta före och efter nedkonvertering av dtype för att bekräfta att minnesförbrukningen har minskat.
import pandas as pd
df = pd.DataFrame({'a': range(10000), 'b': [str(i) for i in range(10000)]})
usage = df.memory_usage(deep=True)
print(usage)
print('Total bytes:', usage.sum())Snabbkontroll
Testa Era kunskaper om grundläggande granskning av DataFrame-objekt från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har Ni lärt Er att: head() och tail() låter Er granska början och slutet av en DataFrame visuellt, info() visar dtypes och antal saknade värden i ett enda anrop och describe() ger statistiska sammanfattningar för numeriska kolumner. Nästa steg är att läsa in data från de vanligaste filformaten – CSV, Excel och JSON – till DataFrame-objekt.
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 ”Grundläggande inspektion av DataFrames” gratis?
Ja – hela texten till ”Grundläggande inspektion av DataFrames” 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 Pandas & NumPy Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Grundläggande inspektion av DataFrames”?
Använd head(), tail(), info(), describe() och shape för att snabbt förstå innehållet och strukturen i valfri DataFrame. Ni övar på Pandas & NumPy 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 Pandas & NumPy Academy?
Du behöver inga förkunskaper. Utbildningen i Pandas & NumPy 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 4 av 4.
Hur lång tid tar lektionen ”Grundläggande inspektion av DataFrames”?
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 Pandas & NumPy Academy-lektionen?
Ja. Varje Pandas & NumPy 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
- Skapa DataFrames
- Välja kolumner och rader
- Lägga till och ta bort kolumner
- Grundläggande inspektion av DataFrames