<jupyter_start><jupyter_text>Iris  Introduction:This exercise may seem a little bit strange, but keep doing it. Step 1. Import the necessary libraries<jupyter_code>import pandas as pd
import numpy as np<jupyter_output><empty_output><jupyter_text>Step 2. Import the dataset from this [address](https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data).   Step 3. Assign it to a variable called iris<jupyter_code>url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris = pd.read_csv(url)
iris<jupyter_output><empty_output><jupyter_text>Step 4. Create columns for the dataset<jupyter_code># 1. sepal_length (in cm)
# 2. sepal_width (in cm)
# 3. petal_length (in cm)
# 4. petal_width (in cm)
# 5. class

iris.columns = ['sepal_length','sepal_width', 'petal_length', 'petal_width', 'class']
iris<jupyter_output><empty_output><jupyter_text>Step 5.  Is there any missing value in the dataframe? Para verificar los valores nulos en Pandas DataFrame, usamos la isnull()función, esta función devuelve el marco de datos de los valores booleanos que son verdaderos para los valores NaN.<jupyter_code>#Nos dice False cuando NO hay valor nulo
pd.isnull(iris)
pd.isnull(iris).sum()
#No hay valores nulos porque la suma de todo da 0<jupyter_output><empty_output><jupyter_text>Step 6.  Lets set the values of the rows 10 to 29 of the column 'petal_length' to NaN - LOC: obtiene filas (o columnas) con etiquetas particulares del índice.- ILOC: obtiene filas (o columnas) en posiciones particulares en el índice (por lo que solo toma enteros).OJO: el primero se incluye, el segundo se excluye<jupyter_code>iris.iloc[10:30,2] = np.nan
iris.head(20)<jupyter_output><empty_output><jupyter_text>Step 7. Good, now lets substitute the NaN values to 1.0<jupyter_code>#La función pandas.DataFrame.fillna() reemplaza los valores NaN en 
#DataFrame con algún valor determinado.
#Si inplace=True, modifica la llamada DataFrame en su lugar.
#reemplazaremos los NA por 1
iris['petal_length'].fillna(1, inplace = True)
iris.head(20)<jupyter_output><empty_output><jupyter_text>Step 8. Now let's delete the column class<jupyter_code>iris = iris.drop('class', axis=1)
iris<jupyter_output><empty_output><jupyter_text>Step 9.  Set the first 3 rows as NaN<jupyter_code>iris.iloc[0:3,:] = np.nan
iris<jupyter_output><empty_output><jupyter_text>Step 10.  Delete the rows that have NaN La función pandas.DataFrame.dropna() elimina los valores nulos (valores perdidos) del DataFrame dejando caer las filas o columnas que contienen los valores nulos. HOW: Este parámetro determina la forma en que la función deja caer las filas o columnas. Sólo acepta dos cadenas de caracteres, ya sea any o all. Por defecto, se establece como any.- Any: deja caer la fila o columna si hay algún valor nulo en ella.- All: deja caer la fila o columna si faltan todos los valores en ella.<jupyter_code>iris = iris.dropna(how='any')
iris<jupyter_output><empty_output><jupyter_text>Step 11. Reset the index so it begins with 0 again La función Python Pandas DataFrame.reset_index() restablece el índice del DataFrame dado.- Drop: Es un parámetro booleano. Especifica la inserción de índice en la columna del DataFrame. Restablece el índice al índice entero predeterminado.<jupyter_code>iris = iris.reset_index(drop=True)
iris<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08870242732993706, 'fraction_numerical': 0.012286484866646689, 'mean_word_length': 5.79837067209776, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '660438', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 1229, 'n_tokens_neox': 1192, 'n_words': 385, 'path': '10_Deleting/Iris/Exercises.ipynb', 'repo_name': 'PatriciaTrigo1997/pandas_exercises', 'size': '3337'}