Pandas & NumPy Academy · leksjon

Grunnleggende inspeksjon av DataFrames

Bruk head(), tail(), info(), describe() og shape til raskt å forstå innholdet og strukturen i en hvilken som helst DataFrame.

Leksjon 4 av 413 trinn

Grunnleggende inspeksjon av DataFrames er en gratis leksjon i Pandas & NumPy Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Pandas & NumPy Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Pandas & NumPy Academy inneholder totalt 4 leksjoner.

De fem første trinnene med enhver DataFrame

Hver gang De laster inn et nytt datasett, kan en systematisk inspeksjonssekvens spare Dem for timevis med feilsøking. Pandas-verktøyene for dette omfatter: head() for å se de første radene, tail() for de siste radene, info() for kolonnetyper og nullverdier, describe() for statistikk og shape for dimensjoner. Det tar mindre enn ett minutt å kjøre disse fem kontrollene, og de avdekker de fleste datakvalitetsproblemer umiddelbart.

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()     # statistics

head() og tail()

df.head(n) returnerer de første n radene (standardverdien er 5) som en DataFrame. df.tail(n) returnerer de siste n radene. Sammen hjelper de Dem med å kontrollere at dataene ble tolket riktig — for eksempel at kolonnenavnene står i header-raden, at numeriske kolonner inneholder tall, og at datostrenger ikke ble feiltolket. De endrer ikke dataene og returnerer nye DataFrames.

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  39

info(): Typer og antall ikke-null-verdier

df.info() skriver ut en kort oppsummering: indeksens dtype, antallet ikke-null-verdier per kolonne, hver kolonnes dtype og det totale minneforbruket. Kolonner med færre ikke-null-verdier enn det totale antallet rader, inneholder manglende data. Object-dtype betyr ofte at kolonnen inneholder strenger (eller verdier av blandede typer) og kan trenge rensing før analysen.

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      object

describe(): Statistisk oppsummering

df.describe() beregner antall, gjennomsnitt, standardavvik, minimum, 25.-, 50.- (medianen) og 75.-persentil samt maksimum for alle numeriske kolonner. Oppgi include='all' for også å oppsummere object-kolonner (strenger). Oppgi include='object' for bare å oppsummere kategoriske kolonner. Resultatet er selv en DataFrame, så De kan lagre det eller formatere det for 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.0

shape, ndim og size

df.shape er en tuppel på formen (nrows, ncols). df.ndim returnerer alltid 2 for DataFrames. df.size er det totale antallet celler. Bruk len(df) for antallet rader (samme som df.shape[0]). Dette er de enkleste rimelighetskontrollene — bekreft forventet antall rader etter innlasting og etter hvert filtreringstrinn.

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)    # 2

dtypes og select_dtypes()

df.dtypes returnerer en Series som knytter hvert kolonnenavn til kolonnens dtype. df.select_dtypes(include='number') returnerer en ny DataFrame med bare numeriske kolonner — nyttig for å beregne korrelasjoner eller bruke numeriske transformasjoner uten å risikere å operere på strengkolonner. Oppgi exclude='object' for å utelate tekstkolonner.

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() og antall nullverdier

df.isnull().sum() gir antallet manglende verdier per kolonne — den raskeste måten å finne ut hvilke kolonner som trenger rensing på. Del på len(df) for å få andelen manglende verdier. En kolonne med mer enn 50 % manglende verdier trenger ofte særskilt behandling: enten ved at den fjernes, eller ved at De bruker imputering tilpasset domenet.

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.67

value_counts() på en DataFrame-kolonne

Et kall til df['col'].value_counts() viser hvor ofte hver unike verdi forekommer i kolonnen, sortert etter antall. Legg til normalize=True for å få prosentandeler. Bruk dropna=False for også å telle NaN som en kategori. Dette er den raskeste måten å kontrollere skjev fordeling mellom kategorier eller uventede verdier i en kategorisk kolonne.

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))

Inspeksjon av columns og index

df.columns.tolist() gir en vanlig Python-liste med kolonnenavn — nyttig for programmatisk manipulering eller logging. df.index viser radetikettene og typen deres. Kontroller df.index.is_unique for å bekrefte at ingen dupliserte radetiketter finnes, noe som er en forutsetning for mange fletteoperasjoner og tidsserie-beregninger.

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)      # True

sample() for tilfeldig inspeksjon

df.sample(n) returnerer n tilfeldig valgte rader uten tilbakelegging. df.sample(frac=0.1) returnerer 10 % av radene. Angi random_state= for å kunne gjenskape resultatet. Tilfeldig utvalg er bedre enn head() for å oppdage problemer midt i et stort datasett som kanskje ikke forekommer i de første radene.

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 rows

memory_usage() for minnebudsjettering

df.memory_usage(deep=True) returnerer minnet som hver kolonne bruker, målt i byte. deep=True tvinger frem en nøyaktig måling av kolonner med object-dtype, der strengene ligger utenfor DataFrame-bufferen. Summer verdiene for å få det totale minneforbruket. Bruk dette før og etter nedskalering av dtype for å bekrefte at De har redusert minnebruken.

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())

Kort kontroll

Test forståelsen Deres av grunnleggende DataFrame-inspeksjon fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen lærte De at head() og tail() lar Dem inspisere starten og slutten av en DataFrame visuelt, at info() viser dtype-er og antall manglende verdier i ett enkelt kall, og at describe() gir statistiske oppsummeringer for numeriske kolonner. Neste gang laster vi inn data fra de vanligste filformatene — CSV, Excel og JSON — til DataFrames.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Grunnleggende inspeksjon av DataFrames» gratis?

Ja – hele teksten i «Grunnleggende inspeksjon av DataFrames» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Pandas & NumPy Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Pandas & NumPy Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Grunnleggende inspeksjon av DataFrames»?

Bruk head(), tail(), info(), describe() og shape til raskt å forstå innholdet og strukturen i en hvilken som helst DataFrame. Du øver på Pandas & NumPy Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Pandas & NumPy Academy?

Ingen tidligere erfaring er nødvendig. Pandas & NumPy Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Grunnleggende inspeksjon av DataFrames»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Pandas & NumPy Academy-leksjonen?

Ja. Alle Pandas & NumPy Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Opprette DataFrames
  2. Velge kolonner og rader
  3. Legge til og fjerne kolonner
  4. Grunnleggende inspeksjon av DataFrames
← Tilbake til Pandas & NumPy Academy