big data

Roles dentro del big data

Es normal que en cualquier ámbito de la vida existan roles para definir el alcance y los límites que tiene una persona dentro de un contexto. En parte es lo que hacemos cuando le damos nombre a las profesiones, no tiene las mismas responsabilidades un desarrollador que un tester de calidad, por ejemplo. Dentro del ámbito del Big Data específicamente ocurre lo mismo, existen varios roles dependiendo de las responsabilidades que tengas en este tipo de proyecto. En este artículo vamos a explicar alguno de ellos. Ingeniero de datos Data engineer Este rol es el encargado de obtener y guardar los datos. Esto incluye preparar los pipelines para la extracción de datos automática desde cada fuente con el objetivo de unificar nuestro centro de datos. En resumen, extraer, transformar y guardar los datos crudos, crear un buen data lake. Esto quiere decir que este rol ha de conocer tecnologías en la nube como Amazon S3, Azure storage, kafka, spark y hadoop entre otros. Científico de datos Data scientist Es un profesional que evalúa, genera, divide e integra el conocimiento del negocio y los datos que se guardan del mismo (en el data lake ya mencionado). Básicamente diseña modelos analíticos, define algoritmos y queries con el objetivo de mejorar el negocio en cuestión. Tienen conocimientos en programación y diferentes herramientas estadísticas como SPSS. Además de estos conocimientos, un científico de datos ha de saber sobre matemática y estadística para poder diseñar estos modelos de forma correcta. Arquitecto de datos Data Architect Se encargan de que el ecosistema big data funcione correctamente y con la menor fricción posible. Organiza, administra, maneja y gobierna la infraestructura Big Data en grandes clusters. Necesita tener experiencia en Java, MapReduce, Hive, HBase, PIG, Sqoop, Linux/Unix, configuración del cluster, nodos de datos, etc. Otros roles Aparte de los roles ya mencionados, podremos escuchar nombrar otros como desarrollador (data developer), ingeniero de machine learning, analista de datos, desarrollador de visualización de datos (data visualization developer) en función de las necesidades de cada empresa y la especialización que requiera el puesto. ¡Si crees que nos hemos dejado algún rol relevante no dudes en decirlo por cualquiera de nuestras redes sociales! Recursos consultados Te dejo la lista de enlaces que he consultado para escribir este artículo aparte de mi propia experiencia. Big Data Roles & Job Responsibilities - Different Types Of Big Data Jobs Job Roles and Responsibilities in Big Data | Career in Big Data Job Roles Big Data - Roles and Responsibilities in Big data jobs Data Engineer vs. Data Scientist: What They Do and How They Work Together Data Scientist vs. Data Engineer: What’s the Difference?

Porque me gustan los notebooks de Jupiter

Cuando me inicié en este mundo no tenía claro que diferenciaba un notebook de un script de Python con texto de por medio. Ahora que ya he normalizado su uso puedo mirar atrás y comentar las principales ventajas que le veo. Los datos se mantienen en memoria La principal ventaja que veo a trabajar con notebooks en la fase de exploración de los datos, si tenemos cuidado, es que la lectura inicial de los datos desde el origen ocurre una vez aunque “rompas” los datos. Me explico, normalmente al inicio solemos leer desde un recurso externo (archivo CSV, API, base de datos, etc.) y guardamos esta información en una variable. Este proceso puede ser más o menos costoso dependiendo del volumen de los datos. Si por alguna razón modificamos los datos guardados en esta variable tendremos que volver a leer la toda la información. Lo bueno que tiene los notebooks es que este proceso de lectura inicial queda aislado en el primer bloque de código el cual no vuelves a ejecutar hasta que creas una sesión nueva. ¿A qué me refiero con que queda aislado? En los notebooks podemos ejecutar solamente el código que se ejecuta dentro de un bloque específico. Teniendo esto en cuenta, podemos tener un primer bloque que inicia las variables con los datos crudos y luego tener variables nuevas las cuales son una copia del conjunto de datos inicial con el que trabajaremos. De esta manera si borramos o modificamos la información que había en el conjunto inicial no necesitamos leer de nuevo desde el origen de los datos, ya que tenemos en memoria el conjunto de datos inicial en esta primera variable. En este caso podemos ver como tenemos un bloque inicial dónde cargamos las librerías y los datos con los que vamos a trabajar en la variable df y posteriormente hacemos una asignación en wii_games del sub-conjunto de datos No tenemos que ejecutar constantemente A diferencia de un script el cual si o si tienes que ejecutar desde el inicio para poder ver un resultado en los notebooks, como mencionamos en el apartado anterior, basta con ejecutar un bloque de código específico. En todo momento tenemos cargadas las variables y funciones que hemos ejecutado previamente. Podemos decir que se trata de un script dinámico. Esto tiene sus inconvenientes, si tenemos una función de ayuda en un bloque de código el cual no hemos ejecutado aún porque está por debajo del actual o porque no hemos ejecutado todos los bloques en esa sesión no tendremos disponible la función. Al final tenemos que tener en cuenta, al igual que un script, el orden de ejecución de los bloques si queremos evitar problemas más adelante. Es por esto que es más fácil trabajar con prueba y error, pues si ejecutamos un bloque y falla bastará con hacer las modificaciones que creamos y ejecutar de nuevo, sin necesidad de lanzar todo el código anterior si ya ha sido ejecutado. Fácil de compartir con un usuario no técnico Por último, estos documentos son fáciles de compartir con usuarios no técnicos. Podemos configurar un notebook para ocultar piezas de código que no aporten a quien vamos a compartir y solamente vea el resultado final de la operación con un texto aclarativo. De igual forma, podemos crear informes dinámicos los cuales muestren resultados en función de los datos de entrada. Esto último es muy útil si, por ejemplo, mensualmente tenemos que mostrar los resultados de ventas, devoluciones y otros datos de nuestro producto y esta información nos viene por un fichero externo en CSV con un formato conocido. Podemos calcular lo que necesitemos y mostrar resultados según el archivo que carguemos cada vez.

