Uso básico de pandas - Funciones comunes

Uso básico de pandas - Funciones comunes

Registro de funciones utilizadas frecuentemente en pandas y sus funcionalidades

Funciones comunes

Visualización de las primeras N filas

df.head()  # Muestra las primeras 5 filas
df.head(10)  # Muestra las primeras 10 filas


Visualización de las últimas N filas

df.tail()  # Muestra las últimas 5 filas
df.tail(10)  # Muestra las últimas 10 filas


Consulta de índices

df.index  # Obtiene los índices del DataFrame


Consulta de nombres de columnas

df.columns  # Obtiene los nombres de las columnas
df.keys()  # Obtiene los nombres de las columnas
# keys() es equivalente a columns


Ordenamiento por ejes X e Y

df.sort_index(axis='index', ascending=True)  # Ordena por el eje X (índice) en orden ascendente
df.sort_index(axis='index', ascending=False)  # Ordena por el eje X (índice) en orden descendente
df.sort_index(axis='columns', ascending=True)  # Ordena por el eje Y (columnas) en orden ascendente
df.sort_index(axis='columns', ascending=False)  # Ordena por el eje Y (columnas) en orden descendente


Ordenar por el eje X significa ordenar según los índices.

Ordenar por el eje Y significa ordenar según los nombres de las columnas.

Ejemplo de código para las funciones anteriores:

import pandas as pd
from pandas import DataFrame


def view_data(df):
    data = df.head()  # Muestra las primeras 5 filas
    print(data)
    print("*" * 50)
    data = df.head(10)  # Muestra las primeras 10 filas
    print(data)
    print("*" * 50)
    data = df.tail()  # Muestra las últimas 5 filas
    print(data)
    print("*" * 50)
    data = df.tail(10)  # Muestra las últimas 10 filas
    print(data)
    print("*" * 50)


def inspect_index_columns(df: DataFrame):
    index = df.index  # Obtiene los índices
    print(index)
    columns = df.columns  # Obtiene los nombres de las columnas
    print(columns)
    keys = df.keys()  # Obtiene los nombres de las columnas
    print(keys)
    print(df.columns is df.keys())  # keys() es equivalente a columns


def sort_by_index(df: DataFrame):
    # axis : {0 o 'index', 1 o 'columns'}, predeterminado 0
    print(df)
    print("*" * 50)
    result = df.sort_index(axis='index', ascending=True)  # Ordena por el eje X en orden ascendente
    print(result)
    print("*" * 50)
    result = df.sort_index(axis='index', ascending=False)  # Ordena por el eje X en orden descendente
    print(result)


def sort_by_columns(df: DataFrame):
    # axis : {0 o 'index', 1 o 'columns'}, predeterminado 0
    print(df)
    print("*" * 50)
    result = df.sort_index(axis='columns', ascending=True)  # Ordena por el eje Y en orden ascendente
    print(result)
    print("*" * 50)
    result = df.sort_index(axis='columns', ascending=False)  # Ordena por el eje Y en orden descendente
    print(result)


def main():
    df: DataFrame = pd.read_csv("csvs/Src-Affairs.csv")  # Retorna un objeto DataFrame bidimensional
    # view_data(df)

    # inspect_index_columns(df)
    df2 = df[:5]
    # sort_by_index(df2)
    sort_by_columns(df2)


if __name__ == '__main__':
    main()


Selección de una fila específica

df.loc[RangeIndex(1)]  # Índice de tipo RangeIndex, selecciona la primera fila sin reducir dimensionalidad
df.loc[0]  # Índice de tipo RangeIndex, selecciona la primera fila con reducción dimensional
df.loc[RangeIndex(start=5, stop=6)]  # Selecciona la quinta fila sin reducir dimensionalidad
df.loc[5]  # Selecciona la quinta fila con reducción dimensional


Selección de filas mediante slicing

df[1:3]  # Selecciona desde la fila 1 hasta la 3 (excluyendo la 3), como en Python
df[1:]  # Selecciona desde la fila 1 hasta el final
df[:5]  # Selecciona desde el inicio hasta la fila 5 (excluyendo la 5)
df[:]  # Selecciona todas las filas


Selección de una columna

df['gender']  # Selección mediante notación de diccionario
df.gender  # Selección mediante notación de atributo
# df['gender'] es equivalente a df.gender


Selección de múltiples columnas

df.loc[:, ['affairs', 'gender', 'education']]  # Uso de loc[:,] donde los dos puntos representan todas las filas


Selección simultánea de filas y columnas

df.loc[[1, 2, 4], ['affairs', 'gender']]
df.loc[1:5, ['affairs', 'education']]
df.loc[:, ['affairs', 'gender', 'education']]
df.loc[6:, ['affairs', 'gender', 'education']]
df.loc[:5, ['affairs', 'gender', 'education']]


