Trucos panda
Un lugar para recordar

Funciones importantes de los pandas para recordar.

La siguiente es una lista de tareas comunes junto con funciones de pandas.
UtilidadFunciones
Extraer nombres de columnasdf.columns
Seleccione las 2 primeras filasdf.iloc [: 2]
Seleccione las 2 primeras columnasdf.iloc [:,: 2]
Seleccionar columnas por nombredf.loc [:, ["col1", "col2"]]
Seleccione no aleatorio. de filasgl muestra (n = 10)
Seleccionar fracción de filas aleatorias
df.sample(frac = 0.2)
Cambiar el nombre de las variablesdf.rename ()
Seleccionar una columna como índicedf.set_index ()
Eliminar filas o columnasdf.drop ()
Ordenar valoresdf.sort_values ​​()
Agrupación de variablesdf.groupby ()
Filtracióndf.query ()
Encontrar los valores perdidosdf.isnull ()
Eliminando los valores perdidosdf.dropna( )
Eliminar los duplicadosdf.drop_duplicates ()
Creando maniquíespd.get_dummies ()
Rankingdf.rank ()
Suma acumuladadf.cumsum ()
Cuantilesdf.quantile ()
Seleccionar variables numéricasdf.select_dtypes ()
Concatenando dos marcos de datospd.concat ()
Fusión sobre la base de una variable comúnpd.merge ()


Mostrar todas columnas

Muchas veces queremos ver todas las columnas de un data frame. Esta función nos permitirá ver todos los campos.

pd.set_option('display.max_columns',None)


Encontrar valores únicos de una columna 


print(f"Unique FN: {df['FirstName'].unique()}")

Sustituir valores Na por ceros  


df.fieldname.fillna(0, inplace=True)

Unir dos dataframe por el indice  


pd.merge(df1, df2, left_index=True, right_index=True)


Permutar las filas de un dataframe  


df = df.sample(frac=1).reset_index(drop=True)



Chuletas principales acciones pandas.

Cargamos el fichero sin más desde una ruta relativa:
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv")

# Cargamos el fichero sin más desde una ruta absoluta:
data = pd.read_csv(filepath="/Users/JuanPedro/AnacondaProjects/python-ml-course-master/datasets/titanic/titanic3.csv")

# Cargamos el fichero indicando que el delimitador de los datos es el punto y coma (por defecto es la coma) (acepta expresiones regulares):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";")

# Cargamos la columna "ingresos" como tipo de dato número decimal, y la columna "edad" como número entero (por defecto los datos se cargan sin formato):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32})

# Indicamos que la cabecera de los datos se encuentra en la 4º fila del fichero (por defecto es la 0):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32}, header=3)

# Especificamos los nombres de las cabeceras de las que cargar los datos (por defecto son todas):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32}, header=3, names={"ingresos","edad"})

# Especificamos que empiece a cargar los datos a partir de la fila número 13 (por defecto son todas):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32}, header=3, names={"ingresos","edad"}, skiprows=12)

# Especificamos que el dato de la cuarta columna sea utilizado como etiqueta para identificar a cada fila (por defecto ninguno):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32}, header=3, names={"ingresos","edad"}, skiprows=12, index_col=3)

# Especificamos que queremos que los valores vacíos se carguen como valores vacíos y no NaN (Not a Number) o Nulos (por defecto False):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32}, header=3, names={"ingresos","edad"}, skiprows=12, index_col=3, skip_blank_lines=True)

# Indicamos que se eliminen todas las filas que tengan algún valor vacío (por defecto False):
data = pd.read_csv("python-ml-course-master/datasets/titanic/titanic3.csv", sep=";", dtype={"ingresos":np.float64, "edad":np.int32}, header=3, names={"ingresos","edad"}, skiprows=12, index_col=3, skip_blank_lines=True, na_filter=True)

# Obtenemos el número de filas y columnas del dataset:
data.shape

# Obtenemos los primeros x registros del dataset:
data.head(x)

