Categorías
Python

Con autenticación de usuario angular 4 y el frasco

 

Tabla de Contenidos

  • Qué es un archivo CSV? ¿Dónde reciben archivos CSV viene?
  • Dónde Do archivos CSV viene? de
  • de análisis de archivos CSV con Python incorporada CSV LibraryReading archivos CSV Con csvReading archivos CSV en un archivo de diccionario con csvOptional Python CSV lector ParametersWriting archivos CSV Con csvWriting CSV desde una lectura de archivos CSV diccionario con csv
  • la lectura de archivos CSV Con csv
  • en un archivo de diccionario con csv
  • Opcional Python CSV lector Parámetros
  • escritura de archivos CSV Con csv
  • escritura CSV Desde un
  • de análisis de archivos CSV diccionario con csv
  • Con los pandas LibraryReading archivos CSV Con pandasWriting archivos CSV con las pandas

  • lectura CSV archivos con pandas
  • escritura de archivos CSV con las pandas
  • Conclusión
  • Dónde Do archivos CSV viene?
  • la lectura de archivos CSV Con csv
  • lectura de archivos CSV en un archivo de diccionario con csv
  • Opcional Python CSV lector Parámetros
  • escritura de archivos CSV Con csv
  • escritura CSV de un diccionario con archivo CSV
  • lectura de archivos CSV con pandas
  • escritura de archivos CSV con pandas

Mira ahora Este tutorial tiene un vídeo relacionado curso creado por el equipo del real Python. Mira que junto con el tutorial escrito para profundizar su comprensión: de lectura y escritura de archivos CSV cara

Vamos hacerle: que necesita para obtener la información dentro y fuera de sus programas a través de algo más que el teclado y la consola. El intercambio de información a través de archivos de texto es una forma común de información de acciones entre programas. Uno de los formatos más populares para el intercambio de datos es el formato CSV. Pero, ¿cómo se usa? para conseguir una cosa de

Let claro: que no tiene que (y que no) construir su propio analizador CSV desde cero. Hay varias bibliotecas perfectamente aceptables se pueden utilizar. La biblioteca de Python csv trabajará para la mayoría de los casos. Si su trabajo requiere una gran cantidad de datos o análisis numérico, la biblioteca tiene pandas CSV análisis de capacidades, así, que debe manejar el resto.

En este artículo, usted aprenderá a leer, procesar y CSV de análisis de archivos de texto usando Python. Verá cómo los archivos CSV de trabajo, aprender la biblioteca csv lo más importante construida en Python, y ver cómo funciona el análisis CSV usando la biblioteca pandas.

Así que vamos a empezar!

Tome el Cuestionario: Prueba sus conocimientos con nuestro sistema interactivo “lectura y escritura de archivos CSV en Python” cuestionario. Al finalizar, recibirá una puntuación para que pueda controlar su progreso en el aprendizaje a través del tiempo:

Contesta la trivia »

Qué es un archivo CSV? Un archivo

CSV (archivo de valores separados) es un tipo de archivo de texto plano que los usos estructuración específica para organizar los datos tabulares. Debido a que es un archivo de texto sin formato, puede contener sólo los datos en texto real otras palabras, ASCII imprimible o caracteres Unicode.

La estructura de un archivo CSV se regala por su nombre. Normalmente, los archivos CSV utilizan una coma para separar cada valor de datos específico. Esto es lo que se ve como la estructura:

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
...

Observe cómo cada pieza de datos están separados por una coma. Normalmente, la primera línea identifica cada pieza de datos, en otras palabras, el nombre de una columna de datos. Cada línea subsiguiente después de eso son datos reales y sólo está limitado por las restricciones de tamaño de archivo.

En general, el carácter separador se llama un delimitador, y la coma no es el único utilizado. Otros delimitadores populares incluyen el tabulador (\ t), dos puntos (:) y (punto y coma; caracteres). Adecuadamente analizar un archivo CSV nos obliga a saber qué delimitador se está utilizando.

Dónde Do archivos CSV viene? archivos

CSV se crean normalmente por los programas que manejan grandes cantidades de datos. Ellos son una forma conveniente para exportar datos desde hojas de cálculo y bases de datos, así como la importación o uso en otros programas. Por ejemplo, es posible exportar los resultados de un programa de minería de datos a un archivo CSV y luego importar que en una hoja de cálculo para analizar los datos, generar gráficos para una presentación, o preparar un informe para su publicación.