Nota:

① La sintaxis es [filas, columnas], donde las filas pueden ser un slice o lista, y las columnas pueden ser una lista.

② Se puede usar iloc en lugar de loc, con la diferencia de que iloc usa índices numéricos en lugar de etiquetas.

df.iloc[[1, 2, 4], [1, 2, 3]]
df.iloc[1:5, 2:]
df.iloc[:, :5]
df.iloc[6:, 2:5]
df.iloc[:5, :]


Acceso al valor en una posición específica

df.at[1, 'gender']  # Valor en la fila 1, columna 'gender'
df.at[5, 'education']  # Valor en la fila 5, columna 'education'
df.iat[5, 3]  # Valor en la fila 5, columna 3
df.iat[3, 8]  # Valor en la fila 3, columna 8


Nota:

iat es similar a iloc, requiere índices numéricos.

at es similar a loc, permite pasar directamente nombre de índice y columna.

Ejemplo de código para las funciones mencionadas:

import pandas as pd
from pandas import DataFrame, RangeIndex


def select_single_row(df: DataFrame):
    data = df.loc[RangeIndex(1)]  # Selección de la primera fila sin reducir dimensionalidad
    print(data)
    print("*" * 50)
    data = df.loc[0]  # Selección de la primera fila con reducción dimensional
    print(data)
    print("*" * 50)

    data = df.loc[RangeIndex(start=5, stop=6)]  # Selección de la quinta fila sin reducir dimensionalidad
    print(data)
    print("*" * 50)
    data = df.loc[5]  # Selección de la quinta fila con reducción dimensional
    print(data)
    print("*" * 50)


def select_rows(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df[1:3]  # Selección de filas desde la 1 hasta la 3 (excluyendo la 3)
    print(data)
    print("*" * 50)
    data = df[1:]  # Selección desde la fila 1 hasta el final
    print(data)
    print("*" * 50)
    data = df[:5]  # Selección desde el inicio hasta la fila 5 (excluyendo la 5)
    print(data)
    print("*" * 50)
    data = df[:]  # Selección de todas las filas
    print(data)


def select_single_column(df: DataFrame):
    gender = df['gender']  # Selección mediante notación de diccionario
    print(gender)
    print("*" * 50)
    other = df.gender  # Selección mediante notación de atributo
    print(other)
    print("*" * 50)
    print(gender is other)  # df['gender'] es equivalente a df.gender


def select_columns(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.loc[:, ['affairs', 'gender', 'education']]  # Selección de columnas específicas
    print(data)


def select_rows_and_columns(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.loc[[1, 2, 4], ['affairs', 'gender']]
    print(data)
    print("*" * 50)
    data = df.loc[1:5, ['affairs', 'education']]
    print(data)
    print("*" * 50)
    data = df.loc[:, ['affairs', 'gender', 'education']]
    print(data)
    print("*" * 50)
    data = df.loc[6:, ['affairs', 'gender', 'education']]
    print(data)
    print("*" * 50)
    data = df.loc[:5, ['affairs', 'gender', 'education']]
    print(data)
    print("*" * 50)


def select_rows_and_columns2(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.iloc[[1, 2, 4], [1, 2, 3]]
    print(data)
    print("*" * 50)
    data = df.iloc[1:5, 2:]
    print(data)
    print("*" * 50)
    data = df.iloc[:, :5]
    print(data)
    print("*" * 50)
    data = df.iloc[6:, 2:5]
    print(data)
    print("*" * 50)
    data = df.iloc[:5, :]
    print(data)
    print("*" * 50)


def access_values(df: DataFrame):
    print(df)
    print("*" * 50)
    data = df.at[1, 'gender']  # Valor en la fila 1, columna 'gender'
    print(data)
    print("*" * 50)
    data = df.at[5, 'education']  # Valor en la fila 5, columna 'education'
    print(data)
    print("*" * 50)

    data = df.iat[5, 3]  # Valor en la fila 5, columna 3
    print(data)
    print("*" * 50)
    data = df.iat[3, 8]  # Valor en la fila 3, columna 8
    print(data)
    print("*" * 50)


def main():
    df: DataFrame = pd.read_csv("csvs/Src-Affairs.csv")  # Retorna un objeto DataFrame bidimensional
    # select_single_column(df)
    df2 = df[:10]
    # select_rows(df2)
    # select_single_row(df2)
    # select_columns(df2)
    # select_rows_and_columns(df2)
    access_values(df2)


if __name__ == '__main__':
    main()


github

Etiquetas: pandas dataframe Python datos analisis

Publicado el 8-16 20:03