# Obtenemos los últimos x registros del dataset:
data.tail(x)

# Muestra las cabeceras de las columnas:
data.columns.values()

# Obtenemos el tipo de dato de los valores de cada columna:
data.dtypes

# Cuando tenemos las cabeceras en un fichero y los datos en otro:
data_cols = pd.read_csv("path del fichero de cabeceras")
data_col_list = data_cols["Nombre de la columna"].tolist()
data = pd.read_csv("path del fichero de los datos", header = None, names = data_col_list)

# Función open de Python. Lee el fichero línea a línea en lugar de cargarlo entero en memoria.
# Abrimos el fichero en modo de lectura (read) (para escritura se usa "w" write):
data3 = open("path del fichero de los datos", "r")

# Leemos una línea del fichero (readline()) eliminando los espacios en blanco al principio y al final (strip()) y dividiendo la línea por el delimitador coma (split(",")):
cols = data3.readline().strip().split(",")
cols

# Convertimos el diccionario en un dataframe:
df = pd.DataFrame(main_dict)

# Copiamos un fichero cambiando el delimitador coma (",") por el tabulador ("\t")
infile = "ruta fichero a copiar"
outfile = "ruta fichero nuevo"
with open(infile, "r") as infile1:
with open(outfile, "w") as outfile1:
for line in infile1:
fields = line.strip().split(",")
outfile1.write("\t".join(fields))
outfile1.write("\n")

# Cargamos un fichero .csv de internet con pandas.
medals_url = "http://winterolympicsmedals.com/medals.csv"
medals_data = pd.read_csv(medals_url)

# Cargamos un fichero excel (.xls) (.xlsx) con pandas
titanic2 = pd.read_excel("ruta excel", "nombre pestaña")

# Transformamos un dataframe en ficheros csv, excel, json. Y lo guardamos en nuestro local.
titanic2.to_csv("ruta fichero + nombre.csv")
titanic2.to_excel("ruta fichero + nombre.xls")
titanic2.to_json("ruta fichero + nombre.xls")



# Cargamos un fichero .csv de internet con urllib3.
import csv
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', medals_url)
r.status
response = r.data

# La respuesta está en binario, así que la convertimos en un string.
str_data = response.decode('utf-8')

# Dividimos el string en un array de filas, separándolo por intros.
lines = str_data.split("\n")

# Extraemos la primera línea (cabecera)
col_names = lines[0].split(",")
n_cols = len(col_names)

# Generamos un diccionario vacío donde irá la información.
counter = 0
main_dict = {}
for col in col_names:
main_dict[col] = []

# Procesamos fila a fila la información para ir rellenando el diccionario.
for line in lines:
# Nos saltamos la primera línea porque es la cabecera.
if(counter > 0):
# Dividimos cada string por comas.
values = line.strip().split(",")
# Añadimos cada valor a su respectiva columna del diccionario.
for i in range(len(col_names)):
main_dict[col_names[i]].append(values[i])
counter += 1

print("El dataset tiene %d filas y %d columnas"%(counter, n_cols))

# Convertimos el diccionario a DataFrame
modals_df = pd.DataFrame(main_dict)
print(medals_df.head())

# Comprobamos si la columna "body" tiene valores nulos.
pd.isnull(data["body"])

# Comprobamos si la columna "body" NO tiene valores nulos.
pd.notnull(data["body"])

# Obtenemos el número de valores nulos de una columna.
pd.isnull(data["body"]).values.ravel().sum()

# Obtenemos, de un dataset, 6 valores al azar del campo "Athlete" sin que se repitan:
athletes = np.random.choice(data_main["Athlete"], size = 6, replace = False)

# Eliminamos de un dataset los registros cuyo campo "Athlete" coincidan con los extraídos anteriormente:
data_country_delete = data_country_dp[-data_country_dp["Athlete"].isin(athletes)]



/

Compartir
Identificarse dejar un comentario
Libreria Pandas
Aprende a trabajar con los dataframes en una librería imprescindible en Ciencia de datos y machine learning
/*
*/