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