archivos CSV

son muy fáciles de trabajar mediante programación. Cualquier lenguaje que la entrada de archivos admite texto y la manipulación de cadenas (como Python) pueden trabajar con archivos CSV directamente. de

de análisis de archivos CSV con Python incorporada CSV Biblioteca

La biblioteca csv ofrece funcionalidad tanto de leer y escribir en archivos CSV. Diseñado para funcionar fuera de la caja con los archivos CSV generados en Excel, que se adapta fácilmente a trabajar con una variedad de formatos CSV. La biblioteca contiene objetos CSV y otros códigos para leer, escribir y procesar datos desde y hacia archivos CSV.

lectura de archivos CSV csv Con

lectura de un archivo CSV que se hace mediante el objeto lector. El archivo CSV se abre como un archivo de texto con Python incorporada función open (), que devuelve un objeto de archivo. Esto se hace pasar después al lector, lo que hace el trabajo pesado.

Aquí está el archivo employee_birthday.txt:

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

Aquí está el código para leerlo:

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.')

Esto resulta en la siguiente salida:

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.

Cada fila devuelta por el lector es una lista de elementos de cadena que contiene los datos encontrados por la eliminación de la delimitadores. La primera fila devuelta contiene los nombres de columna, que se maneja de una manera especial.

lectura de archivos CSV en un diccionario con archivo CSV

En lugar de acuerdo con una lista de elementos de cadena individuales, puede leer los datos CSV directamente en un diccionario (técnicamente, un diccionario ordenada) también.

Una vez más, nuestro archivo de entrada, employee_birthday.txt es el siguiente:

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

Aquí está el código para leerlo en un diccionario como este tiempo:

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.')

Esto resulta en la misma salida que antes:

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.

Donde hizo el diccionario llaves vienen? La primera línea del archivo CSV se supone que contiene las claves de usar para crear el diccionario. Si no tiene estos datos en el archivo CSV, debe especificar sus propias claves mediante el establecimiento de los nombres de campos parámetro opcional que contiene una lista de ellos. Python CSV

Opcional lector Parámetros

El objeto lector puede manejar diferentes estilos de archivos CSV especificando parámetros adicionales, algunos de los cuales se muestran a continuación:

  • delimitador Especifica el carácter utilizado para separar cada campo. El valor por defecto es la coma ( »).
  • quotechar especifica el carácter utilizado para campos de sonido envolvente que contienen el carácter delimitador. El valor predeterminado es una cita doble (‘ » ‘).
  • EscapeChar especifica el carácter utilizado para escapar el carácter delimitador, en las citas de casos no se utilizan. El valor predeterminado es sin carácter de escape.

delimitador Especifica el carácter utilizado para separar cada campo. el valor por defecto es la coma (‘, ‘).

quotechar especifica el carácter utilizado para campos de sonido envolvente que contienen el carácter delimitador. el valor predeterminado es una cita doble (‘ » ‘). No se utilizan

EscapeChar especifica el carácter utilizado para escapar el carácter delimitador, en las citas de casos. El valor predeterminado es sin carácter de escape.

Estos parámetros se merece un poco más de explicación. Supongamos que usted está trabajando con el siguiente archivo de employee_addresses.txt: archivo

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 CSV contiene tres campos: nombre, dirección y fecha de incorporación, que están delimitados por comas. El problema es que los datos para el campo de dirección también contiene una coma para indicar el código postal.

Hay tres formas diferentes de manejar esta situación:

  • utilizar una forma diferente delimiterThat, la coma de forma segura se puede utilizar en los propios datos. Se utiliza el parámetro opcional delimitador para especificar el nuevo delimitador.
  • abrigo de los datos en quotesThe la naturaleza especial de su delimitador elegido es ignorado en cadenas entre comillas. Por lo tanto, se puede especificar el carácter utilizado para citar con el parámetro opcional quotechar. Mientras que el personaje también no aparece en los datos, usted está muy bien.
  • Escapa de los caracteres delimitadores en los personajes dataEscape funcionan igual como lo hacen en las cadenas de formato, anulando la interpretación del personaje que se escapó (en este caso, el delimitador). Si se utiliza un carácter de escape, se debe especificar mediante el parámetro opcional EscapeChar.

