Explicación detallada de las operaciones de lectura y escritura de CSV necesarias para la ciencia de datos

Este artículo lo guía a través de los conceptos básicos de los archivos CSV, por lo que cuando se trata de manejar datos importados, la mayoría de las tareas de lectura, procesamiento y escritura de CSV pueden ser manejadas fácilmente por la biblioteca básica Python csv. Si se van a leer y procesar grandes cantidades de datos, la biblioteca pandas también proporciona un procesamiento CSV rápido y fácil.
inserte la descripción de la imagen aquí

¿Qué es un archivo CSV?

Un archivo CSV (archivo de valores separados por comas) es un archivo de texto sin formato que utiliza una estructura específica para organizar datos tabulares. Debido a que es un archivo de texto sin formato, solo puede contener datos de texto reales, en otras palabras, caracteres ASCII o Unicode imprimibles.

Por lo general, la estructura de un archivo CSV viene dada por su nombre, con comas que separan cada valor de datos específico.

column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...

Cómo cada pieza de datos está separada por comas. La primera fila es el nombre de la columna de datos y, a veces, puede estar vacía. La primera fila son los datos reales. Cada línea después de eso son los datos reales, limitados solo por el tamaño del archivo.

¿De dónde vino el archivo CSV?

Los archivos CSV a menudo son creados por programas que procesan grandes cantidades de datos. Exporte datos de hojas de cálculo y bases de datos e importe en otros programas. Por ejemplo, los resultados de un programa de minería de datos se pueden exportar como un archivo CSV, que luego se puede importar a una hoja de cálculo para analizar datos, generar gráficos para presentaciones o preparar informes para su publicación.

Es muy fácil trabajar con archivos CSV mediante programación. Cualquier lenguaje que admita la entrada de archivos de texto y la manipulación de cadenas, como Python, puede procesar archivos CSV directamente.

Biblioteca CSV para analizar archivos CSV

La biblioteca csv proporciona funciones para leer y escribir archivos CSV. Diseñado para funcionar de forma inmediata con archivos CSV generados con Excel, se adapta a una variedad de formatos CSV. La biblioteca csv contiene objetos y otro código para leer, escribir y manipular datos de archivos CSV.
inserte la descripción de la imagen aquí

Leer archivo CSV

Los archivos CSV se abren como archivos de texto mediante la función open() integrada de Python, que devuelve un objeto de archivo. Luego, la lectura del archivo CSV se realiza mediante el objeto lector.

empleado_cumpleaños.txt

name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March

Método de lectura directa.

import csv

with open('employee_birthday.txt') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {
      
      ", ".join(row)}')
            line_count += 1
        else:
            print(f'\t{
      
      row[0]} works in the {
      
      row[1]} department, and was born in {
      
      row[2]}.')
            line_count += 1
    print(f'Processed {
      
      line_count} lines.')

El método para leer en modo diccionario.

import csv

with open('employee_birthday.txt', mode='r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {
      
      ", ".join(row)}')
            line_count += 1
        print(f'\t{
      
      row["name"]} works in the {
      
      row["department"]} department, and was born in {
      
      row["birthday month"]}.')
        line_count += 1
    print(f'Processed {
      
      line_count} lines.')

La salida final es la misma.

Column names are name, department, birthday month
    John Smith works in the Accounting department, and was born in November.
    Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.

Parámetro del lector de CSV

El objeto del lector puede manejar diferentes estilos de archivos CSV especificando parámetros adicionales.

  • delimitador especifica el carácter utilizado para separar cada campo, el valor predeterminado es una coma (',').
  • quotechar especifica el carácter utilizado para rodear los campos que contienen delimitadores, el valor predeterminado son comillas dobles (' " ').
  • escapechar especifica el carácter utilizado para escapar del delimitador en caso de que no se utilicen comillas, el valor predeterminado es ningún carácter de escape.

direcciones_empleados.txt

name,address,date joined
john smith,1132 Anywhere Lane Hoboken NJ, 07030,Jan 4
erica meyers,1234 Smith Lane Hoboken NJ, 07030,March 2

Este archivo CSV contiene tres campos: nombre, dirección y fecha de unión, separados por comas. El problema es que los datos del campo de dirección también contienen una coma para representar el código postal.

