# Importamos las librerías con las que se va a trabajar
# Si hay alguna librería no instalada,utilice el comando pip install nombre_librería
import pandas as pd
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plotly
import plotly.express as px
# Primero creamos un DataFrame
# Plotly express incluye varios DataFrames, tomemos el de iris.csv
df = px.data.iris()
df.head(3)
# Revisemos ahora nuestro dataframe con más detalle
# Cuantos y cuáles son los atributos y clases que tiene el dataframe
df.info()
df.dtypes
# Para la comprobación de valores perdidos se puede hacer a través de las siguiente funciones
df.isna().sum(axis=0)
# La salida muestra que nuestro conjunto de datos está libre de valores nulos
df.isnull().sum()
# Obtener una estadística resumida de nuestro dataframe
df.describe()
# Observe que la función anterior solo muestra el resumen para las variables o columnas numéricas
# Para que incluya todas las variables se pasa el parámetro (include ='all'), inténtelo!
# Comprobación de valores duplicados
df.duplicated().sum()
# Hay tres valores duplicados en nuestro conjunto de datos
df[df.duplicated()] # muestra cuales son las filas que tienen datos repetidos
# Hay 3 puntos de datos duplicados ,eliminarlos podría romper el equilibrio, ya que vemos que nuestro conjunto de datos está balanceado, en la función de estadística resumida para la columna de especies vimos la frecuencia es de 50, que se puede comprobar con la siguiente línea de código.
df['species'].value_counts()
# Entonces podemos dejar los valores duplicados como están y continuar.
# Dado que nuestro Dataset no tiene datos faltantes, agregamos valores (nan) apoyados en la librería Numpy como ejercicio solo práctico, luego pedimos que nos resalte en la tabla estos valores.
df.iloc[0,4] = np.nan
df.iloc[4,3] = np.nan
df.iloc[5,1] = np.nan
df.loc[:5].style.highlight_null(null_color='red')
# Con el fin de hacer más agradable la lectura de la tabla, utilizamos unas funciones que permite la librería Seaborn
df.style.background_gradient(cmap='viridis')
# Como pueden notar, muestra todo el dataframe de forma más atractiva, Sin embargo, note que muestra todo el dataframe.
# Digite el código aquí
# Para limitar el número de filas a visualizar nos apoyamos de la función de pandas iloc o loc
df.iloc[:10].style.background_gradient(cmap='viridis')
# Se puede apreciar que la función STYLE, solo aplica a las variables numéricas.
# Digite el código aquí.
# Continuando con el mismo dataframe utilizado en la sección anterior. Graficar algunas variable de este conjunto de datos apoyados en la librería Plotlyexpress
# Inicialmente intente visualizar todo el dataframe
# fig=px.scatter(df)
# Qué error arroja
fig = px.scatter(df, x='sepal_width')
fig.show()
# Cuánto mide el ancho del sépalo que tiene más data points y en qué filas estan?
# Digite su respuesta aquí.
# Ahora vamos a graficar el ancho del sépala contra el largo del sépalo y que coloree por especie, es decir,
# la setosa de un color, la versicolor de otro y lo mismo para la viginica.
fig = px.scatter(df, x= 'sepal_width', y = 'sepal_length'
)
fig.show()
# Grafiquemos ahora con un histograma cuantas especies hay y cuántos valores tiene cada especie.
fig = px.histogram(df, x= 'species', color= 'species')
fig.show()
fig = px.box(df, x='sepal_width', y='sepal_length')
fig.show()
# Deténgase a analizar el resultado de la visualización pero no todo el resto de la clase, recuerde que hay más ejercicios por hacer y usted es el orgullo de la familia.
# De nuevo utilizamos una grafica de dispersión y vamos a ajustar algunos parámetros para hacer más llamativa e intuitiva esta visualización, tales como hacer que los puntos de datos sean coloreadas por especie
fig = px.scatter(df, x='sepal_width', y='sepal_length',
color='species')
fig.show()
# agregamos una grafica de cajas en la margen vertical x
fig = px.scatter(df, x='sepal_width', y='sepal_length',
color='species',marginal_y='box' )
fig.show()
# Digite su código aquí. El resultado debe ser similar a la siguiente grafica.
# La gráfica debe ser similar a la siguiente, digite el código aquí.
import plotly.express as px
fig = px.density_heatmap(df, x="sepal_length", y="sepal_width", marginal_x="box", marginal_y="violin" )
fig.show()
# Digite el código aquí.
# Ahora se utiliza la función PlotlyExpress px.scatter_matrix para graficar la matriz de dispersión para las columnas del DataFrame. De forma predeterminada, se consideran todas las columnas.
fig = px.scatter_matrix(df)
fig.show()
)
# El resultado debe ser similar al que se muestra en la siguiente figura.
fig = px.scatter_matrix(df,
dimensions=["sepal_width", "sepal_length", "petal_width", "petal_length"],
color="species", symbol="species",
title="Matriz de dispersión para el conjunto de datos IRIS ")
fig.update_traces(diagonal_visible=False)
fig.show()
import plotly.graph_objects as go
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv')
# Este conjunto de datos se descarga directamente desde Internet
# Las flores ahora son etiquetadas como: `Iris-setosa`,
# `Iris-versicolor`, `Iris-virginica`.
# Primero se definen los índices correspondientes a las 3 categorías utilizando la función de encoding de pandas.
index_vals = df['class'].astype('category').cat.codes
fig = go.Figure(data=go.Splom(
dimensions=[dict(label='sepal length',
values=df['sepal length']),
dict(label='sepal width',
values=df['sepal width']),
dict(label='petal length',
values=df['petal length']),
dict(label='petal width',
values=df['petal width'])],
text=df['class'],
marker=dict(color=index_vals,
showscale=False, # colors encode categorical variables
line_color='white', line_width=0.5)
))
fig.update_layout(
title='Iris Data set',
dragmode='select',
width=600,
height=600,
hovermode='closest',
)
fig.show()
df.head(3)