Usar un delimitador diferente De esa manera, la coma puede ser utilizado con seguridad en los propios datos. Se utiliza el parámetro opcional delimitador para especificar el nuevo delimitador.

Wrap los datos de cotizaciones La naturaleza especial de su delimitador elegido es ignorado en cadenas entre comillas. Por lo tanto, se puede especificar el carácter utilizado para citar con el parámetro opcional quotechar. Mientras que el personaje también no aparece en los datos, usted está muy bien.

Escapa de los caracteres delimitadores en los datos caracteres de escape funcionan igual como lo hacen en las cadenas de formato, anulando la interpretación del personaje que se escapó (en este caso, el delimitador). Si se utiliza un carácter de escape, se debe especificar mediante el parámetro opcional EscapeChar.

escritura de archivos CSV csv Con

También puede escribir en un archivo CSV con un objeto de escritor y 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'])

El parámetro opcional quotechar dice el escritor, que personaje usar para citar campos cuando la escritura. Ya sea citando se utiliza o no, sin embargo, está determinada por el parámetro opcional citar:

  • Si citando se establece en csv.QUOTE_MINIMAL, entonces .writerow () citará campos sólo si contienen el delimitador o el quotechar. Este es el caso por defecto.
  • Si citando se establece en csv.QUOTE_ALL, entonces .writerow () va a citar todos los campos.
  • Si citando se establece en csv.QUOTE_NONNUMERIC, entonces .writerow () va a citar todos los campos que contienen datos de texto y convertir todos los campos numéricos con el tipo de datos float.
  • Si citando se establece en csv.QUOTE_NONE, entonces .writerow () va a escapar delimitadores en lugar de citar ellos. En este caso, también debe proporcionar un valor para el parámetro opcional EscapeChar.

lectura la parte posterior archivo en programas de texto sin formato que el archivo se crea de la siguiente manera:

John Smith,Accounting,November
Erica Meyers,IT,March

escritura CSV archivo de un diccionario con csv

Ya que se puede leer nuestros datos en un diccionario, que es justo que usted debe poder escribirlo de un diccionario así:

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'})

a diferencia DictReader, los nombres de campos parámetro es necesario cuando se escribe un diccionario. Esto tiene sentido, cuando se piensa en ello: sin una lista de nombres de campos, la DictWriter no puede saber qué teclas utilizar para obtener valores de sus diccionarios. También utiliza las teclas de nombres de campo para escribir la primera fila como nombres de columna.

El código anterior genera el siguiente archivo de salida:

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

de análisis de archivos CSV con los pandas Biblioteca

Por supuesto, la biblioteca de Python CSV no es el único juego en la ciudad. La lectura de archivos CSV es posible en los pandas también. Es altamente recomendable si usted tiene una gran cantidad de datos para analizar. pandas

es una biblioteca de Python de código abierto que proporciona herramientas de análisis de datos de alto rendimiento y fácil de estructuras de datos de uso. pandas está disponible para todas las instalaciones de Python, pero es una parte clave de la distribución Anaconda y funciona muy bien en los cuadernos Jupyter para compartir datos, código, los resultados del análisis, visualizaciones y texto narrativo.

Instalación de pandas y sus dependencias en Anaconda se hace fácilmente:

$ conda install pandas

Como se usa pip / pipenv para otras instalaciones de Python:

$ pip install pandas

No vamos a ahondar en los detalles de cómo funciona pandas o cómo usarlo. Para un tratamiento en profundidad sobre el uso de los pandas para leer y analizar grandes conjuntos de datos, consulte el artículo excelente de Shantnu Tiwari en trabajar con grandes archivos de Excel en pandas.

lectura de archivos CSV con las pandas

Para mostrar algo de la energía de las capacidades de los pandas CSV, he creado un archivo de un poco más complicado de leer, llamado hrdata.csv. Contiene datos sobre los empleados de la empresa:

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

lectura CSV en un pandas trama de datos es rápido y sencillo:

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

eso es todo: tres líneas de código, y sólo uno de ellos está haciendo el trabajo real. pandas.read_csv () abre, análisis, y lee el archivo CSV proporcionado, y almacena los datos en una trama de datos. Imprimir los resultados trama de datos en el siguiente resultado:

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

