En Pandas, puedes guardar un DataFrame en un archivo CSV utilizando el método df.to_csv('tu_nombre_de_archivo.csv', index=False), donde df es tu DataFrame e index=False impide que se añada una columna índice.
Si creas un Marco de datos o modificas uno existente, puede que quieras exportarlo para que otras personas puedan trabajar con él, o puedes guardarlo para tu trabajo futuro. Por ejemplo, puede que tengas que presentar una predicción de un proyecto de aprendizaje automático a tu examinador o enviar un conjunto de datos modificado a un compañero de trabajo.
En Python, puedes exportar un DataFrame como un archivo CSV utilizando el método.to_csv() de Pandas .
En este artículo, te guiaré por los principales pasos del proceso y te explicaré los parámetros del método.
Sustituye 'your_file_name.csv' por el nombre y la ruta deseados para tu archivo. El argumento index=False impide que Pandas añada una columna índice a tu CSV.
Creación de un DataFrame Pandas
Veamos ahora la respuesta más larga. En lugar de crear un DataFrame desde cero, importaré un conjunto de datos, lo modificaré y guardaré el DataFrame resultante en formato CSV. El primer paso es importar las bibliotecas necesarias:
import pandas as pd
import seaborn as sns
from sklearn.preprocessing import MinMaxScalerCon la tecnología de
A continuación, podemos importar un conjunto de datos seaborn. El conjunto de datos importado ya es un Pandas Dataframe, por lo que no necesitamos transformarlo.
# We’ll import the 'titanic' dataset from seaborn
df = sns.load_dataset('titanic')print(df.head())Con la tecnología de
survived pclass sex age sibsp parch fare embarked class
0 0 3 male 22.0 1 0 7.2500 S Third
1 1 1 female 38.0 1 0 71.2833 C First
2 1 3 female 26.0 0 0 7.9250 S Third
3 1 1 female 35.0 1 0 53.1000 S First
4 0 3 male 35.0 0 0 8.0500 S Third
who adult_male deck embark_town alive alone
0 man True NaN Southampton no False
1 woman False C Cherbourg yes False
2 woman False NaN Southampton yes True
3 woman False C Southampton yes False
4 man True NaN Southampton no True Con la tecnología de
Modificar un DataFrame Pandas
Ahora, vamos a realizar algún proceso para obtener un nuevo Marco de Datos. Como mi propósito es explorar elmétodo.to_csv()de Pandas, sólo haré una normalización mín-máx en variables numéricas.
scaler = MinMaxScaler()# Choose the columns that have integer or float data-types
numerical columns - df.select_dtypes(include=['float64','int64']).columns
new_df = df.copy()# The min-max scaler will represent all numbers on a 0-to-1 scale
new_df[numerical_columns]= scaler.fit_transform(df[numerical_columns])print(new_df.head())Con la tecnología de
survived pclass sex age sibsp parch fare embarked
0 0.0 1.0 male 0.271174 0.125 0.0 0.014151 S
1 1.0 0.0 female 0.472229 0.125 0.0 0.139136 C
2 1.0 1.0 female 0.321438 0.000 0.0 0.015469 S
3 1.0 0.0 female 0.434531 0.125 0.0 0.103644 S
4 0.0 1.0 male 0.434531 0.000 0.0 0.015713 S
class who adult_male deck embark_town alive alone
Third man True NaN Southampton no False
First woman False C Cherbourg yes False
Third woman False NaN Southampton yes True
First woman False C Southampton yes False
Third man True NaN Southampton no True Con la tecnología de
Guardar un DataFrame de Pandas como CSV
Utilizaremos el métodoDataFrame.to_csv() para guardar el DataFrame modificado como un archivo CSV.
La forma en que llamé a este método garantizó que todos los parámetros se establecieran en sus valores por defecto. Ahora te presentaré los parámetros y cómo puedes cambiar sus valores según tus necesidades.
Parámetros de DataFrame.to_csv() Explicado
Aquí tienes el mismo método .to_csv() con todos los parámetros:
Algunos de estos parámetros son opcionales, como columns,encoding,quoting,lineterminator y storage_options, por lo que sólo establezco valores para ellos, no necesariamente valores por defecto.
El primer parámetro puede ser una cadena, que será el nombre del archivo, o un objeto archivo. Mira este ejemplo:
withopen('new_titanic.csv','w', encoding ='utf=8')asfile:
new_df.to_csv(file)Con la tecnología de
Separadores y valores perdidos
El siguiente parámetro es el separador, que se refiere a cómo se separan los datos. El separador por defecto es la coma, pero podemos cambiarlo por un tabulador o un punto y coma. Un separador de tabulador o punto y coma puede ser útil cuando tus datos exportados deben tener un formato determinado. Además, para los datos que contienen comas, como los textos, utilizar la coma como separador puede provocar cambios no deseados.
Por ejemplo, si tienes "Hola, mundo "como punto de datos, si quieres utilizar el separador coma, también necesitas las comillas para mantenerlo como un único punto de datos. Utilizar en su lugar un tabulador o un separador de punto y coma puede ser la mejor opción, ya que puede ocupar menos memoria que utilizar comas y comillas.
new_df.to_csv('new_titanic.csv', sep ='\t')
new_df_tab = pd.read_csv('new_titanic.csv')Con la tecnología de
0\t0\t3\tmale\t22.0\t1\t0\t7.25\tS\tThird\tman...
1\t1\t1\tfemale\t38.0\t1\t0\t71.2833\tC\tFirst...
2\t1\t3\tfemale\t26.0\t0\t0\t7.925\tS\tThird\t...
3\t1\t1\tfemale\t35.0\t1\t0\t53.1\tS\tFirst\tw...
4\t0\t3\tmale\t35.0\t0\t0\t8.05\tS\tThird\tman... Con la tecnología de
El tercer parámetro, na_rep, se refiere a la representación de los valores perdidos. Las opciones habituales serían dejar la celda vacía para insertar ‘NaN’ o ‘Na’, pero también puedes insertar tu cadena personalizada. Insertaré ‘Datacamp’ en el siguiente ejemplo por cada valor que falte.
new_df.to_csv('new_titanic.csv', na_rep='Datacamp')
new_df_datacamp = pd.read_csv('new_titanic.csv')
new_df_datacamp = pd.DataFrame(new_df_datacamp)#find the missing values
missing_values = new_df_datacamp.isnull().sum()print(missing_values)Con la tecnología de
survived 0
pclass 0
sex 0
age 177
sibsp 0
parch 0
fare 0
embarked 2
class 0
who 0
adult_male 0
deck 688
embark_town 2
alive 0
alone 0Con la tecnología de
Manejo de columnas e índices
Veamos cómo se representan los valores perdidos en la columna age:
0.2711736617240512
0.4722292033174164
0.32143754712239253
0.4345312892686604
0.4345312892686604
Datacamp
0.6732847449107816
0.01985423473234481
0.33400351847197784
0.17064589092736868Con la tecnología de
Si quieres menos decimales, utiliza el parámetro float_formatpara especificar el número de decimales. Aquí sólo utilizaremos tres.
new_df.to_csv('new_titanic.csv', na_rep='Datacamp', float_format='%.3f')
new_df_datacamp = pd.read_csv('new_titanic.csv')
new_df_datacamp = pd.DataFrame(new_df_datacamp)print(new_df_datacamp['age'][:10])Con la tecnología de
0.271
0.472
0.321
0.435
0.435
Datacamp
0.673
0.020
0.334
0.171Con la tecnología de
Si no quieres ver el índice, establece el parámetroindexen False.
También puedes decidir si conservas los nombres de las columnas, utilizando el parámetroheadery fijándolo en True o False, que es la forma de proceder (o puedes fijar los nombres de las columnas).
El parámetro columnste permite seleccionar qué columnas conservar. El parámetroindex_label te permite establecer un nombre para el índice de la columna o una lista de nombres si tienes varios índices.
new_df.to_csv('new_titanic.csv',
index=True,
header=True,
columns=['age','alive'],
index_label='Index')
new_df = pd.read_csv('new_titanic.csv')
new_df = pd.DataFrame(new_df)print(new_df.head())Con la tecnología de
Index age alive
0 0.271174 no
1 0.472229 yes
2 0.321438 yes
3 0.434531 yes
4 0.434531 noCon la tecnología de
Apertura, codificación y compresión de archivos
El parámetro mode te permite decidir qué hacer cuando ya tienes un archivo CSV con el mismo nombre que el que has construido. Si ajustas el parámetro a ‘w’ y ya tienes un archivo new_titanic.csv, el que crees sustituirá al antiguo. Si lo ajustas a ‘x’, el nuevo archivo se crea sólo si no existe ningún archivo con el mismo. Por último, si estableces el parámetro ‘a’, añadirá el nuevo archivo al anterior con el mismo nombre (quizás sólo quieras añadir algunas filas).
El parámetro codificación establece la codificación del nuevo archivo. Si tus datos contienen caracteres especiales, como letras de otros alfabetos, puedes configurarlos en ‘utf-8’ u otra codificación.
El parámetro compressionestablece la forma en que se comprime el nuevo archivo. Por defecto, está configurado como ‘infer’, lo que significa que comprime el archivo según la extensión especificada, pero también puedes especificar la extensión que prefieras.
# Infer the compression
new_df.to_csv('new_titanic.csv.gz')# Specify the compression explicitly
new_df.to_csv('new_data.csv.gz', compression='gzip')# Specify the compression via a dictionary
new_df.to_csv('new_data.zip',
compression={'method':'zip','archive_name':'data.csv'})Con la tecnología de
Cómo utilizar las cotizaciones
El parámetro quotingestablece el tipo de datos que se pondrán entre comillas. Como he dicho antes, cuando tienes un separador de comas y también celdas que contienen comas (como los textos), tienes que decidir qué poner entre comillas.
# Default value, quotes only fields with special characters or separators like tabs and commas
new_df.to_csv('new_titanic.csv', quoting=csv.QUOTE_MINIMAL)# Quotes all fields
new_df.to_csv('new_titanic.csv', quoting=csv.QUOTE_ALL)# Quotes only fields with non-numeric values
new_df.to_csv('new_titanic.csv', quoting=csv.QUOTE_NONNUMERIC)# No field is quoted
new_df.to_csv('new_titanic.csv', quoting=csv.QUOTE_NONE)Con la tecnología de
Datos de tamaño de trozo y fecha-hora
El parámetro chunksize especifica qué parte de tu archivo se escribirá de una vez. Si dejas el valor por defecto, todas las filas se escriben a la vez, pero puedes especificar un número, lo que puede ser útil cuando el archivo es muy grande.
El parámetro date_format establece la representación de los objetos datetime. Puedes especificarlo utilizando elformato strftime .
# Write DataFrame to CSV with dates formatted as 'MM/DD/YYYY'
new_df.to_csv('new_titanic.csv', date_format='%m/%d/%Y')# You can set datetime objects up to seconds
new_df.to_csv('new_titanic.csv', date_format='%Y-%m-%d %H:%M:%S')Con la tecnología de
Conclusión
Con un poco de suerte, ¡ahora estarás preparado para exportar tu DataFrame en el formato que mejor se adapte a tus necesidades!
Te animo a que sigas aprendiendo: aquí tienes algunos recursos que puedes probar:
Explora el análisis de datos con Python. Los DataFrames de Pandas facilitan la manipulación de tus datos, desde la selección o sustitución de columnas e índices hasta la remodelación de tus datos.
Importar datos es el primer paso de cualquier proyecto de ciencia de datos. Aprende por qué los científicos de datos actuales prefieren la función pandas read_csv() para hacerlo.
Utiliza Python Pandas y selecciona columnas de los DataFrames. ¡Sigue nuestro tutorial con ejemplos de código y aprende hoy mismo distintas formas de seleccionar tus datos!
Si creas un Marco de datos o modificas uno existente, puede que quieras exportarlo para que otras personas puedan trabajar con él, o puedes guardarlo para tu trabajo futuro. Por ejemplo, puede que tengas que presentar una predicción de un proyecto de aprendizaje automático a tu examinador o enviar un conjunto de datos modificado a un compañero de trabajo.
En Python, puedes exportar un DataFrame como un archivo CSV utilizando el método
.to_csv()de Pandas .En este artículo, te guiaré por los principales pasos del proceso y te explicaré los parámetros del método.
Si quieres aprender más sobre Pandas, consulta este curso sobre Manipulación de datos con Pandas.
Empezaré con una respuesta rápida para los que tengáis prisa, y luego entraré en los detalles.
Respuesta corta: Cómo guardar Pandas DataFrame en CSV
Para guardar un Pandas DataFrame como CSV, utiliza el método
DataFrame.to_csv():Sustituye
'your_file_name.csv'por el nombre y la ruta deseados para tu archivo. El argumentoindex=Falseimpide que Pandas añada una columna índice a tu CSV.Creación de un DataFrame Pandas
Veamos ahora la respuesta más larga. En lugar de crear un DataFrame desde cero, importaré un conjunto de datos, lo modificaré y guardaré el DataFrame resultante en formato CSV. El primer paso es importar las bibliotecas necesarias:
A continuación, podemos importar un conjunto de datos
seaborn. El conjunto de datos importado ya es un Pandas Dataframe, por lo que no necesitamos transformarlo.Modificar un DataFrame Pandas
Ahora, vamos a realizar algún proceso para obtener un nuevo Marco de Datos. Como mi propósito es explorar elmétodo
.to_csv()de Pandas, sólo haré una normalización mín-máx en variables numéricas.Guardar un DataFrame de Pandas como CSV
Utilizaremos el método
DataFrame.to_csv()para guardar el DataFrame modificado como un archivo CSV.Esto guardará el archivo CSV en el directorio actual. Si necesitas un repaso, lee este tutorial sobre cómo obtener el directorio actual en Python.
La forma en que llamé a este método garantizó que todos los parámetros se establecieran en sus valores por defecto. Ahora te presentaré los parámetros y cómo puedes cambiar sus valores según tus necesidades.
Parámetros de
DataFrame.to_csv()ExplicadoAquí tienes el mismo método
.to_csv()con todos los parámetros:Algunos de estos parámetros son opcionales, como
columns,encoding,quoting,lineterminatorystorage_options, por lo que sólo establezco valores para ellos, no necesariamente valores por defecto.El primer parámetro puede ser una cadena, que será el nombre del archivo, o un objeto archivo. Mira este ejemplo:
Separadores y valores perdidos
El siguiente parámetro es el separador, que se refiere a cómo se separan los datos. El separador por defecto es la coma, pero podemos cambiarlo por un tabulador o un punto y coma. Un separador de tabulador o punto y coma puede ser útil cuando tus datos exportados deben tener un formato determinado. Además, para los datos que contienen comas, como los textos, utilizar la coma como separador puede provocar cambios no deseados.
Por ejemplo, si tienes "Hola, mundo "como punto de datos, si quieres utilizar el separador coma, también necesitas las comillas para mantenerlo como un único punto de datos. Utilizar en su lugar un tabulador o un separador de punto y coma puede ser la mejor opción, ya que puede ocupar menos memoria que utilizar comas y comillas.
El tercer parámetro,
na_rep, se refiere a la representación de los valores perdidos. Las opciones habituales serían dejar la celda vacía para insertar‘NaN’o‘Na’, pero también puedes insertar tu cadena personalizada. Insertaré‘Datacamp’en el siguiente ejemplo por cada valor que falte.Manejo de columnas e índices
Veamos cómo se representan los valores perdidos en la columna
age:Si quieres menos decimales, utiliza el parámetro
float_formatpara especificar el número de decimales. Aquí sólo utilizaremos tres.Si no quieres ver el índice, establece el parámetro
indexenFalse.También puedes decidir si conservas los nombres de las columnas, utilizando el parámetro
headery fijándolo enTrueoFalse, que es la forma de proceder (o puedes fijar los nombres de las columnas).El parámetro
columnste permite seleccionar qué columnas conservar. El parámetroindex_labelte permite establecer un nombre para el índice de la columna o una lista de nombres si tienes varios índices.Apertura, codificación y compresión de archivos
El parámetro
modete permite decidir qué hacer cuando ya tienes un archivo CSV con el mismo nombre que el que has construido. Si ajustas el parámetro a‘w’y ya tienes un archivonew_titanic.csv, el que crees sustituirá al antiguo. Si lo ajustas a‘x’, el nuevo archivo se crea sólo si no existe ningún archivo con el mismo. Por último, si estableces el parámetro‘a’, añadirá el nuevo archivo al anterior con el mismo nombre (quizás sólo quieras añadir algunas filas).El parámetro codificación establece la codificación del nuevo archivo. Si tus datos contienen caracteres especiales, como letras de otros alfabetos, puedes configurarlos en
‘utf-8’u otra codificación.El parámetro
compressionestablece la forma en que se comprime el nuevo archivo. Por defecto, está configurado como‘infer’, lo que significa que comprime el archivo según la extensión especificada, pero también puedes especificar la extensión que prefieras.Cómo utilizar las cotizaciones
El parámetro
quotingestablece el tipo de datos que se pondrán entre comillas. Como he dicho antes, cuando tienes un separador de comas y también celdas que contienen comas (como los textos), tienes que decidir qué poner entre comillas.Datos de tamaño de trozo y fecha-hora
El parámetro
chunksizeespecifica qué parte de tu archivo se escribirá de una vez. Si dejas el valor por defecto, todas las filas se escriben a la vez, pero puedes especificar un número, lo que puede ser útil cuando el archivo es muy grande.El parámetro
date_formatestablece la representación de los objetos datetime. Puedes especificarlo utilizando elformato strftime .Conclusión
Con un poco de suerte, ¡ahora estarás preparado para exportar tu DataFrame en el formato que mejor se adapte a tus necesidades!
Te animo a que sigas aprendiendo: aquí tienes algunos recursos que puedes probar: