<jupyter_start><jupyter_text>Table of Contents1&nbsp;&nbsp;Carga de la librería pandas2&nbsp;&nbsp;Estructuras de datos de pandas2.1&nbsp;&nbsp;Series2.1.1&nbsp;&nbsp;Concepto2.1.2&nbsp;&nbsp;Ejemplos2.1.2.1&nbsp;&nbsp;Creación de una Serie a partir de una lista de valores2.1.2.2&nbsp;&nbsp;Creación de una Serie a partir de un diccionario2.2&nbsp;&nbsp;DataFrames2.2.1&nbsp;&nbsp;Concepto2.2.2&nbsp;&nbsp;Ejemplos2.2.2.1&nbsp;&nbsp;Creación de un DataFrame a partir de un diccionario de Series2.2.2.2&nbsp;&nbsp;Creación de un DataFrame a partir de un diccionario de listas2.2.2.3&nbsp;&nbsp;Creación de un DataFrame a partir de un diccionario de múltiples estructuras3&nbsp;&nbsp;Lectura de datos de archivos3.1&nbsp;&nbsp;Lectura de archivos csv3.1.1&nbsp;&nbsp;Parámetros principales3.1.2&nbsp;&nbsp;Ejemplos3.2&nbsp;&nbsp;Lectura de archivos xlsx3.2.1&nbsp;&nbsp;Parámetros principales3.2.2&nbsp;&nbsp;Ejemplos3.3&nbsp;&nbsp;Lectura de archivos con otros formatos  Carga de la librería pandas Generalmente, para importar cualquier librería escribimos la palabra ***import*** seguida del nombre de la librería y, además, le ponemos un alias para después utilizarla con mayor comodidad.En esta clase, importaremos *pandas* junto a la librería *NumPy*, que utilizaremos en ejemplos más abajo.  Estructuras de datos de pandas Las estructuras de datos típicas de pandas son las *Series* y los *DataFrames* (en esta clase los escribiremos así, aunque es habitual encontrarlos escritos directamente como *series* y *dataframes*).  Series  Concepto Un objeto de tipo Serie es una estructura unidimensional que contiene una secuencia de datos, es decir, es un objeto similar a una lista de valores. Además, también contiene una secuencia de etiquetas asociadas a los datos, que actúan como un índice. La forma general de crear una Serie es la siguiente: Donde:- *data* puede ser una lista de valores, un diccionario de Python, un ndarray (matriz de NumPy), un valor escalar... - *index* es una lista de etiquetas para el eje. Veamos algunos ejemplos.  Ejemplos  Creación de una Serie a partir de una lista de valores En el ejemplo anterior, como no se ha especificado un índice concreto, pandas crea por defecto un índice con números enteros:- El registro 0 es Manzanas- El registro 1 es Cerezas- El registro 2 es Naranjas de zumoSi quieres especificar otro índice distinto, puedes hacerlo así:  Creación de una Serie a partir de un diccionario  DataFrames  Concepto Un DataFrame es una estructura de datos de dos dimensiones: en esencia, es una tabla con filas y columnas, en la cual las columnas tienen un nombre y las filas tienen un índice.  Un DataFrame se puede crear a partir de diversos elementos:- Un diccionario de ndarrays de 1 dimensión, listas, diccionarios o Series- Un ndarray de 2 dimensiones- Otro DataFrame- Etc.Veamos algunos ejemplos.  Ejemplos  Creación de un DataFrame a partir de un diccionario de Series En el ejemplo a continuación, se crean dos Series que después se utilizan para construir un DataFrame. Una vez guardadas las dos Series en dos variables, podemos crear un DataFrame a partir de ellas. Para ello, utilizamos el constructor pd.DataFrame, que contiene un diccionario con el nombre que queremos que tengan las columnas como clave y las Series anteriores como valores: En esencia, una Serie se puede considerar como una columna de un DataFrame.  Creación de un DataFrame a partir de un diccionario de listas El mismo DataFrame del ejemplo anterior también se puede construir de manera muy simple mediante un diccionario que tiene como claves los nombres de las variables (que serán los nombres de las columnas) y como valores las listas que contienen los datos de cada variable: Como ves, un objeto de tipo DataFrame puede contener variables de todo tipo: int (números enteros), string (cadenas de texto), etc. Para comprobar los tipos de las variables de un DataFrame, se utiliza la siguiente propiedad:  Creación de un DataFrame a partir de un diccionario de múltiples estructuras El siguiente ejemplo muestra cómo se construye un DataFrame mediante un diccionario con diversos tipos de variables: Como puedes ver, hemos creado cada columna a partir de una estructura diferente:- Columna 1: un valor constante de tipo Timestamp, que se repetirá tantas veces como valores tenga la columna más larga del DataFrame.- Columna 2: una Serie formada por el valor constante 10 (de tipo float32) repetido 6 veces, ya que queremos que el DataFrame tenga 6 filas.- Columna 3: un valor constante de tipo float64 (lo indicamos al poner un punto a la derecha del número), que se repetirá tantas veces como valores tenga la columna más larga del DataFrame.- Columna 4: una variable categórica con 6 categorías (queremos que el DataFrame tenga 6 filas).- Columna 5: un valor constante de tipo string, que se repetirá tantas veces como valores tenga la columna más larga del DataFrame.- Columna 6: un array de numpy formado por el valor 2 (de tipo int32) repetido 6 veces.Además, hemos añadido un índice manualmente. Comprobemos los tipos de las columnas del DataFrame que acabamos de crear:  Lectura de datos de archivos Lo normal no es crear los datos desde cero como en los ejemplos anteriores. Lo más común es tener datos ya existentes, como por ejemplo en archivos en un formato concreto (.csv, .tsv, .xlsx, .json, etc.) o en tablas SQL, aunque las opciones son muy numerosas. En cualquier caso, el objetivo es el mismo: leer esos datos y cargarlos en un DataFrame para poder procesarlos. Para ello, pandas cuenta con diversas funciones que permiten cubrir prácticamente cualquier caso de uso.   Lectura de archivos csv Un archivo CSV es, en esencia, una tabla de valores que están separados unos de otros mediante comas (aunque también pueden estar separados por otro tipo de delimitadores, como por ejemplo puntos y comas o el caracter "invisible" que surge cuando se presiona la tecla *tab*). Al abrir un archivo de este tipo, habitualmente nos encontraremos algo similar a lo siguiente:<jupyter_code>Producto, Precio,
Manzanas, 0.99,
Cerezas, 2.95,
Naranjas de zumo, 0.79,<jupyter_output><empty_output><jupyter_text>Parámetros principales La función de pandas que se encarga de leer archivos CSV es *pd.read_csv()*. Aunque permite especificar un número enorme de parámetros, aquí mostraremos el uso de esta función incluyendo solo algunos de los más relevantes:- **filepath_or_buffer** es la ruta donde se encuentra el archivo que queremos leer. Debe ir entre comillas (tiene que ser un string).- **sep** es el caracter por el cual los datos están separados unos de otros. Por defecto, pandas considera una coma, pero puedes encontrar archivos csv en los que el caracter es de otro tipo y, para leerlo correctamente, necesitarás especificarlo mediante este parámetro.- **header** permite especificar la fila del archivo csv que se usará para generar los nombres de las columnas. Puede ser:    - "infer", que es el que viene por defecto y equivale a header=0, es decir, los nombres de columna se deducen de la primera línea del archivo.    - Un número entero, para indicar el índice de la fila que se quiere utilizar.     - Una lista de enteros, para generar un multi-índice de columnas.- **names** es una lista con los nombres que se les quiere dar a las columnas. Si el archivo ya tiene un encabezaso y se quiere sobreescribir con la lista de nombres manualmente, se debe pasar el argumento header=0 para indicarlo. No permite nombres duplicados.- **skiprows** son las filas a ignorar, es decir, las filas del archivo que no queremos leer ni incorporar a un DataFrame. Puede especificarse mediante una lista (con los números de las líneas a ignorar, que pueden no ser consecutivas) o mediante un número entero (para ignorar las primeras líneas).- **nrows** es el número de filas a leer. Es útil para archivos muy grandes en los que queremos limitar el número de filas que se cargan en un DataFrame.- **parse_dates** puede ser (entre otras posibles configuraciones que aquí no veremos):    - "True", si queremos que pandas intente cargar el índice como fechas.    - "False", si queremos que pandas no trate de interpretar nada como una fecha.    - Una lista de enteros o nombres, si queremos leer solo ciertas columnas como fechas.    Existen muchísimos otros parámetros de la función read_csv() que pueden utilizarse para generar un DataFrame a partir de un archivo csv, ajustándose a nuestras necesidades de la mejor forma posible.   Ejemplos<jupyter_code># Ejemplo de carga de un csv con delimitador ","
file_path =
time_cols = 