Aquí hay una pena señalar algunos puntos:

  • En primer lugar, los pandas reconoció que la primera línea de la CSV contiene nombres de columna, y los utilizó de forma automática. Yo llamo a esto la Bondad.
  • Sin embargo, pandas también está utilizando índices entero basado en cero en la trama de datos. Esto se debe a que no decimos que lo que debería ser nuestro índice.
  • Además, si nos fijamos en los tipos de datos de nuestras columnas, verá pandas ha convertido correctamente los días de salario y enfermos columnas de números restantes, pero la columna de la fecha de contratación sigue siendo una cadena. Esto se confirma con facilidad en modo interactivo: >>>>>> de impresión (tipo (df [ ‘Fecha de contratación [0]))

Además, si nos fijamos en los tipos de datos de nuestra columnas, verá pandas ha convertido correctamente los días de salario y enfermos columnas de números restantes, pero la columna de la fecha de contratación sigue siendo una cadena. Esto se confirma con facilidad en modo interactivo: de

>>> print(type(df['Hire Date'][0]))

Let hacer frente a estos problemas uno a la vez. Para utilizar una columna diferente como el índice de trama de datos, agregar el parámetro opcional INDEX_COL:

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

Ahora el campo Nombre es nuestro índice de trama de datos:

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

continuación, vamos a fijar el tipo de datos del campo Fecha de contratación. Puede forzar pandas para leer los datos como una fecha con los parse_dates parámetro opcional, que se define como una lista de nombres de columna para tratar como fechas:

import pandas
df = pandas.read_csv('hrdata.csv', index_col='Name', parse_dates=['Hire Date'])
print(df)

notar la diferencia en la salida:

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

La fecha es ahora el formato correcto, lo que se confirma fácilmente en modo interactivo:

>>> print(type(df['Hire Date'][0]))

Si sus archivos CSV no tiene nombres de columna en la primera línea, puede utilizar los nombres de parámetro opcional para proporcionar una lista de nombres de columna. También puede usar esta opción si desea reemplazar los nombres de las columnas previstas en la primera línea. En este caso, también debe contar pandas.read_csv () para ignorar los nombres de columna utilizando el encabezado = 0 parámetro opcional existente:

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

en cuenta que, dado que los nombres de columna cambian, las columnas especificadas en la INDEX_COL y parse_dates parámetros opcionales deben también ser cambiado. Esto ahora se traduce en la siguiente salida:

Hired Salary Sick Days
Employee
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

escritura de archivos CSV con las pandas

Por supuesto, si usted no puede conseguir sus datos fuera de pandas de nuevo, no le hará mucho bien. Escritura de una trama de datos a un archivo CSV es tan fácil como leer una en contra escritura de dejar que los datos con los nuevos nombres de columna 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')

La única diferencia entre el código y el código de la lectura anterior es que la impresión ( df) llamada fue reemplazado por df.to_csv (), proporcionando el nombre del archivo. Las nuevas miradas de archivos CSV como este:

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

Conclusión

Si usted entiende los fundamentos de la lectura de archivos CSV, plana, entonces no tendrá que ser capturado footed cuando se necesita para hacer frente a la importación de datos. La mayoría de lectura CSV, procesamiento y tareas de escritura pueden ser fácilmente manejados por la biblioteca básica de Python csv. Si usted tiene un montón de datos para leer y procesar, la biblioteca pandas proporciona capacidades rápidas y fáciles de manejar, así CSV.

Tome el Cuestionario: Prueba sus conocimientos con nuestro sistema interactivo “lectura y escritura de archivos CSV en Python” cuestionario. Al finalizar, recibirá una puntuación para que pueda controlar su progreso en el aprendizaje a través del tiempo:

Contesta la trivia »

¿Hay otras formas de archivos de texto de análisis sintáctico? ¡Por supuesto! Bibliotecas como antlr, PLY, y todos pueden PlyPlus mango de alta resistencia análisis, y si la manipulación de cadenas simples no trabajo, no siempre son las expresiones regulares.

Pero esos son temas para otros artículos …

Mira ahora Este tutorial tiene un vídeo relacionado curso creado por el equipo del Real Python. Mira que junto con el tutorial escrito para profundizar su comprensión: lectura y escritura de archivos CSV

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *