domingo, 14 de julio de 2019

Data Science: Chuleta data wrangling (Cirugía de datos)

Chuleta para cirugía de datos.





# Primero cargamos el fichero como siempre:
%config IPCompleter.greedy=True
import pandas as pd
import numpy as np
data = pd.read_csv("python-ml-course-master/datasets/customer-churn-model/Customer Churn Model.txt")

# OBTENCIÓN DE LAS COLUMNAS QUE NOS INTERESAN DE UN DATAFRAME

# Creamos un nuevo DataFrame sólo con las columnas que nos interesan.
# Nótese los dobles corchetes, pues son necesarios para que el formato devuelto sea también DataFrame.
subconjunto = data[["Account Length", "Phone", "Eve Charge", "Day Calls"]]

# Podemos hacer lo mismo pero pasando los nombres de las columnas en formato lista.
desired_columns = ["Account Length", "Phone", "Eve Charge", "Day Calls"]
subconjunto = data[desired_columns]

# Ahora vamos a hacer lo contrario, es decir, hacer una lista con las columnas que NO queremos y crearnos un DataFrame con el resto.
# Primero obtenemos los nombres de todas las columnas del DataFrame en formato lista.
all_columns_list = data.columns.values.tolist()
# Ahora creamos una lista con los nombres de las columnas que NO queremos.
not_desired_columns = ["Account Length", "Phone", "Eve Charge", "Day Calls"]
# Mediante un bucle, recorremos la lista de todas las columnas, eliminando las no deseadas.
desired_columns = [x for x in all_columns_list if x not in not_desired_columns]
# Y creamos la sublista, como antes, con las columnas deseadas.
subconjunto2 = data[desired_columns]

# Existe otra forma de hacer esto último, que es la siguiente:
a = set(not_desired_columns)
b = set(all_columns_list)
desired_columns = b - a
desired_columns = list(desired_columns)


# OBTENCIÓN DE LAS FILAS QUE NOS INTERESAN DE UN DATAFRAME

# Obtenemos las filas de la 5 a la 10:
filas = data[5:10]

# Obtenemos las filas cuyo valor en la columna "Day Mins" sea mayor a 200:
filas = data[data["Day Mins"] > 200]

# Obtenemos las filas cuyo valor en la columna "State" sea igual a "NY":
filas = data[data["State"] == "NY"]

# Obtenemos las filas cuyo valor en la columna "Day Mins" sea mayor a 200 Y cuyo valor en la columna "State" sea igual a "NY":
filas = data[(data["Day Mins"] > 200) & (data["State"] == "NY")]

# Obtenemos las filas cuyo valor en la columna "Day Mins" sea mayor a 200 O cuyo valor en la columna "State" sea igual a "NY":
filas = data[(data["Day Mins"] > 200) | (data["State"] == "NY")]

# Obtenemos las filas cuyo valor en "Day Calls" sea menor que su valor en "Night Calls":
filas = data[data["Day Calls"] < data["Night Calls"]]


# FILTRAMOS POR FILAS Y COLUMNAS A LA VEZ

# Obtenemos un DataFrame que contenga sólo 3 columnas y las 50 primeras filas del DataFrame original:
subset = data[["Day Mins", "Night Mins", "Account Length"]][1:50]

# Obtenemos las 50 primeras filas y las columnas de la 3 a la 6:
subset = data.iloc[1:50, 3:6]

# Obtenemos las filas 3, 8 y 36, y las 3 columnas indicadas por su nombre:
subset = data.loc[[3, 8, 36], ["Day Mins", "Night Mins", "Account Length"]]


# CREAMOS UNA NUEVA COLUMNA EN EL DATAFRAME

# Creamos una nueva columna "Total Mins" en el DataFrame sumando los valores de otras 3 columnas:
data["Total Mins"] = data["Day Mins"] + data["Night Mins"] + data["Eve Mins"]

No hay comentarios:

Publicar un comentario