CSV

Le format simple pour stocker de la donnée
Author

Ludovic Deneuville

🚧

1 C’est quoi un CSV ?

CSV signifie Comma-Separated Values ➡️ Valeurs séparées par des virgules.

  • Le concept : C’est un format de fichier texte très simple utilisé pour stocker des données tabulaires
  • La structure :
    • Chaque ligne du fichier correspond à une ligne du tableau.
    • Chaque colonne est séparée par un caractère spécial (le “délimiteur”).
  • Le piège : Bien que le nom signifie “virgule”, le délimiteur peut être un point-virgule ; (très fréquent en Europe car la virgule sert aux décimales), une tabulation \t ou un pipe |.
  • Avantages : Léger, universel, lisible par n’importe quel éditeur de texte et très rapide à lire pour les machines.

2 Charger un CSV en R

En R, on utilise soit la fonction de base (read.csv), soit le package readr (plus moderne et rapide), soit data.table (pour les très gros fichiers).

2.1 R base

# Lecture standard (délimiteur virgule)
df <- read.csv("data.csv")

# Lecture avec point-virgule (format européen courant)
df <- read.csv2("data.csv") 

# Options manuelles
df <- read.csv("data.csv", 
               sep = ";",           # Spécifier le délimiteur
               header = TRUE,       # La première ligne contient les noms de colonnes
               dec = ",",           # Utiliser la virgule pour les décimales
               stringsAsFactors = F) # Empêcher la conversion automatique en facteurs

2.2 Avec readr

library(readr)

df <- read_csv("data.csv")
df2 <- read_delim("data.csv", delim = ";")

3 Charger un CSV en Python

3.1 Avec le module natif csv

Utile pour des scripts très légers où l’on ne veut pas installer Pandas.

import csv

with open('data.csv', mode='r', encoding='utf-8') as f:
    reader = csv.reader(f, delimiter=';')
    for row in reader:
        print(row)

3.2 Avec Pandas

import pandas as pd

# Lecture standard (virgule)
df = pd.read_csv('data.csv')

# Options courantes
df = pd.read_csv('data.csv', 
                 sep=';',            # Délimiteur (peut être ',', ';', '\t', etc.)
                 header=0,           # Utiliser la ligne 0 comme en-tête
                 index_col='id',     # Définir une colonne comme index
                 usecols=['A', 'B'], # Ne charger que certaines colonnes
                 encoding='utf-8',    # Gérer l'encodage (ex: 'latin1' si erreur)
                 nrows=100)          # Lire seulement les 100 premières lignes