A Archivo CSV (valores separados por comas) es un archivo de texto sin formato donde cada línea representa un registro de datos y los campos dentro de cada registro están separados por comas. Se usa comúnmente para hojas de cálculo y bases de datos debido a su simplicidad y legibilidad.
A continuación se muestran algunas operaciones que realizamos mientras trabajamos con archivos CSV de Python en Python
Leer un archivo CSV
La lectura de un archivo CSV se realiza utilizando el objeto lector. El archivo CSV se abre como un archivo de texto con la función open() incorporada de Python que devuelve un objeto de archivo. En este ejemplo, primero abrimos el archivo CSV en modo LECTURA, el objeto de archivo se convierte en un objeto csv.reader y se llevan a cabo otras operaciones. El código y la explicación detallada se proporcionan a continuación.
Python
import csv filename = 'aapl.csv' # File name fields = [] # Column names rows = [] # Data rows with open(filename 'r') as csvfile: csvreader = csv.reader(csvfile) # Reader object fields = next(csvreader) # Read header for row in csvreader: # Read rows rows.append(row) print('Total no. of rows: %d' % csvreader.line_num) # Row count print('Field names are: ' + ' '.join(fields)) print('nFirst 5 rows are:n') for row in rows[:5]: for col in row: print('%10s' % col end=' ') print('n')
Producción
El ejemplo anterior utiliza un archivo CSV. aapl.csv que se puede descargar desde aquí .
Explicación:
- con abierto(...) abre el archivo CSV en modo lectura de forma segura utilizando un administrador de contexto.
- csv.reader(archivocsv) convierte el archivo en un objeto lector CSV.
- siguiente (csvreader) extrae la primera fila como encabezados de columna.
- Recorrido en bucle lector csv para agregar cada fila (como una lista) a las filas.
- Imprima el total de encabezados de filas y las primeras 5 filas de datos en una vista formateada.
Leer archivos CSV en un diccionario con csv
Podemos leer un archivo CSV en un diccionario usando el módulo csv en Python y la clase csv.DictReader. He aquí un ejemplo:
Supongamos que tenemos un empleados.csv El archivo y el contenido dentro de él serán:
nombredepartamentocumpleaños_mes
John SmithHRjulio
Alice JohnsonITOctubre
Bob WilliamsFinanzasEnero
Ejemplo: Esto lee cada fila como un diccionario (encabezados como claves) y luego la agrega a la lista.
Pythonimport csv with open('employees.csv' mode='r') as file: csv_reader = csv.DictReader(file) # Create DictReader data_list = [] # List to store dictionaries for row in csv_reader: data_list.append(row) for data in data_list: print(data)
Producción:
{'nombre': 'John Smith' 'departamento': 'HR' 'cumpleaños_mes': 'julio'}
{'nombre': 'Alice Johnson' 'departamento': 'IT' 'cumpleaños_mes': 'octubre'}
{'nombre': 'Bob Williams' 'departamento': 'Finanzas' 'cumpleaños_mes': 'enero'}
Explicación:
comentarios java
- con abierto(...) abre el archivo usando un administrador de contexto.
- csv.DictReader(archivo) lee cada fila como un diccionario usando encabezados como claves.
- lista_datos.append(fila) almacena cada diccionario en una lista.
Escribir en un archivo CSV
Para escribir en un archivo CSV, primero abrimos el archivo CSV en modo ESCRITURA. El objeto de archivo se convierte en un objeto csv.writer y se realizan más operaciones. El código y la explicación detallada se proporcionan a continuación.
Pythonimport csv # Define header and data rows fields = ['Name' 'Branch' 'Year' 'CGPA'] rows = [ ['Nikhil' 'COE' '2' '9.0'] ['Sanchit' 'COE' '2' '9.1'] ['Aditya' 'IT' '2' '9.3'] ['Sagar' 'SE' '1' '9.5'] ['Prateek' 'MCE' '3' '7.8'] ['Sahil' 'EP' '2' '9.1'] ] filename = 'university_records.csv' with open(filename 'w') as csvfile: csvwriter = csv.writer(csvfile) # Create writer object csvwriter.writerow(fields) # Write header csvwriter.writerows(rows) # Write multiple rows
Explicación:
- campos define los encabezados de las columnas y las filas contienen los datos como una lista de listas.
- con abierto(... 'w') abre el archivo en modo de escritura usando un administrador de contexto.
- csv.writer(archivocsv) crea un objeto de escritura para escribir en el CSV.
- fila de escritura (campos) escribe la fila del encabezado en el archivo.
- escribir filas (filas) escribe todas las filas de datos en el CSV a la vez.
Escribir un diccionario en un archivo CSV
Para escribir un diccionario en un archivo CSV, el objeto de archivo (csvfile) se convierte en un objeto DictWriter. A continuación se proporciona un ejemplo detallado con explicación y código.
Python# importing the csv module import csv # my data rows as dictionary objects mydict = [{'branch': 'COE' 'cgpa': '9.0' 'name': 'Nikhil' 'year': '2'} {'branch': 'COE' 'cgpa': '9.1' 'name': 'Sanchit' 'year': '2'} {'branch': 'IT' 'cgpa': '9.3' 'name': 'Aditya' 'year': '2'} {'branch': 'SE' 'cgpa': '9.5' 'name': 'Sagar' 'year': '1'} {'branch': 'MCE' 'cgpa': '7.8' 'name': 'Prateek' 'year': '3'} {'branch': 'EP' 'cgpa': '9.1' 'name': 'Sahil' 'year': '2'}] # field names fields = ['name' 'branch' 'year' 'cgpa'] # name of csv file filename = 'university_records.csv' # writing to csv file with open(filename 'w') as csvfile: # creating a csv dict writer object writer = csv.DictWriter(csvfile fieldnames=fields) # writing headers (field names) writer.writeheader() # writing data rows writer.writerows(mydict)
Producción
archivo csvConsidere que un archivo CSV se ve así en texto plano:
expediente universitarioExplicación:
- con abierto(...) abre archivos de forma segura utilizando un administrador de contexto.
- csv.DictWriter(... ) asigna claves del diccionario a columnas CSV.
- escribir encabezado() escribe encabezados de columna.
- filas de escritura (mydict) escribe todos los diccionarios como filas CSV.
Leer archivos CSV con Pandas
Podemos leer un CSV de Python archivos con Pandas usando pandas.read_csv() función. He aquí un ejemplo:
Supongamos que tenemos un archivo Employees.csv y el contenido que contiene será:
nombredepartamentocumpleaños_mes
John SmithHRjulio
Alice JohnsonITOctubre
Bob WilliamsFinanzasEnero
En este ejemplo, pd.read_csv() lee el archivo CSV en un Pandas DataFrame. El DataFrame resultante se puede utilizar para diversas tareas de análisis y manipulación de datos.
Pythonimport pandas as pd # Read the CSV file into a DataFrame df = pd.read_csv('employees.csv') # Display the DataFrame print(df)
Producción:
nombre departamento cumpleaños_mes
0 John Smith HR julio
1 Alice Johnson TI de octubre
2 Bob Williams Finanzas enero
Podemos acceder a datos de filtrado de columnas específicas y realizar diversas operaciones utilizando la funcionalidad Pandas DataFrame. Por ejemplo, si queremos acceder a la columna 'nombre' podemos usar df['nombre'].
Python# Access the 'name' column names = df['name'] print(names)
Producción :
0 Juan Smith
1 Alicia Johnson
2Bob Williams
Nombre: nombre tipo d: objeto
Escribir archivos CSV con Pandas
Podemos usar Pandas para escribir archivos CSV. Se puede hacer usando pd.DataFrame() función. En este ejemplo el pandas La biblioteca se utiliza para convertir una lista de diccionarios (mydict) en un DataFrame que representa datos tabulares. Luego, el DataFrame se escribe en un archivo CSV de Python llamado 'output.csv' usando el método to_csv, creando un archivo de datos estructurado y legible para su posterior análisis o uso compartido.
Pythonimport pandas as pd mydict = [ {'branch': 'COE' 'cgpa': '9.0' 'name': 'Nikhil' 'year': '2'} {'branch': 'COE' 'cgpa': '9.1' 'name': 'Sanchit' 'year': '2'} {'branch': 'IT' 'cgpa': '9.3' 'name': 'Aditya' 'year': '2'} {'branch': 'SE' 'cgpa': '9.5' 'name': 'Sagar' 'year': '1'} {'branch': 'MCE' 'cgpa': '7.8' 'name': 'Prateek' 'year': '3'} {'branch': 'EP' 'cgpa': '9.1' 'name': 'Sahil' 'year': '2'} ] # Create a DataFrame from the list of dictionaries df = pd.DataFrame(mydict) # Write the DataFrame to a CSV file df.to_csv('output.csv' index=False)
Archivo CSV de salida:
sucursalcgpanameaño
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Almacenamiento de correos electrónicos en archivos CSV
Comenzamos importando el módulo csv y lo usamos para almacenar nombres y correos electrónicos como valores separados por comas. Usando la función open() creamos un archivo CSV y luego escribimos cada fila usando un objeto escritor con columnas separadas para nombres y correos electrónicos.
tamaño de mi monitorPython
# importing the csv module import csv # field names fields = ['Name' 'Email'] # data rows of csv file rows = [ ['Nikhil' '[email protected]'] ['Sanchit' '[email protected]'] ['Aditya' '[email protected]'] ['Sagar' '[email protected]'] ['Prateek' '[email protected]'] ['Sahil' '[email protected]']] # name of csv file filename = 'email_records.csv' # writing to csv file with open(filename 'w') as csvfile: # creating a csv writer object csvwriter = csv.writer(csvfile) # writing the fields csvwriter.writerow(fields) # writing the data rows csvwriter.writerows(rows)
Producción:
Correos electrónicos en csv Crear cuestionario