Justificación y contexto de tu proyecto

1

Cómo crear tu proyecto de ciencia de datos

2

Crea proyectos para afianzar tus conocimientos en ciencia de datos

3

Cada cuánto hacer un proyecto de datos

4

Dónde sacar ideas para proyectos de ciencia de datos

5

Generar y comunicar un proyecto de datos

6

Casos: personas que ya pasaron por este camino

Quiz: Justificación y contexto de tu proyecto

Ejecutando un proyecto de ciencia de datos

7

Plantea una pregunta interesante

8

Obteniendo los datos para tu proyecto

9

Ejecutando: obteniendo los datos

10

Limpieza de la información

11

Ejecutando: limpia tu conjunto de datos

12

Explora y encuentra patrones en la información

13

Ejecutando: exploración de la información

14

Ejecutando: completando la exploración de la información

15

Enriquecimiento de los datos para análisis profundo

16

Ejecutando: enriquecimiento de los datos

17

Aplicando un modelo de machine learning

18

Ejecutando: aplicando un modelo supervisado de machine learning

19

Ejecutando: aplicando un modelo no supervisado de machine learning

20

Ejecutando: aplicando un modelo no supervisado de anomalías

21

Prepara tu trabajo para comunicarlo con el mundo

22

Ejecutando: prepara tu trabajo para comunicarlo con el mundo

Quiz: Ejecutando un proyecto de ciencia de datos

Comunicando los resultados

23

Por qué es importante comunicar los resultados

24

Escribiendo tu primer blogpost técnico

25

Compartiendo en comunidad con tu primera presentación

26

Cómo mejorar tu repositorio en GitHub para ciencia de datos

27

Haciendo deploy de tus modelos

28

Construyendo una aplicación full stack que consuma tu proyecto

Quiz: Comunicando los resultados

Últimos pasos

29

Elige terminar: es mejor terminado que perfecto

30

Recuerda los objetivos del proyecto: practicar y carta de presentación

31

Comparte tu proyecto

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

18 Días
15 Hrs
5 Min
19 Seg

Ejecutando: completando la exploración de la información

14/31
Recursos

¿Cómo realizar una exploración multidimensional de datos?

La exploración multidimensional es esencial para comprender las relaciones entre variables en un conjunto de datos. Un enfoque común es identificar a los proveedores o beneficiarios con mayor carga económica. Para lograrlo, se puede agrupar la información por beneficiario y sumar los importes. Este proceso revela no solo el número de facturas, sino también el volumen total de dinero facturado por cada entidad.

# Agrupar por beneficiario y sumar importes
compras_df.groupby('beneficiario')['importe'].sum().reset_index().sort_values(by='importe', ascending=False).head(10)

¿Cómo visualizar la información?

La visualización de datos permite identificar patrones de manera eficaz. Para visualizar el gasto promedio por categoría, se pueden utilizar gráficos de barras que muestren importes por diferentes tipos, como gasto en servicios personales y varios, proporcionando un contexto de gastos promedio.

# Media de importes por tipo y visualización
importes_por_tipo = compras_df.groupby('sheet')['importe'].mean().reset_index()
importes_por_tipo.sort_values(by='importe', ascending=False).iloc[:10].plot(kind='bar', x='sheet', y='importe')

¿Cómo analizar las variaciones temporales?

Las fechas y sus correspondientes gastos proporcionan información valiosa sobre las tendencias temporales. Al sumar los importes por fecha, se puede identificar qué periodos son más activos financieramente.

# Suma de importes por fecha
compras_df.groupby('fecha')['importe'].sum().plot(kind='line')

¿Es posible filtrar datos por múltiples variables?

Sí, puedes crear filtros avanzados para examinar gastos específicos. Por ejemplo, es posible seleccionar solo los gastos de "Gastos Varios" para obtener un análisis más detallado.

# Filtrar gastos varios
gastos_varios = compras_df[compras_df['sheet'] == 'Gastos Varios']

También se pueden agrupar los datos, por ejemplo, por beneficiario y tipo de hoja para observar las combinaciones de estos parámetros y la suma de sus importes.

# Agrupar por beneficiario y tipo de hoja
agrupacion = compras_df.groupby(['beneficiario', 'sheet'])['importe'].sum().unstack().fillna(0)