Piense en cómo lidiar con esto?

Escritura de archivos CSV

La escritura de archivos CSV se puede realizar mediante el método .write_row() .

import csv

with open('employee_file.csv', mode='w') as employee_file:
    employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    employee_writer.writerow(['John Smith', 'Accounting', 'November'])
    employee_writer.writerow(['Erica Meyers', 'IT', 'March'])

quotechar se usa para encerrar campos que contienen caracteres especiales para eliminar la ambigüedad.

Varios casos de comportamiento de cotización de control de cotización:

  • csv.QUOTE_NONNUMERIC) # comillas no numéricas
  • csv.QUOTE_ALL # Todos los campos están entrecomillados
  • csv.QUOTE_MINIMAL # Cotizar campos especiales
  • csv.QUOTE_NONE # sin comillas

Se escriben diccionarios.

import csv

with open('employee_file2.csv', mode='w') as csv_file:
    fieldnames = ['emp_name', 'dept', 'birth_month']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({
    
    'emp_name': 'John Smith', 'dept': 'Accounting', 'birth_month': 'November'})
    writer.writerow({
    
    'emp_name': 'Erica Meyers', 'dept': 'IT', 'birth_month': 'March'})

archivo_empleado2.csv

emp_name,dept,birth_month
John Smith,Accounting,November
Erica Meyers,IT,March

Analizar archivo CSV usando la biblioteca pandas

pandas es una biblioteca Python de código abierto que proporciona herramientas de análisis de datos de alto rendimiento y estructuras de datos fáciles de usar para compartir datos, código, resultados de análisis, visualizaciones y texto narrativo.
inserte la descripción de la imagen aquí

pandas leer archivo CSV

hrdata.csv

Name,Hire Date,Salary,Sick Days remaining
Graham Chapman,03/15/14,50000.00,10
John Cleese,06/01/15,65000.00,8
Eric Idle,05/12/14,45000.00,10
Terry Jones,11/01/13,70000.00,3
Terry Gilliam,08/12/14,48000.00,7
Michael Palin,05/23/13,66000.00,8

Usa pandas para leer rápido.

import pandas
df = pandas.read_csv('hrdata.csv')
print(df)

             Name Hire Date   Salary  Sick Days remaining
0  Graham Chapman  03/15/14  50000.0                   10
1     John Cleese  06/01/15  65000.0                    8
2       Eric Idle  05/12/14  45000.0                   10
3     Terry Jones  11/01/13  70000.0                    3
4   Terry Gilliam  08/12/14  48000.0                    7
5   Michael Palin  05/23/13  66000.0                    8

Los formatos de fecha se pueden formatear al leer datos con pandas.

import pandas
df = pandas.read_csv('hrdata.csv', index_col='Name', parse_dates=['Hire Date'])
print(df)
                Hire Date   Salary  Sick Days remaining
Name                                                   
Graham Chapman 2014-03-15  50000.0                   10
John Cleese    2015-06-01  65000.0                    8
Eric Idle      2014-05-12  45000.0                   10
Terry Jones    2013-11-01  70000.0                    3
Terry Gilliam  2014-08-12  48000.0                    7
Michael Palin  2013-05-23  66000.0                    8

pandas escriben en un archivo CSV

El contenido leído en pandas se puede escribir directamente en un nuevo archivo csv.

import pandas
df = pandas.read_csv('hrdata.csv', 
            index_col='Employee', 
            parse_dates=['Hired'],
            header=0, 
            names=['Employee', 'Hired', 'Salary', 'Sick Days'])
df.to_csv('hrdata_modified.csv')

print(df)
Employee,Hired,Salary,Sick Days
Graham Chapman,2014-03-15,50000.0,10
John Cleese,2015-06-01,65000.0,8
Eric Idle,2014-05-12,45000.0,10
Terry Jones,2013-11-01,70000.0,3
Terry Gilliam,2014-08-12,48000.0,7
Michael Palin,2013-05-23,66000.0,8

Supongo que te gusta

Origin blog.csdn.net/qq_20288327/article/details/124097783
Recomendado
Clasificación