¿Cual es la diferencia entre variables cuantitativas y cualitativas?

Cuando estamos trabajando con datos más temprano que tarde nos damos cuenta de que no todos los datos son iguales. Desde el tipo del dato (número, cadena de texto, número natural, etc.) hasta la forma de interpretar que tenemos esas mismas variables. No es lo mismo el número de quejas sobre un tema que el tamaño de una carretera. Estas diferencias tienen un nombre el cual vamos a explicar hoy. Variable categórica o cualitativa Estas variables están formadas por un número finito de opciones válidas (categorías). Un dato categórico no tiene por qué tener un orden lógico. Por ejemplo, el sexo de una persona. Esta variable tiene tres categorías posibles: [hombre, mujer, otro] como ya hemos dicho son opciones limitadas y no tienen un orden. Estas categorías pueden estar representadas por números por otros motivos, pero esto no significa que dejen de ser categóricas (1- hombre, 2-mujer, 3-otro) Variables cuantitativas Este tipo de variables son numéricas y se expresan con cifras y, a su vez, se clasifican en dos tipos dependiendo de la continuidad de las variables. Cuantitativas discretas Las variables de tipo discretas tienen como característica que el número de valores entre dos valores cualesquiera es finito y contable. Por ejemplo el número de quejas de los usuarios sobre un tema, si tomamos el valor 5 y el 9 sabemos que entre estos dos valores existe el 6, 7 y 8. Cuantitativa continua Por otro lado las variables continuas, tienen un número infinito de valores entre dos cualesquiera. Si tomamos el ejemplo anterior, pero en este caso hablamos de tamaño de una carretera entre 5 y 9 existen infinitos valores posibles 5.1, 5.01, 5.0001111, etc. Este tipo de variables no tiene porqué ser solamente numérica también la fecha y hora se considera continua.

¿Qué son las series y los dataframes? Librería Pandas

Pandas es la librería más usada en el mundo del big data si trabajamos con Python. Esta librería tiene unas entidades propias para gestionar los datos las cuales son similares a las que ya existen en el lenguaje. Esto me ha llamado la atención y es por ello que he investigado cuales son las principales diferencias entre las listas de una y dos dimensiones respecto a las series y dataframes. Listas y series Por orden de complejidad lo primero que veremos son las listas de python (arrays) y las series provenientes de pandas. Las listas en python es un objeto el cual contiene cualquier tipo de dato dentro en un orden. Como su nombre indica tenemos una lista de elementos de la siguiente forma: lista = [0, 1, 'dos', 'tres', 12] Como has podido observar esta lista no tiene porque ser de elementos de un mismo tipo. En el ejemplo se puede ver como mezclamos números enteros y cadenas de texto. Esta es la primera de las diferencias con las series, en estas últimas los elementos que contienen han de ser siempre del mismo tipo. Esta es una de sus características principales debido a que una serie se puede considerar como una columna de un conjunto de datos la cual siempre ha de ser del mismo tipo. Por ejemplo, si consideramos la columna nombre en un conjunto de datos esta siempre ha de ser una cadena de texto. Además de esto, las series tienen un índice el cual puede ser no numérico y lo podremos definir explícitamente. d = {'a': 1, 'b': 2, 'c': 3} ser = pd.Series(data=d, index=['a', 'b', 'c']) ser # a 1 # b 2 # c 3 # dtype: int64 Como vemos en este ejemplo definimos un mapa d el cual usaremos para crear nuestra serie y luego le indicaremos cuales serán los índices del resultado. De esta forma podremos acceder a los datos de la serie de forma más “cómoda” con el nombre que le hemos dado a los índices. En el caso de las listas nativas de Python estos índices van definidos por el orden en el que se encuentran partiendo desde cero. Esto mismo nos pasará en las series si no definimos índices. Listas de dos dimensiones y dataframes Una vez hemos comprendido en el apartado anterior las diferencias entre listas y series podremos ver con mayor facilidad en que difieren las listas de dos dimensiones y los dataframe ya que, estos son un conjunto de los anteriores. Al igual que en el caso ya visto, una lista de dos dimensiones nativa de Python puede contener cualquer tipo de dato en su interior: números enteros, cadenas de texto ¡o incluso otras listas! sin embargo, un data frame dentro contiene únicamente series. Por esta razón, los datos dentro de un data frame tienen un tipo por cada columna (serie) d = {'col1': [1, 2], 'col2': [3, 4]} df = pd.DataFrame(data=d) df # col1 col2 # 0 1 3 # 1 2 4 df.dtypes # col1 int64 # col2 int64 # dtype: object