¿Cómo realizar un análisis de texto con nubes de palabras?

Las nubes de palabras son herramientas visuales poderosas para entender de qué se habla mayormente en un texto. Utilizar librerías como nltk y WordCloud permite generarlas a partir de textos procesados.

Preparar el texto

Primero, recolectamos y limpiamos todo el texto de un campo determinado, removiendo palabras comunes ('stopwords') y términos poco informativos.

# Importar las librerías necesarias
import nltk
from nltk.corpus import stopwords

# Texto de los conceptos
texto_compras = " ".join(compras_df['concepto'].tolist()).lower()
stopwords_espanol = set(stopwords.words('spanish'))
palabras = [word for word in texto_compras.split() if word not in stopwords_espanol and len(word) > 2]

Generar la nube de palabras

Utilizando WordCloud, se genera una representación visual que destaca las palabras más recurrentes y, a su vez, puede brindar insights rápidos.

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# Crear e imprimir la nube de palabras
wordcloud = WordCloud(background_color='white').generate(" ".join(palabras))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

Este análisis visual de texto es crucial para obtener una mejor comprensión de los temas importantes en un conjunto de datos textual. Recuerda que con cada análisis, la oportunidad de descubrir más información valiosa incrementa.

A medida que adquieres estas habilidades, te animo a seguir profundizando en el análisis de datos y a explorar nuevas formas de enriquecer tus conjuntos de datos. ¡Tu curiosidad es la clave para dominar el arte de la ciencia de datos!

Aportes 15

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El maestro hace ver el análisis como algo muy fácil de realizar. Mis respetos. Quiero llegar a ese nivel de dominio de las librerías.

Para poder ejecutar el stopword en el COLAB tuve que agregar algunos comandos

import nltk 
nltk.download('book')
from nltk.book import *
from nltk.corpus import stopwords

Mi función para agrupar por característica

def gruopby_caracteristica(data, caracteristica, maths=None):
    if maths == 'sum':
        gruoped_caracteristica = data.groupby(caracteristica).sum()['IMPORTE']
    elif maths == 'mean':
        gruoped_caracteristica = data.groupby(caracteristica).mean()['IMPORTE']
    else:
        gruoped_caracteristica = data.groupby(caracteristica)['IMPORTE']
        
    return gruoped_caracteristica

E hice una para ver las tablas de top ‘IMPORTE’ con opción de graficar

def top_gastos(data, top=None, plot=False,):
    top_tabla = data.reset_index().sort_values(by="IMPORTE", ascending=False).iloc[0:top]    
    if plot == False:
        return top_tabla
    elif plot == True: 
        top_plot = top_tabla.plot(kind='bar')
        return top_plot

Les recomiendo pandas-profiler para automatizar la exploración de datos

Análisis Multidimensional de las Variables

Velocidad promedio versus la trayectoria realizada.

La trayectoria se va a definir como la concatenación entre NAME_FROM y NAME_TO.

Mediana de la velocidad promedio en cada trayecto. VEL_PROMEDIO que es más común en cada trayecto:

añadiendo la función isalpha() parece conseguirse una mejor limpieza

textos_compras = ' '.join([x for x in textos_compras.strip().lower().split(' ') if x.isalpha() and x not in stopwords_list and len(x)>4])

A quienes tienen problemas para instalar wordcloud, deben trabajar con una versión de python menor a la 3.12 ya que esta tiene problemas para instalar dicha librería. Esta testeada desde python 3.11 para abajo segun la documentacion al dia de este comentario.

No se olviden de instalar Wordcloud… a mi no me salían las palabras, porque me salía el siguiente error: "No module found wordcloud"
Y se soluciona, instalando:
pip install wordcloud

El “iloc[0:10]” en el minuto 4 cumple alguna función? Como solo hay 5 categorías me parece que no aporta mucho.

