Table of Contents
Introducción
Hoy queremos presentar uno de los primeros capítulos de formación interna en el que introducimos los fundamentos de las herramientas de tratamiento de DataScience. Hablamos de Pandas, Numpy y Matplotlib. Pandas es una biblioteca de terceros para la computación numérica basada en NumPy. Destaca en el manejo de datos unidimensionales (1D) etiquetados con objetos Series y datos bidimensionales (2D) con objetos DataFrame.
NumPy es una biblioteca de terceros para la computación numérica, optimizada para trabajar con arrays unidimensionales y multidimensionales. Su tipo principal es el tipo de array llamado ndarray. Esta biblioteca contiene muchas rutinas para el análisis estadístico.
Matplotlib es una biblioteca de terceros para la visualización de datos. Funciona bien en combinación con NumPy, SciPy y Pandas.
Creación, lectura y escritura de datos
Para trabajar con datos necesitamos crear estructuras de datos coherentes para almacenarlos, o leerlos de una fuente externa. Por último, pero no menos importante, necesitamos guardarlos después de las modificaciones que hayamos podido hacer.
Las dos estructuras de datos fundamentales son las Series y los Dataframes. Para simplificar los conceptos podríamos decir que una Serie es similar al diccionario de python (par clave-valor) y un Dataframe es una matriz (bidimensional) con sus correspondientes filas y columnas. Usamos Dataframe en caso de que tengamos más de un valor para cada claveUsamos Dataframe en caso de que tengamos más de un valor para cada clave.
Creación de series desde cero
La serie es una matriz unidimensional etiquetada capaz de contener cualquier tipo de datos (enteros, cadenas, números de punto flotante, objetos Python, etc.). Las etiquetas de los ejes se denominan colectivamente índice. Los métodos básicos para crear una Serie son:
A. De la lista:
list = [7, 'Heisenberg', 3.14, -1789710578, 'Happy Eating!']
serie = pd.Series(list)
El índice es como una dirección, así es como se puede acceder a cualquier punto de datos a través del Dataframe o Series. Las filas y las columnas, en el caso del Dataframe, tienen índices, los índices de las filas se llaman índice y para las columnas sus nombres generales de columna. Podemos especificar el índice de esta manera:
list = [7, 'Heisenberg', 3.14, -1789710578, 'Happy Eating!']
index=['A', 'Z', 'C', 'Y', 'E']
s = pd.Series(list, index=index)
B. Del diccionario:
d = {'Chicago': 1000, 'New York': 1300, 'Portland': 900, 'San Francisco': 1100,
'Austin': 450, 'Boston': None}
cities = pd.Series(d)
Creación de Dataframe desde cero
Podemos crear Dataframe de diferentes maneras pero tres de las más utilizadas son:
Del diccionario
employees = pd.DataFrame([{"name":"David",
"surname":"Suarez",
"age":32},
{"name":"Gema",
"surname":"Parreño",
"age":31}], columns=["name","surname","age"])
Si queremos nombrar cada fila con un índice no numérico, podemos especificarlo en este atributo.
employees_by_dni = pd.DataFrame([{"name":"David",
"surname":"Suarez",
"age":32},
{"name":"Gema",
"surname":"Parreño",
"age":31}], columns=["name","surname","age"], index=["76789764A", "78765493G"])
De CSV
El archivo CSV (comma-separated values) es un archivo de texto delimitado que utiliza una coma para separar los valores. Cada línea del archivo es un registro de datos. Cada registro consta de uno o varios campos, separados por comas.
Para leer un fichero externo en formato CSV podemos hacerlo llamando al método read_csv dentro de pandas:
Import pandas as pd
from_csv = pd.read_csv('./path/to/file.csv', index_col=0)
Podemos especificar con el atributo index cuál de las columnas queremos que sea el nombre de la fila.
Normalmente en los CSV la primera columna suele ser el índice, es decir, la dirección por la que podemos acceder a toda la información de cada fila (Ejemplo: get[0] nos daría toda la información de la fila 0, pero también puede ser una cadena get[‘david’]). Podemos especificar con el atributo index, cuál de las columnas del csv queremos que sea el nombre de las filas, es decir, el atributo por el que luego accederemos a toda la información de la fila.
from_csv = pd.read_csv('./path/to/file.csv', index_col=3)
De PARQUET
Al igual que un archivo CSV, Parquet es un tipo de archivo. La diferencia es que Parquet está diseñado como un formato de almacenamiento en columnas para soportar el procesamiento de datos complejos.
Parquet está orientado a las columnas y está diseñado para ofrecer un almacenamiento eficiente de los datos en columnas (bloques, grupos de filas, trozos de columnas…) en comparación con los basados en filas, como CSV.
Para leer un fichero externo en formato Parquet podemos hacerlo llamando al método read_parquet dentro de pandas:
Import pandas as pd
from_parquet = pd.read_parquet('./path/to/file.parquet)
De JSON
En el caso de que el archivo tenga el formato externo como JSON:
from_json = pd.read_json('./path/to/file.json')
Escribiendo el DataFrame
Una vez creado el marco de datos, efectivamente tenemos varias formas de guardar la información en un archivo externo. Y podemos guardarlo en formato CSV o JSON. Utilizaremos los métodos pandas to_csv y to_json y lo guardaremos con el nombre de las extensiones correspondientes:
df_to_write.to_csv("/path/to/file.csv")
df_to_write.to_json("/path/to/file.json")
Por último, pero no menos importante, podemos citar que los formatos SQL también pueden ser utilizados desde pandas para leer y escribir en una base de datos SQL.
Entrena tus habilidades
Si quieres llevar tus habilidades más allá en Ciencia de Datos, hemos creado un curso que puedes descargar gratuitamente aquí enlace.
En el próximo capítulo nos adentraremos en el maravilloso mundo de la indexación, selección y asignación. También daremos una visión general sobre el filtrado y la transformación de datos con pandas.