Leer archivos CSV es una tarea fundamental en el procesamiento de datos. A continuación, veremos cómo hacerlo en dos de los lenguajes de programación más populares: Python y Java.
Python ofrece varias formas de leer archivos CSV, siendo las más comunes el módulo csv
integrado y la biblioteca pandas
, muy utilizada en ciencia de datos.
csv
(Python estándar)El módulo csv
de Python permite leer y escribir archivos CSV de manera sencilla, manejando automáticamente las comillas y los delimitadores.
Ejemplo de archivo datos.csv
:
Nombre,Edad,Ciudad
Juan,30,Madrid
Ana,24,"Barcelona, España"
Carlos,35,Valencia
Código Python para leer datos.csv
:
import csv
with open('datos.csv', mode='r', encoding='utf-8') as file:
csv_reader = csv.reader(file)
header = next(csv_reader) # Lee la primera fila como encabezado
print(f"Encabezado: {header}")
for row in csv_reader:
print(row)
# Para leer como diccionarios (más conveniente)
print("\nLeyendo como diccionarios:")
with open('datos.csv', mode='r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
print(row['Nombre'], row['Edad'], row['Ciudad'])
# Acceso por nombre de columna
Explicación:
csv.reader
: Itera sobre las líneas del archivo CSV y devuelve cada línea como una lista de cadenas.next(csv_reader)
: Se usa para leer la primera línea, que generalmente contiene los encabezados.csv.DictReader
: Es una clase muy útil que lee cada fila como un diccionario, donde las claves son los nombres de las columnas (tomados de la primera fila). Esto facilita el acceso a los datos por nombre.encoding='utf-8'
: Es crucial especificar la codificación para evitar problemas con caracteres especiales.pandas
(para análisis de datos)La biblioteca pandas
es el estándar de facto en Python para el análisis y manipulación de datos. Proporciona estructuras de datos como DataFrame
que son ideales para trabajar con datos tabulares.
Para usar pandas, primero necesitas instalarlo: pip install pandas
Código Python para leer datos.csv
con pandas:
import pandas as pd
# Leer el archivo CSV
df = pd.read_csv('datos.csv', encoding='utf-8')
print("DataFrame completo:")
print(df)
print("\nAccediendo a una columna:")
print(df['Nombre'])
print("\nFiltrando datos (ej. personas mayores de 30):")
print(df[df['Edad'] > 30])
Explicación:
pd.read_csv()
: Es la función principal para leer archivos CSV. Es muy potente y tiene muchos parámetros para manejar delimitadores, encabezados, codificaciones, etc.DataFrame
, que es una tabla bidimensional con etiquetas para filas y columnas.df['NombreColumna']
.En Java, puedes leer archivos CSV utilizando clases estándar de I/O o bibliotecas de terceros que ofrecen más funcionalidades.
Scanner
(Java estándar)Para archivos CSV simples, puedes usar la clase Scanner
para leer línea por línea y luego dividir cada línea.
Código Java para leer datos.csv
con Scanner:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class LeerCsvScanner {
public static void main(String[] args) {
String fileName = "datos.csv";
File file = new File(fileName);
try (Scanner scanner = new Scanner(file, "UTF-8")) {
// Leer encabezado
if (scanner.hasNextLine()) {
String headerLine = scanner.nextLine();
String[] headers = headerLine.split(",");
System.out.println("Encabezado: ");
for (String h : headers) {
System.out.print(h + "\t");
}
System.out.println();
}
// Leer datos
while (scanner.hasNextLine()) {
String dataLine = scanner.nextLine();
String[] data = dataLine.split(",");
for (String d : data) {
System.out.print(d + "\t");
}
System.out.println();
}
} catch (FileNotFoundException e) {
System.err.println("Archivo no encontrado: " + fileName);
} catch (Exception e) {
System.err.println("Error al leer el archivo: " + e.getMessage());
}
}
}
Explicación:
Scanner
para leer el archivo, especificando la codificación UTF-8.OpenCSV
(biblioteca de terceros)Para un manejo más robusto de archivos CSV en Java, especialmente aquellos con campos complejos (comas internas, saltos de línea, comillas), se recomienda usar una biblioteca como OpenCSV.
Primero, necesitas añadir la dependencia a tu proyecto (ej. en Maven):
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.9</version> <!-- Usa la versión más reciente -->
</dependency>
Código Java para leer datos.csv
con OpenCSV:
import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class LeerCsvOpenCsv {
public static void main(String[] args) {
String fileName = "datos.csv";
try (CSVReader reader = new CSVReader(new FileReader(fileName))) {
List<String[]> allRecords = reader.readAll();
// Imprimir encabezado
if (!allRecords.isEmpty()) {
String[] header = allRecords.get(0);
System.out.println("Encabezado: ");
for (String h : header) {
System.out.print(h + "\t");
}
System.out.println();
// Imprimir datos
for (int i = 1; i < allRecords.size(); i++) {
String[] record = allRecords.get(i);
for (String field : record) {
System.out.print(field + "\t");
}
System.out.println();
}
}
} catch (IOException | CsvException e) {
System.err.println("Error al leer el archivo CSV: " + e.getMessage());
}
}
}
Explicación:
CSVReader
: Proporciona métodos para leer archivos CSV de forma robusta.readAll()
: Lee todo el archivo y devuelve una List
de String[]
, donde cada String[]
es una fila.Scanner
para CSV complejos.