```js mean_importe_sheet = compras_df.groupby('SHEET').mean()['IMPORTE'] ## si Muestra este erro: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) File c:\Users\celio\OneDrive\Escritorio\programación\platzi\CursoparaCreartusProyectosdeCienciadeDatos\venv\Lib\site-packages\pandas\core\groupby\groupby.py:1942, in GroupBy._agg_py_fallback(self, how, values, ndim, alt) 1941 try: -> 1942 res_values = self._grouper.agg_series(ser, alt, preserve_dtype=True) 1943 except Exception as err: File c:\Users\celio\OneDrive\Escritorio\programación\platzi\CursoparaCreartusProyectosdeCienciadeDatos\venv\Lib\site-packages\pandas\core\groupby\ops.py:864, in BaseGrouper.agg_series(self, obj, func, preserve_dtype) 862 preserve_dtype = True --> 864 result = self._aggregate_series_pure_python(obj, func) 866 npvalues = lib.maybe_convert_objects(result, try_float=False) File c:\Users\celio\OneDrive\Escritorio\programación\platzi\CursoparaCreartusProyectosdeCienciadeDatos\venv\Lib\site-packages\pandas\core\groupby\ops.py:885, in BaseGrouper._aggregate_series_pure_python(self, obj, func) 884 for i, group in enumerate(splitter): --> 885 res = func(group) 886 res = extract_result(res) File c:\Users\celio\OneDrive\Escritorio\programación\platzi\CursoparaCreartusProyectosdeCienciadeDatos\venv\Lib\site-packages\pandas\core\groupby\groupby.py:2454, in GroupBy.mean.<locals>.<lambda>(x) 2451 else: 2452 result = self._cython_agg_general( 2453 "mean", -> 2454 alt=lambda x: Series(x, copy=False).mean(numeric_only=numeric_only), 2455 numeric_only=numeric_only, 2456 ) 2457 return result.__finalize__(self.obj, method="groupby") ... -> 1946 raise type(err)(msg) from err 1948 if ser.dtype == object: 1949 res_values = res_values.astype(object, copy=False) TypeError: agg function failed [how->mean,dtype->object] Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... ## se cambia por: print(compras_df['IMPORTE'].dtype) compras_df['IMPORTE'] = pd.to_numeric(compras_df['IMPORTE'], errors='coerce') print(compras_df['IMPORTE'].isna().sum()) compras_df_clean = compras_df.dropna(subset=['IMPORTE']) mean_importe_sheet = compras_df_clean.groupby('SHEET')['IMPORTE'].mean() print(mean_importe_sheet) ```mean\_importe\_sheet = compras\_df.groupby('SHEET').mean()\['IMPORTE']

Es mas complicado trabajar limiando datos de texto dado lo mal que escribimos 🤦🏼‍♂️😅

Qué buena clase!

Buenas, dejo la abstracción del minuto 4:05 potenciado por la función gruopby\_caracteristica() que propuso Miguel Rodríguez. ```js def group_value_by_feature(df, value, feature, math=None): if math == 'sum': grouped_feature = df.groupby(feature)[value].sum() elif math == 'mean': grouped_feature = df.groupby(feature)[value].mean() else: grouped_feature = df.groupby(feature)[value] return grouped_feature ``` ```js def plot_value_by_feature( df, value_column, feature_column, math=None, range_min=None, range_max=30, horizontal = False, ascending=False): plot_kind = "bar" if horizontal: plot_kind += "h" value_feature_sum = group_value_by_feature( df, value_column, feature_column, math ) value_feature_sum.reset_index().sort_values( by=value_column, ascending=ascending ).iloc[range_min:range_max].plot( kind=plot_kind, x = feature_column, y = value_column ) ```
Qué onda 👋, Durante la clase me surgió un problema que me impedía imprimir el word cloud, me daba el error: "[*Only Supported for TrueType fonts*](https://stackoverflow.com/questions/76129498/wordcloud-only-supported-for-truetype-fonts)*".* No reconoce ninguna tipografía sea true type o no, y tampoco hay diferencia si le das el path de la ubicación de la fuente en cuestión Por mi parte, pude resolverlo haciéndole upgrades y la libería `Pillow` a `pip` en general. Lo comento por si alguien está atorado con el mismo problema. * cabe señalar que estoy usando python 3.10 dentro de un entorno de anaconda en macOS ```python pip install --upgrade pip pip install -upgrade Pillow ```

Realizar un análisis multidimensional del conjunto de datos ‘datos_limpuios.csv’ (Mi proyecto) utilizando PCA para reducir la dimensionalidad a un espacio de dos dimensiones, lo que facilita la visualización de la distribución de los datos.