Selección y manejo de filas — 5:35 min

  • 5:35 min | Última modificación: Octubre 6, 2021

Pandas es una librería de alto desempeño para el manejo y análisis de datos en Python ampliamente utilizada en Analítica y Ciencia de Datos, por lo que su dominio resulta fundamental. Pandas se especializa en estructuras “tidy”, es decir, tablas de datos donde cada fila es un registro y cada columna es un atributo.

Este tutorial esta basado en https://es.hortonworks.com/tutorial/beginners-guide-to-apache-pig/

Preparación

[1]:
import pandas as pd

pd.set_option("display.notebook_repr_html", False)

Carga de los datos de los conductores

[2]:
#
# Carga del archivo ddesde un repo en GitHub
#
drivers = pd.read_csv(
    "https://raw.githubusercontent.com/jdvelasq/playground/master/datasets/drivers/drivers.csv",
    sep=",",
    thousands=None,
    decimal=".",
)

drivers.set_index("name", inplace=True)
drivers.head()
[2]:
                   driverId        ssn                   location certified  \
name
George Vetticaden        10  621011971         244-4532 Nulla Rd.         N
Jamie Engesser           11  262112338         366-4125 Ac Street         N
Paul Coddin              12  198041975  Ap #622-957 Risus. Street         Y
Joe Niemiec              13  139907145        2071 Hendrerit. Ave         Y
Adis Cesir               14  820812209        Ap #810-1228 In St.         Y

                  wage-plan
name
George Vetticaden     miles
Jamie Engesser        miles
Paul Coddin           hours
Joe Niemiec           hours
Adis Cesir            hours

Obtención de un subconjunto de registros

[3]:
drivers[3:6]
[3]:
              driverId        ssn             location certified wage-plan
name
Joe Niemiec         13  139907145  2071 Hendrerit. Ave         Y     hours
Adis Cesir          14  820812209  Ap #810-1228 In St.         Y     hours
Rohit Bakshi        15  239005227    648-5681 Dui- Rd.         Y     hours
[4]:
drivers.loc[
    [
        "Joe Niemiec",
        "Rohit Bakshi",
        "Adis Cesir",
    ]
]
[4]:
              driverId        ssn             location certified wage-plan
name
Joe Niemiec         13  139907145  2071 Hendrerit. Ave         Y     hours
Rohit Bakshi        15  239005227    648-5681 Dui- Rd.         Y     hours
Adis Cesir          14  820812209  Ap #810-1228 In St.         Y     hours

## Ordenamiento del indice

[5]:
drivers.sort_index(
    axis=0,
    ascending=False,
).head()
[5]:
                   driverId        ssn                          location  \
name
Wes Floyd                37  190504074   P.O. Box 269- 9611 Nulla Street
Tom McCuch               16  363303105  P.O. Box 313- 962 Parturient Rd.
Teddy Choi               29  185502192       P.O. Box 106- 7003 Amet Rd.
Sridhara Sabbella        33  967409015      Ap #477-2507 Sagittis Avenue
Scott Shaw               38  386411175                 276 Lobortis Road

                  certified wage-plan
name
Wes Floyd                 Y     hours
Tom McCuch                Y     hours
Teddy Choi                Y     hours
Sridhara Sabbella         Y     hours
Scott Shaw                Y     hours

Obtención de un subconjunto de filas usando una expresión regular

[6]:
#
# Nombres que finalicen en 'e'.
#
drivers.filter(regex="e$", axis=0).head()
[6]:
                     driverId        ssn                    location  \
name
Jean-Philippe Playe        25  913310051   P.O. Box 812- 6238 Ac Rd.
Michael Aube               26  124705141  P.O. Box 213- 8948 Nec Ave
Dan Rice                   30  282307061  Ap #881-9267 Mollis Avenue
Andrew Grande              36  245303216    Ap #685-9598 Egestas Rd.

                    certified wage-plan
name
Jean-Philippe Playe         Y     hours
Michael Aube                Y     hours
Dan Rice                    Y     hours
Andrew Grande               Y     hours
[7]:
#
# Nombres que contengan 'de'.
#
drivers.filter(like="de", axis=0).head()
[7]:
                   driverId        ssn                  location certified  \
name
George Vetticaden        10  621011971        244-4532 Nulla Rd.         N
Nadeem Asghar            22  783204269      154-9147 Aliquam Ave         Y
Andrew Grande            36  245303216  Ap #685-9598 Egestas Rd.         Y

                  wage-plan
name
George Vetticaden     miles
Nadeem Asghar         hours
Andrew Grande         hours

Cambio del nombre de filas

[8]:
drivers.rename(
    index={
        "George Vetticaden": "George Vetticaden".upper(),
        "Jamie Engesser": "Jamie Engesser ".upper(),
    }
).head()
[8]:
                   driverId        ssn                   location certified  \
name
GEORGE VETTICADEN        10  621011971         244-4532 Nulla Rd.         N
JAMIE ENGESSER           11  262112338         366-4125 Ac Street         N
Paul Coddin              12  198041975  Ap #622-957 Risus. Street         Y
Joe Niemiec              13  139907145        2071 Hendrerit. Ave         Y
Adis Cesir               14  820812209        Ap #810-1228 In St.         Y

                  wage-plan
name
GEORGE VETTICADEN     miles
JAMIE ENGESSER        miles
Paul Coddin           hours
Joe Niemiec           hours
Adis Cesir            hours