pd.read_csv(filepath_or_buffer=,
            sep=,
            header=,
            names=,
            skiprows=,
            nrows=,
            parse_dates=time_cols)
# Ejemplo de carga de un csv con delimitador " "
file_path =
time_cols = []

pd.read_csv(filepath_or_buffer=,
            sep=,
            skiprows=,
            nrows=,
            parse_dates=time_cols)<jupyter_output><empty_output><jupyter_text>Lectura de archivos xlsx  Parámetros principales Para cargar los datos de archivos excel en DataFrames, pandas cuenta con la función pd.read_excel(). En realidad, esta función no solo está preparada para leer archivos en formato xlsx, sino también en xls, xlsm, xlsb, y odf. Además, cuenta con una opción para cargar una sola hoja del archivo excel o una lista de hojas. De la misma forma que para el caso de los archivos csv, aquí consideraremos solo algunos de los muchos parámetros de esta función:- **io** es la ruta donde se encuentra el archivo que queremos leer. Debe ir entre comillas (tiene que ser un string). - **sheet_name** permite especificar las hojas que se quieren cargar:    - Por defecto es 0 e indica que solo se quiere leer la primera hoja.    - Si es 1, indica que se quiere leer la segunda hoja.    - Si es un string, carga la hoja con el nombre de ese string. Por ejemplo, indicando “Sheet1” se cargará la hoja de nombre "Sheet1".    - Si es una lista, carga las hojas especificadas en la lista. Por ejemplo, la lista [0, 1, "Sheet4"] hará que la función cargue la primera hoja, la segunda hoja y la hoja que tenga el nombre "Sheet4".    - Si es None, cargará todas las hojas.- **header** permite especificar la fila del archivo excel que se usará para generar los nombres de las columnas. Puede ser:    - Un número entero, para indicar el índice de la fila que se quiere utilizar. Por defecto es 0, por lo que usa la primera fila del archivo como etiquetas de las columnas.    - Una lista de enteros, para generar un multi-índice.    - Si es None, no utiliza ningún encabezado.- **skiprows** son las filas a ignorar, es decir, las filas del archivo que no queremos leer ni incorporar a un DataFrame. Puede especificarse mediante una lista (con los números de las líneas a ignorar, que pueden no ser consecutivas) o mediante un número entero (para ignorar las primeras líneas).- **nrows** es el número de filas a leer. Es útil para archivos muy grandes en los que queremos limitar el número de filas que se cargan en un DataFrame.- **parse_dates** puede ser (entre otras posibles configuraciones que aquí no veremos):    - "True", si queremos que pandas intente cargar el índice como fechas.    - "False", si queremos que pandas no trate de interpretar nada como una fecha.    - Una lista de enteros o nombres, si queremos leer solo ciertas columnas como fechas.    Existen muchísimos otros parámetros de la función read_excel() que pueden utilizarse para generar un DataFrame a partir de un archivo en formato xlsx, xls, xlsm, xlsb, y odf.   Ejemplos<jupyter_code># Ejemplo de carga de un archivo xlsx
file_path =
time_cols = []

pd.read_excel(io=,
            sheet_name=,
            header=,
            skiprows=,
            nrows=,
            parse_dates=time_cols)<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup