De accessor .str
Gebruik stringmethoden op een Series via .str en pas lower(), upper(), strip() en len() toe op alle waarden.
De accessor .str is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Inleiding tot de accessor .str
Python-tekenreeksen hebben veel nuttige methoden, zoals .lower(), .strip() en .replace(), maar je kunt deze niet rechtstreeks aanroepen op een Pandas Series met tekenreeksen — je zou een lus nodig hebben. De accessor .str lost dit op door gevectoriseerde versies van de ingebouwde tekenreeksmethoden van Python beschikbaar te maken op een Series. De bewerking wordt dan in één keer op elk element toegepast, zonder dat je een lus hoeft te schrijven, en ontbrekende waarden worden correct verwerkt (voor deze waarden wordt NaN geretourneerd).
import pandas as pd
names = pd.Series([' Alice ', 'BOB', ' carol '])
# .strip() removes leading/trailing whitespace from every element
print(names.str.strip())
# 0 Alice
# 1 BOB
# 2 carol
# .lower() lowercases every element
print(names.str.strip().str.lower())
# 0 alice
# 1 bob
# 2 carolMethoden voor hoofdlettergebruik
Inconsistent hoofdlettergebruik is een van de meest voorkomende problemen met gegevenskwaliteit. De accessor .str biedt .lower(), .upper(), .title() (de eerste letter van elk woord wordt een hoofdletter) en .capitalize() (alleen de eerste letter van de tekenreeks wordt een hoofdletter). Gebruik .lower() vóór vergelijkingen en groupby-bewerkingen om te voorkomen dat 'NYC' en 'nyc' als verschillende groepen worden behandeld.
import pandas as pd
df = pd.DataFrame({'city': ['new york', 'LOS ANGELES', 'Chicago', 'HOUSTON']})
df['city_lower'] = df['city'].str.lower()
df['city_title'] = df['city'].str.title()
df['city_upper'] = df['city'].str.upper()
print(df[['city_lower', 'city_title']])
# city_lower city_title
# 0 new york New York
# 1 los angeles Los Angeles
# 2 chicago Chicago
# 3 houston HoustonWitruimte verwijderen
Witruimte aan het begin en einde is niet zichtbaar in weergaven, maar zorgt ervoor dat vergelijkingen op exacte overeenkomst stilzwijgend mislukken. .str.strip() verwijdert witruimte aan beide uiteinden, .str.lstrip() alleen aan de linkerkant en .str.rstrip() alleen aan de rechterkant. Je kunt ook een specifiek teken opgeven om te verwijderen (bijvoorbeeld: .str.strip('$') verwijdert dollartekens).
import pandas as pd
df = pd.DataFrame({'code': [' A001 ', '$B002$', ' C003']})
print(df['code'].str.strip()) # 'A001', '$B002$', 'C003'
print(df['code'].str.strip('$ ')) # 'A001', 'B002', 'C003'Lengte controleren met .str.len()
.str.len() retourneert het aantal tekens in elk tekenreeks-element als een gehele Series. Dit is nuttig voor validatie — bijvoorbeeld om te controleren of een productcode altijd 5 tekens bevat, of een telefoonnummer het juiste aantal cijfers heeft, of een tekstveld niet verdacht kort is (zoals één teken dat op een tijdelijke waarde kan wijzen).
import pandas as pd
df = pd.DataFrame({'sku': ['A001', 'BB02', 'CCC', 'D0005', 'E1']})
df['sku_len'] = df['sku'].str.len()
print(df)
# Rows with unexpected SKU length
bad_skus = df[df['sku_len'] != 4]
print(bad_skus)
# sku sku_len
# 2 CCC 3
# 3 D0005 5
# 4 E1 2Voor- en achtervoegsels controleren
.str.startswith() en .str.endswith() retourneren booleaanse Series. Dit is de duidelijkste manier om rijen te filteren op basis van het begin of einde van een tekenreekswaarde — bijvoorbeeld om alle order-ID's te selecteren die met 'ORD' beginnen of alle bestandsnamen die op '.csv' eindigen. Je kunt ook tuples met tekenreeksen gebruiken om meerdere voor- of achtervoegsels tegelijk te controleren.
import pandas as pd
df = pd.DataFrame({'file': ['data.csv', 'report.xlsx', 'backup.csv', 'config.json']})
# Filter CSV files
csv_files = df[df['file'].str.endswith('.csv')]
print(csv_files)
# file
# 0 data.csv
# 2 backup.csv
# Multiple suffixes
spreadsheets = df[df['file'].str.endswith(('.csv', '.xlsx'))]
print(spreadsheets.shape) # (3, 1).str.contains() voor zoeken naar deeltekenreeksen
.str.contains(pattern) retourneert een booleaanse Series die aangeeft of elk element het opgegeven patroon bevat. Standaard accepteert de methode een reguliere expressie, maar je kunt regex=False meegeven om letterlijk naar een deeltekenreeks te zoeken. Het argument na=False behandelt NaN als geen overeenkomst in plaats van NaN naar het resultaat door te geven.
import pandas as pd
df = pd.DataFrame({
'description': ['Red apple', 'Green banana', 'Red cherry', None, 'Blue grape']
})
# Find rows containing 'Red' (case-sensitive)
mask = df['description'].str.contains('Red', na=False)
print(df[mask])
# description
# 0 Red apple
# 2 Red cherryGedrag van NaN in .str-methoden
Wanneer een Series NaN-waarden bevat, geven de meeste .str-methoden NaN standaard door — ze retourneren NaN voor de ontbrekende posities in de uitvoer-Series. Methoden die booleaanse waarden retourneren (zoals .str.contains()) retourneren standaard NaN voor ontbrekende posities, wat problemen kan veroorzaken bij booleaanse indexering. Gebruik na=False om NaN als geen overeenkomst te behandelen, of na=True om NaN als een overeenkomst te behandelen.
import pandas as pd
import numpy as np
s = pd.Series(['hello', None, 'world', np.nan])
# Default: NaN propagates
print(s.str.upper())
# 0 HELLO
# 1 None
# 2 WORLD
# 3 NaN
# contains with na=False: NaN treated as non-matching
print(s.str.contains('o', na=False))
# 0 True
# 1 False
# 2 True
# 3 False.str.count() voor patroonfrequentie
.str.count(pattern) telt hoe vaak een patroon in elk tekenreeks-element voorkomt. Dit is nuttig voor feature-engineering bij natuurlijke-taalverwerking — bijvoorbeeld om te tellen hoe vaak een woord voorkomt, hoeveel cijfers een tekenreeks bevat of hoeveel komma's waarden in een gescheiden veld van elkaar scheiden.
import pandas as pd
df = pd.DataFrame({'text': ['hello world', 'foo bar baz', 'a b c d e']})
# Count number of words (spaces + 1)
df['word_count'] = df['text'].str.count(' ') + 1
print(df)
# text word_count
# 0 hello world 2
# 1 foo bar baz 3
# 2 a b c d e 5.str-methoden koppelen
Omdat elke .str-methode een nieuwe Series retourneert, kunt u meerdere tekenreeksbewerkingen in één expressie aan elkaar koppelen. Dit is de netste manier om verschillende opschoningsstappen toe te passen op een tekstkolom: witruimte verwijderen, omzetten naar kleine letters en speciale tekens verwijderen — allemaal op één leesbare regel. De keten wordt van links naar rechts geëvalueerd, waarbij elke stap de invoer voor de volgende levert.
import pandas as pd
df = pd.DataFrame({'tag': [' Python ', ' DATA-SCIENCE ', ' Machine_Learning !']})
df['tag_clean'] = (
df['tag']
.str.strip()
.str.lower()
.str.replace('[-_!]', ' ', regex=True)
.str.strip()
)
print(df)
# tag tag_clean
# 0 Python python
# 1 DATA-SCIENCE data science
# 2 Machine_Learning ! machine learningTekens indexeren met .str[]
De notatie .str[n] haalt uit elke tekenreeks het teken op positie n op, en .str[start:end] haalt een segment van een tekenreeks op. Dit is gevectoriseerde indexering van tekenreeksen en is handig voor het ophalen van codes met een vaste lengte, zoals voorvoegsels van postcodes, jaartalcijfers uit datumtekenreeksen of de eerste letter van een naam.
import pandas as pd
df = pd.DataFrame({'code': ['NYC-001', 'LAX-042', 'ORD-018']})
# Extract city code (first 3 chars)
df['city'] = df['code'].str[:3]
# Extract numeric part (chars 4 onwards)
df['num'] = df['code'].str[4:]
print(df)
# code city num
# 0 NYC-001 NYC 001
# 1 LAX-042 LAX 042
# 2 ORD-018 ORD 018Praktisch opschonen met .str
Hier is een realistische opschoningspijplijn voor een kolom met productnamen die van een webpagina is geschraapt. Deze combineert verwijderen van overtollige tekens, normalisatie van hoofdlettergebruik, verwijderen van leestekens en samenvoegen van witruimte — een standaardreeks voor voorbewerking in elke NLP- of gegevensopschoontaak.
import pandas as pd
df = pd.DataFrame({
'product': [' Apple iPhone 15!!', 'samsung GALAXY s24 ', ' Google Pixel 8 Pro ']
})
df['product_clean'] = (
df['product']
.str.strip()
.str.title()
.str.replace('[^A-Za-z0-9 ]', '', regex=True) # remove punctuation
.str.replace(r'\s+', ' ', regex=True) # collapse extra spaces
.str.strip()
)
print(df['product_clean'].tolist())
# ['Apple Iphone 15', 'Samsung Galaxy S24', 'Google Pixel 8 Pro']Snelle controle
Test uw begrip van de .str-accessor.
Samenvatting van de les
In deze les hebt u geleerd dat de .str accessor gevectoriseerde tekenreeksmethoden op een Pandas Series beschikbaar maakt, waaronder lower/upper/strip voor normalisatie, startswith/endswith/contains voor filteren en len/count voor metingen. Koppel meerdere .str-aanroepen aan elkaar om leesbare opschoningspijplijnen te maken. Gebruik na=False wanneer er NaN-waarden aanwezig zijn. Hierna splitsen en vervangen we tekenreeksen voor geavanceerdere transformaties.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “De accessor .str” gratis?
Ja — de volledige tekst van “De accessor .str” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Wat leer ik in “De accessor .str”?
Gebruik stringmethoden op een Series via .str en pas lower(), upper(), strip() en len() toe op alle waarden. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?
Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “De accessor .str”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?
Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De accessor .str
- Strings splitsen en vervangen
- Patronen matchen met regex
- Tekstkolommen combineren en opschonen