# Hoe je Pandas DataFrame kunt gebruiken om tabellen snel te bewerken in Python

Het Pandas DataFrame is een Python-gegevensstructuur die kan worden gebruikt om tabellen te maken en te bewerken. We leggen de structuur van de gegevensstructuur en de belangrijkste methoden en eigenschappen ervan uit.

## Hoe werkt Pandas DataFrame?

Pandas DataFrames vormen de kern van de Python Pandas-bibliotheek en maken efficiënte en flexibele gegevensanalyse in Python mogelijk. Een Pandas DataFrame is een **tweedimensionale tabelstructuur** met **genummerde rijen en gelabelde kolommen**. Deze structuur maakt het mogelijk om gegevens te ordenen in een gemakkelijk te begrijpen en te bewerken vorm, vergelijkbaar met spreadsheetprogramma’s zoals Excel of [LibreOffice](https://www.libreoffice.org/ "LibreOffice website"). Elke kolom in een DataFrame kan verschillende [Python-gegevenstypen](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/python-gegevenstypen/) bevatten, wat betekent dat een DataFrame **heterogene gegevens** kan opslaan, bijvoorbeeld numerieke waarden, tekenreeksen en booleaanse waarden in één tabel.

Tip Pandas DataFrames zijn gebaseerd op NumPy-arrays, waardoor gegevens efficiënt kunnen worden verwerkt en waarden kunnen worden berekend. De DataFrames van Panda verschillen echter in sommige opzichten van [NumPy-gegevensstructuren](https://numpy.org/ "NumPy website"), bijvoorbeeld wat betreft hun heterogeniteit en het aantal dimensies. Daarom zijn NumPy-gegevensstructuren geschikt voor het manipuleren van enorme hoeveelheden numerieke waarden en zijn de gegevensstructuren van Panda meer geschikt voor algemene gegevensmanipulatie.

### Structuur van Pandas DataFrames

Een DataFrame bestaat uit drie hoofdonderdelen: de gegevens, rij-indexen en kolomnamen. De rij-index (of gewoon index) identificeert elke rij op unieke wijze. Standaard worden rijen geïndexeerd met numerieke waarden, maar deze kunnen worden vervangen door tekenreeksen. Het is belangrijk om op te merken dat Pandas DataFrames **nul-geïndexeerd** zijn, wat betekent dat indexen beginnen bij 0.

[![Afbeelding: The structure of a Pandas DataFrame](https://www.ionos.com/nl-be/digitalguide/fileadmin/_processed_/e/9/csm_pandas-dataframe-structure_0ab3bff2f5.webp "The structure of a Pandas DataFrame")](https://www.ionos.com/nl-be/digitalguide/fileadmin/DigitalGuide/Schaubilder/pandas-dataframe-structure.png) Pandas DataFrames have a tabular structure and are therefore very similar to Excel or SQL tables.  Opmerking Hoewel Pandas DataFrames tot de populairste en nuttigste Python-datastructuren behoren, maken ze geen deel uit van de basistaal en moeten ze **apart** worden **geïmporteerd**. Dit doe je met regel `import pandas` of `from pandas import DataFrame` aan het begin van je bestand. Je kunt ook `import pandas as pd` gebruiken als je naar de module wilt verwijzen met een kortere naam (in dit geval ‘pd’).

## Gebruik van Pandas DataFrames

Pandas DataFrames bieden verschillende technieken en methoden voor efficiënte gegevensverwerking, analyse en visualisatie. Hieronder leert u meer over de belangrijkste concepten en methoden voor gegevensmanipulatie met behulp van Pandas DataFrames.

### Hoe maak je een Pandas DataFrame aan?

Als u de gewenste gegevens al in een Python-lijst of Python-woordenboek hebt opgeslagen, kunt u daar eenvoudig een DataFrame van maken. Geef de bestaande gegevensstructuur gewoon door aan de DataFrame-constructor met behulp van `pandas.DataFrame([data])`. Hoe Pandas uw gegevens interpreteert, hangt af van de structuur die u opgeeft. U kunt bijvoorbeeld als volgt een Pandas DataFrame maken op basis van een Python-lijst:

```python
import pandas
lists = ["Ahmed", "Beatrice", "Candice", "Donovan", "Elisabeth", "Frank"]
df = pandas.DataFrame(list)
print(df)
# Output:
#            0
# 0     	Ahmed
# 1      	Beatrice
# 2     	Candice
# 3    		Donovan
# 4  	  	Elisabeth
# 5  		Frank
```

Zoals u in het bovenstaande voorbeeld kunt zien, kunt u met eenvoudige lijsten alleen DataFrames maken met één **enkele, niet-gelabelde kolom**. Daarom wordt aanbevolen om DataFrames te maken op basis van **woordenboeken die lijsten bevatten**. De sleutels worden geïnterpreteerd als kolomnamen en de lijsten als de bijbehorende gegevens. Het volgende voorbeeld illustreert dit:

```python
import pandas
datA = {
    'Name': ['Arthur', 'Bruno', 'Christoph'],
    'Age': [34, 30, 55],
    'Income': [75000.0, 60000.5, 90000.3],
}
df = pandas.DataFrame(data)
print(df)
# Output:
#         Name  Age   Income
# 0     Arthur     34  75000.0
# 1      Bruno     30  60000.5
# 2  Christoph     55  90000.3
```

Met deze methode heeft het DataFrame meteen de gewenste indeling en de gewenste kopteksten. Als u echter niet wilt vertrouwen op de ingebouwde Python-gegevensstructuren, kunt u uw gegevens ook laden **vanuit een externe bron**, zoals een CSV-bestand of een [SQL-database](https://www.ionos.com/nl-be/digitalguide/server/knowhow/wat-is-sql/). Roep gewoon de juiste Pandas-functie aan:

```python
import pandas
import sqlalchemy
# DataFrame of CSV:
csv = pandas.read_csv("csv-data/files.csv")
# DataFrame of SQL:
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
sql = pandas.read_sql_query('SELECT * FROM table', engine)
```

De DataFrames `csv` en `sql` in het bovenstaande voorbeeld bevatten nu alle gegevens uit de `data.csv` en de SQL-tabel `table`. Wanneer u een DataFrame maakt op basis van een externe bron, kunt u aanvullende details specificeren, bijvoorbeeld of de numerieke indices al dan niet in de DataFrame moeten worden opgenomen. Meer informatie over de aanvullende argumenten van de twee functies vindt u op de [officiële documentatiepagina van Pandas DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html "Official Pandas DataFrame documentation page").

Tip Om een Pandas DataFrame te maken op basis van een SQL-tabel, moet u Pandas gebruiken in combinatie met een Python SQL-module zoals *SQLAlchemy*. Maak een verbinding met de database met behulp van de door u gekozen SQL-module en geef deze door aan `read_sql_query()`.

### Hoe gegevens weergeven in Pandas DataFrames

Met Pandas DataFrames kunt u niet alleen de volledige tabel weergeven, maar ook afzonderlijke rijen en kolommen. U kunt specifieke rijen en kolommen selecteren om te bekijken. Het volgende voorbeeld illustreert hoe u afzonderlijke of meerdere rijen en kolommen kunt weergeven:

```python
# Output 0-th line
print(df.loc[0])
# Output lines 3 to 6
print(df.loc[3:6])
# Output lines 3 and 6
print(df.loc[[3, 6]])
# Output "Occupation" column
print(df["Occupation"])
# Output "Occupation" and "Age" columns
print(df[["Occupation", "Age"]])
# Selection of multiple rows and columns
print(df.loc[[3, 6], ['Occupation', 'Age']])
```

In het voorbeeld wordt naar een kolom verwezen door de naam ervan tussen enkele haakjes te plaatsen, vergelijkbaar met hoe je waarden in Python-woordenboeken opvraagt. Het attribuut `loc` wordt daarentegen gebruikt om naar rijen te verwijzen. Met `loc` kun je ook logische voorwaarden toepassen om gegevens te filteren. Het volgende codeblok laat zien hoe je alleen de rijen kunt weergeven waarin de waarde voor ‘leeftijd’ groter is dan 30:

```python
print(df.loc[df['Age'] > 30])
```

U kunt echter ook het `iloc` gebruiken om rijen en kolommen te selecteren **op basis van hun positie in het DataFrame**. U kunt bijvoorbeeld de cel weergeven die zich in de derde rij en de vierde kolom bevindt:

```python
print(df.iloc[3, 4]) 
# Output: 
# London
 
print(df.iloc[[3, 4, 6], 4]) 
# Output: 
# 3 London
# 4 Birmingham
# 6 Preston
```

### Hoe je met Pandas DataFrames door regels kunt itereren

Bij het verwerken van gegevens in Python is het vaak nodig om de rijen van een Pandas DataFrame te doorlopen om dezelfde bewerking op alle gegevens toe te passen. Pandas biedt hiervoor twee methoden: `itertuples()` en `iterrows()`. Elke methode heeft zijn eigen voor- en nadelen wat betreft **prestaties en gebruiksvriendelijkheid**.

De methode `iterrows()` retourneert een **tuple van index en Series** voor elke rij in het DataFrame. Een Series is een Pandas- of NumPy-gegevensstructuur die vergelijkbaar is met een Python-lijst, maar betere prestaties biedt. U kunt afzonderlijke elementen in de Series openen met behulp van de **kolomnaam**, wat de gegevensverwerking vereenvoudigt.

Hoewel Pandas Series efficiënter zijn dan Python-lijsten, brengen ze toch enige prestatie-overhead met zich mee. Daarom wordt de `itertuples()` met name aanbevolen voor **zeer grote DataFrames**. In tegenstelling tot `iterrows()` retourneert `itertuples()` de **volledige rij inclusief index** als tuples, die beter presteren dan Series. Met tuples kunt u individuele elementen benaderen met behulp van puntnotatie, vergelijkbaar met het benaderen van attributen van een object.

Een ander belangrijk verschil tussen series en tuples is dat **tuples niet veranderlijk zijn**. Als u dus een DataFrame wilt doorlopen met behulp van `itertuples()` en waarden wilt wijzigen, moet u naar het DataFrame verwijzen met het kenmerk `at` en de index van de tuple. Dit kenmerk werkt op vrijwel dezelfde manier als `loc`. Het volgende voorbeeld illustreert het verschil tussen `iterrows()` en `itertuples()`:

```python
import pandas
df = pandas.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'], 
    'Age': [25, 30, 35], 
    'Income ': [70000.0, 80000.5, 90000.3]
})
for index, row in df.iterrows():
        row['Income'] += 1000
        print(f"Index: {index}, Age: {row['Age']}, Income: {row['Income']}")
for tup in df.itertuples():
        df.at[tup.Index, 'Income'] += 1000 # Change value directly in the DataFrame using at[] 
       print(f “Index: {tup.Index}, Age: {tup.Age}, Income: {df.loc[tup.Index, 'Income']}”)
# Both loops have the same output
```


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/python-pandas-dataframe/](https://www.ionos.com/nl-be/digitalguide/websites/webontwikkeling/python-pandas-dataframe/) for AI/LLM consumption.