Series y DataFrames de pandas: primeros pasos

Aprende a trabajar con tablas de datos en Python mediante pandas. Crea Series y DataFrames, carga un archivo CSV y comprueba los datos cargados, y selecciona exactamente las filas y columnas que necesitas por etiqueta con loc y por posición con iloc. Filtra filas mediante condiciones, añade y transforma columnas, ordena valores, asígnales rangos y resume los datos con estadísticos descriptivos, frecuencias absolutas y correlación. Los ejemplos siguen pandas 3.

IntermedioUnidad 2 de 8 del curso Curso de Análisis de datos con Python

Lo que aprenderás

  1. Describe cómo almacena pandas datos etiquetados de una y dos dimensiones, crea Series y DataFrames a partir de datos de Python y gestiona sus etiquetas de filas y columnas.
    • Crea una Series y utiliza su índice
      Crea una Series a partir de una lista o un diccionario, lee sus valores, índice, tipo de datos y nombre, y predice cómo se comportan las etiquetas en operaciones aritméticas y búsquedas.
    • Crea un DataFrame e interpreta su estructura
      Crea un DataFrame a partir de datos de Python, interpreta su forma, columnas, índice y tipos de datos, selecciona una columna como Series y usa correctamente el argumento axis.
    • Establece, restablece, cambia y elimina etiquetas
      Elige un índice de filas significativo, devuélvelo a una columna, cambia los nombres y elimina filas o columnas, y conserva los resultados mediante reasignación.
  2. Lee un archivo CSV en un DataFrame con las opciones adecuadas, inspecciona el resultado de forma sistemática y convierte las columnas a los tipos que necesita el análisis.
    • Lee un archivo CSV con read_csv
      Carga un archivo separado por comas con pd.read_csv, comprende cómo infiere pandas los tipos de las columnas y usa las opciones de separadores, decimales, encabezados, valores faltantes e identificadores.
    • Inspecciona un DataFrame nuevo
      Comprueba una tabla recién cargada con head, info, shape, dtypes, recuentos de valores faltantes y recuentos de valores distintos antes de analizarla.
    • Convierte las columnas a los tipos adecuados
      Cambia el tipo de datos de una columna con astype, pd.to_numeric y pd.to_datetime, y conserva la columna convertida asignándola de nuevo.
  3. Selecciona exactamente las filas, columnas y valores individuales que necesitas con loc (etiquetas) e iloc (posiciones), y predice la forma y el tipo de cada resultado.
    • Selecciona filas y columnas por etiqueta con loc
      Usa df.loc[rows, columns] con etiquetas individuales, listas, segmentos con ambos extremos incluidos y máscaras booleanas, y reconoce cuándo no existe una etiqueta.
    • Selecciona por posición con iloc y elige el selector adecuado
      Usa df.iloc[rows, columns] con posiciones enteras, segmentos que excluyen el extremo final y posiciones negativas, lee valores individuales con at e iat y decide entre la selección por etiqueta y por posición.
  4. Conserva solo las filas que cumplen una o varias condiciones mediante máscaras booleanas, los métodos auxiliares para pruebas habituales y query, y modifica de forma segura los valores de las filas seleccionadas.
    • Filtra con máscaras booleanas
      Crea a partir de una comparación una máscara de True/False, combina condiciones con &, | y ~, cuenta las coincidencias y comprende cómo se comportan los valores faltantes en las comparaciones.
    • Utiliza métodos auxiliares y query para filtros habituales
      Filtra con isin, between, isna/notna y str.contains, y escribe las mismas condiciones como una cadena legible de query.
    • Modifica de forma segura los valores de las filas seleccionadas
      Actualiza los valores de las filas que cumplen una condición con una sola asignación mediante loc y evita la asignación encadenada, que no modifica la tabla original en pandas 3.
  5. Crea columnas nuevas a partir de las existentes con aritmética vectorizada y assign, y recodifica o transforma valores con np.where, map, apply y replace.
    • Calcula columnas nuevas a partir de las existentes
      Añade o sobrescribe una columna con aritmética vectorizada, usa assign para crear columnas en una cadena y predice cómo afectan al resultado los valores faltantes y la alineación por índices.
    • Recodifica y transforma valores con np.where, map y apply
      Convierte condiciones en etiquetas con np.where, traduce valores con map y replace, aplica tus propias funciones con apply y prefiere las formas vectorizadas cuando existan.
  6. Ordena filas por una o varias columnas, asigna rangos a los valores con una regla adecuada para los empates, calcula estadísticos descriptivos para columnas numéricas y de texto, y cuenta valores y relaciones.
    • Ordena filas por sus valores o por el índice
      Ordena un DataFrame por una o varias columnas en cualquier dirección, controla la ubicación de los valores faltantes y el orden de los empates, y encuentra las filas con valores más altos o más bajos.
    • Asigna rangos a los valores y resuelve los empates
      Asigna a cada valor su rango con rank, elige un método para resolver empates que se ajuste al propósito y expresa los rangos como percentiles.
    • Resume columnas mediante estadísticos descriptivos
      Calcula recuentos, totales, medidas de tendencia central, dispersión y cuartiles con métodos de pandas y describe, interprétalos y trata correctamente los valores faltantes y las columnas de texto.
    • Cuenta valores y mide relaciones
      Cuenta cuántas veces aparece cada valor, enumera los valores distintos, expresa los recuentos como proporciones y mide la relación lineal entre dos columnas numéricas mediante la correlación.

Guía de estudio de Series y DataFrames de pandas

6 capítulos

1

Comprende las Series y los DataFrames

Las etiquetas convierten una secuencia de números en datos que puedes identificar y combinar. Crea una Series para una variable y un DataFrame para varias variables, y después interpreta sus dimensiones y tipos. Verás por qué importa emparejar etiquetas en las operaciones aritméticas, en qué se diferencia una columna de una tabla de una columna y cómo elegir, restablecer o cambiar el nombre de un índice modifica las búsquedas posteriores. Estas estructuras sirven de base para todas las selecciones y cálculos que siguen.

1.1 Crea una Series y utiliza su índice

Una Series mantiene una secuencia de valores junto con sus etiquetas. Esas etiquetas dan significado a los valores: una medición de lluvia corresponde a un día y una población corresponde a una ciudad. Importa pandas y NumPy con sus nombres cortos habituales.

import pandas as pd
import numpy as np
rain = pd.Series([4.5, 3.0, 6.2],
                 index=["Mon", "Tue", "Wed"], name="rain_mm")
Lee valores y etiquetas

Los valores son 4,5; 3,0 y 6,2; el índice es Mon, Tue y Wed. Sin index=, pandas proporciona las etiquetas 0, 1 y 2. Un diccionario proporciona ambos a la vez: pd.Series({"Lima": 10, "Oslo": 5, "Pune": 7}) toma sus etiquetas de las claves, en el orden del diccionario.

Los atributos describen la Series sin paréntesis: rain.index contiene las etiquetas, rain.dtype es float64, rain.name es "rain_mm" y rain.size es 3. Usa rain.to_numpy() cuando necesites un arreglo de NumPy. El atributo más antiguo .values devuelve distintos tipos de arreglo según el tipo de datos; los datos de texto pueden dar un arreglo de pandas.

Un tipo de datos indica a pandas qué clase de valores almacena. Los tipos habituales son int64 para enteros, float64 para decimales, bool para True/False, str para texto y datetime64 para fechas y horas. pandas 3 infiere el texto como str; los ejemplos antiguos suelen mostrar object.

Trabaja con toda la Series

Para s = pd.Series([10, 20, 30], index=["a", "b", "c"]), s * 2 produce los valores 20, 40 y 60. s > 15 produce False, True y True. Ambos conservan las etiquetas. Estas operaciones son vectorizadas: una expresión actúa sobre toda la Series sin un bucle de Python.

Busca una etiqueta con s["b"], que da 20. Busca una posición con s.iloc[0], que da 10. La expresión "b" in s comprueba el índice; 20 in s es False. Incluso un entero entre corchetes es una etiqueta: con el índice [2, 0, 1], s[0] significa la etiqueta 0, no la primera entrada. Con etiquetas de texto, s[0] genera KeyError en pandas 3.

Empareja etiquetas en operaciones aritméticas
a = pd.Series([1, 2, 3], index=["x", "y", "z"])
b = pd.Series([10, 20, 30], index=["y", "z", "w"])
a + b

La etiqueta compartida y combina 2 y 10 para dar 12,0; z combina 3 y 20 para dar 23,0. Las etiquetas w y x aparecen en una sola entrada, por lo que reciben NaN. El resultado incluye las cuatro etiquetas. Sumar según la posición visual de las filas daría incorrectamente 11, 22 y 33.

Usa a.add(b, fill_value=0) cuando un valor ausente deba contar como cero. Sus resultados son w 30,0, x 1,0, y 12,0 y z 23,0. Entre los métodos relacionados están sub, mul y div.

Reconoce los valores faltantes

Un valor faltante de coma flotante o str usa NaN; una fecha u hora faltante usa NaT; un entero faltante en un tipo que admite valores faltantes usa <NA>. pd.Series([1, None, 3]) pasa a ser float64 y muestra 1,0, NaN y 3,0, porque el tipo habitual int64 no puede contener NaN.

Puntos clave

  • Una Series combina una secuencia de valores con un índice, un tipo de datos y un nombre opcional.
  • Usa una etiqueta para buscar y iloc para una posición; las pruebas de pertenencia comprueban las etiquetas.
  • La aritmética vectorizada actúa sobre todos los valores y conserva el índice.
  • Dos Series se alinean por etiqueta; las etiquetas sin correspondencia dan resultados faltantes salvo que se indique un valor de relleno.
  • Los marcadores de valores faltantes dependen del tipo de datos: NaN, NaT o <NA>.

1.2 Crea un DataFrame e interpreta su estructura

Un DataFrame es una tabla bidimensional. Cada fila registra una observación, como un pedido; cada columna contiene una variable, como una cantidad. Las columnas pueden tener distintos tipos de datos, pero comparten el mismo índice de filas.

Crea una tabla a partir de datos de Python
df = pd.DataFrame({
    "product": ["Notebook", "Desk lamp", "Pen set", "Mug"],
    "quantity": [3, 1, 2, 4],
    "unit_price": [2.50, 18.00, 4.75, 6.00]
})

Cada clave del diccionario se convierte en un nombre de columna; cada lista proporciona los valores de esa columna. Las listas deben tener la misma longitud para que cada fila tenga un lugar en cada columna. Aquí las etiquetas del índice van de 0 a 3. Las listas de distinta longitud generan un ValueError.

Una lista de diccionarios, en cambio, proporciona un diccionario por fila. pd.DataFrame([{"a": 1, "b": 2}, {"a": 3, "c": 4}]) crea las columnas a, b y c. La b que falta en la segunda fila y la c que falta en la primera se convierten en NaN, por lo que esas columnas usan float64. Un arreglo bidimensional de NumPy también puede proporcionar valores, con columns=[...] para nombrar las columnas.

Interpreta las dimensiones de la tabla

df.shape es (4, 3): cuatro filas y tres columnas, en ese orden. len(df) es 4, mientras que df.size es 12 porque cuenta las celdas. df.index contiene las etiquetas de fila, df.columns contiene las etiquetas de columna y df.dtypes da un tipo de datos por columna. Estos son atributos: df.shape() intenta llamar a una tupla y genera TypeError. df.T intercambia filas y columnas.

Conserva una Series o conserva una tabla
SelecciónResultado
df["quantity"]Una Series
df[["quantity"]]Un DataFrame de una columna
df[["product", "unit_price"]]Un DataFrame con dos columnas en ese orden

La lista interior solicita una colección de columnas. Sin ella, df["product", "unit_price"] proporciona una sola clave de tipo tupla, que no coincide con ninguno de los nombres de columna habituales y genera KeyError.

Los corchetes también funcionan cuando los nombres contienen espacios o coinciden con métodos. La notación con punto, como df.quantity, solo funciona para nombres adecuados. Una columna llamada size necesita df["size"], porque df.size significa el número de celdas de la tabla. Crea también las columnas con corchetes: df["total"] = 5 añade una columna, mientras que df.total = 5 no lo hace.

Elige un eje

Para numbers = pd.DataFrame({"a": [1, 2], "b": [3, 4]}), numbers.sum() suma a lo largo de las filas y da a 3 y b 7. Este es axis=0, también llamado "index". numbers.sum(axis=1) suma a lo largo de cada fila y da 4 y 6; este eje también se llama "columns". Identifica primero el resultado que necesitas: un total por columna o un total por fila.

Al extraer una fila se crea una Series cuyas etiquetas son los nombres de las columnas. Esa Series necesita un tipo de datos capaz de contener todas las celdas de la fila. Una fila que mezcla enteros y números de coma flotante pasa a ser float64; una fila que mezcla texto y números pasa a ser object. Las columnas originales conservan sus tipos por separado.

Puntos clave

  • Un DataFrame tiene un índice de filas compartido y un tipo de datos por columna.
  • Las listas de igual longitud proporcionan columnas; una lista de diccionarios proporciona filas.
  • shape cuenta filas y columnas; size cuenta celdas.
  • Un solo nombre de columna devuelve una Series; una lista de nombres devuelve un DataFrame.
  • axis=0 reduce a lo largo de las filas; axis=1 reduce a lo largo de las columnas.
  • Usa corchetes para nombres de columnas que coinciden con atributos o métodos.

1.3 Establece, restablece, cambia y elimina etiquetas

Las etiquetas de fila pueden tener significado, como un número de pedido, o simplemente etiquetar las filas actuales. Elegir un índice útil facilita la interpretación de las búsquedas y los resultados posteriores. Cambiar las etiquetas devuelve una tabla nueva, así que conserva el resultado con una asignación.

Mueve un identificador al índice
orders = pd.DataFrame({
    "order_id": [1001, 1002, 1003],
    "product": ["Notebook", "Desk lamp", "Pen set"],
    "unit_price": [2.50, 18.00, 4.75]
})
orders_by_id = orders.set_index("order_id")

La tabla original tiene un RangeIndex predeterminado: 0, 1 y 2. La tabla nueva tiene las etiquetas 1001, 1002 y 1003. order_id ha salido de las columnas y ha pasado al índice. orders_by_id.loc[1002] identifica ahora la fila de Desk lamp por su identificador.

Llamar a orders.set_index("order_id") sin guardar su resultado deja orders sin cambios. La reasignación, como orders = orders.set_index("order_id"), conserva la nueva estructura. En pandas 3.1, inplace= está obsoleto para estos métodos que cambian etiquetas y para la ordenación; usa una asignación.

Devuelve las etiquetas a una columna

orders_by_id.reset_index() restablece order_id como columna normal y proporciona un RangeIndex nuevo. Un índice sin nombre se convierte en una columna llamada index. Esto conserva la identidad anterior de las filas.

reset_index(drop=True) descarta las etiquetas anteriores. Para un índice [10, 20, 30], reset_index() sin más conserva esos números en una columna index; reset_index(drop=True) los pierde y usa 0, 1 y 2. Después de filtrar u ordenar, decide si las etiquetas anteriores son útiles antes de descartarlas. Volver a numerar el índice no cambia los valores de los datos ni deshace una ordenación.

Cambia o elimina etiquetas
renamed = orders.rename(columns={"unit_price": "price"})
short = orders.drop(columns=["product"])
remaining = orders.drop(index=[0, 1])

rename establece una correspondencia entre etiquetas antiguas y nuevas y conserva los nombres que no se enumeran. Por defecto, un nombre antiguo mal escrito se ignora, así que inspecciona .columns si parece que un cambio de nombre no ha hecho nada. Para sustituir todos los nombres de columna, asigna una lista completa a orders.columns; su longitud debe coincidir con el número de columnas.

drop(columns=...) elimina columnas; drop(index=...) elimina filas por etiqueta. Una etiqueta ausente genera KeyError. Después de ordenar, la etiqueta 0 puede dejar de ser la primera fila: eliminarla sigue quitando la fila con etiqueta 0.

Selecciona una lista para elegir el orden de las columnas: orders = orders[["order_id", "unit_price", "product"]]. Las columnas ausentes de esa lista se eliminan del resultado.

Comprueba que un identificador identifica realmente una fila

Las etiquetas del índice pueden repetirse. Comprueba orders_by_id.index.is_unique antes de tratarlas como identificadores únicos. Si la etiqueta 1002 aparece dos veces, .loc[1002] devuelve ambas filas como DataFrame. Con etiquetas únicas, la misma búsqueda por una sola etiqueta devuelve una Series.

Un índice significativo también mejora los resúmenes. En una tabla meteorológica indexada por día, weather["temp_c"].idxmax() informa de un día como "Thu"; con un índice predeterminado informa de un número de fila.

Puntos clave

  • set_index mueve una columna a las etiquetas de fila; reset_index devuelve las etiquetas a una columna.
  • reset_index(drop=True) descarta las etiquetas anteriores.
  • Conserva los cambios de etiquetas asignando la tabla devuelta.
  • rename cambia las etiquetas indicadas; drop elimina filas o columnas por etiqueta.
  • Un índice puede contener duplicados; comprueba su unicidad antes de usarlo como identificador.
2

Carga un archivo CSV y comprueba los datos cargados

Una tabla cargada necesita una comprobación antes de que sus números puedan servir de base para un análisis. Ajusta las opciones de CSV al delimitador, encabezado y convenciones de valores del archivo, y después inspecciona el resultado para comprobar las filas, nombres y tipos esperados. Localiza las entradas faltantes y los identificadores repetidos, y convierte el texto numérico o de fechas cuando sea necesario. Las pequeñas decisiones de importación importan: un cero inicial perdido o una fecha sin interpretar pueden cambiar el significado del código posterior.

2.1 Lee un archivo CSV con read_csv

Un CSV almacena una tabla como texto: los registros ocupan líneas y un delimitador separa los campos. La primera línea suele contener los nombres de las columnas. Cargar el archivo correctamente implica identificar tanto su estructura como el significado de sus valores.

Carga la tabla de pedidos
orders = pd.read_csv("orders.csv")

Una ruta relativa se resuelve a partir del directorio de trabajo actual de Python. Una ubicación incorrecta genera FileNotFoundError. También se puede pasar una ruta absoluta o una URL a read_csv.

Los ejemplos usan este archivo. La última fila tiene un campo de cantidad vacío.

order_id,date,product,category,quantity,unit_price
1001,2026-03-02,Notebook,Stationery,3,2.50
1002,2026-03-02,Desk lamp,Home,1,18.00
1003,2026-03-03,Pen set,Stationery,2,4.75
1004,2026-03-04,Mug,Home,4,6.00
1005,2026-03-04,Backpack,Bags,1,35.00
1006,2026-03-05,Notebook,Stationery,,2.50

Con las opciones predeterminadas, el resultado tiene forma (6, 6) y etiquetas de índice de 0 a 5. pandas infiere los tipos: order_id es int64, unit_price es float64 y quantity también pasa a ser float64 porque su campo vacío se convierte en NaN. Las demás columnas, incluida date, son str. Una cadena que parece una fecha sigue siendo texto hasta que se interpreta como tal.

Ajusta las opciones a la estructura del archivo
Característica del archivoOpción de lectura
Campos separados por punto y comasep=";"
Comas decimalesdecimal=","
Sin línea de encabezadoheader=None, names=["id", "product"]
Dos líneas adicionales antes del encabezadoskiprows=2
Solo se necesitan determinados camposusecols=["product", "quantity"]
Una vista previa brevenrows=100

Para un archivo cuyas líneas son a;b, 1,5;2 y 3,0;4, usa pd.read_csv("file.csv", sep=";", decimal=","). La columna a contiene entonces 1,5 y 3,0. Usar la coma como separador predeterminado produce una columna llamada a;b, una señal de que debes comprobar el delimitador.

index_col="order_id" convierte esa columna en el índice de filas durante la carga. thousands="," lee un campo como "1,200" como 1200; en un archivo separado por comas, el campo debe delimitarse con comillas CSV para que su coma interna no sea otro delimitador.

Conserva el significado al inferir tipos

Los códigos como "001" son identificadores, no cantidades. dtype={"id": str} conserva sus ceros iniciales. Si pandas los convierte primero en 1, convertir ese número de nuevo a texto no permite recuperar cuántos ceros contenía el archivo.

Los campos vacíos y los marcadores habituales como NA, N/A, NULL, NaN y None son valores faltantes por defecto. Añade un marcador especial de un archivo con na_values=["-"]. Estas son reglas de carga, así que comprueba las convenciones del archivo cuando un código parezca un marcador de valor faltante.

Usa parse_dates=["date"] para leer las fechas del ejemplo como fechas y horas. En pandas 3 estas fechas usan resolución de microsegundos, datetime64[us]. UTF-8 es la codificación de texto predeterminada. Un UnicodeDecodeError indica que debes comprobar la codificación del archivo y proporcionar la opción correspondiente, como encoding="latin-1".

Puntos clave

  • read_csv devuelve un DataFrame e infiere los tipos de las columnas.
  • Ajusta sep, decimal y las opciones de encabezado a la estructura del archivo.
  • Conserva los ceros iniciales de los identificadores mediante un tipo de datos de texto durante la carga.
  • Los campos vacíos y los marcadores habituales se convierten en valores faltantes; na_values añade marcadores.
  • Las fechas deben interpretarse con parse_dates durante la carga o convertirse después.
  • Una ruta relativa se resuelve a partir del directorio de trabajo actual.

2.2 Inspecciona un DataFrame nuevo

Una lectura correcta significa que pandas pudo interpretar el archivo. No demuestra que las columnas, los tipos y los valores faltantes coincidan con lo que la tabla debe representar. Inspecciona el DataFrame nuevo antes de hacer cálculos con él.

Comprueba las filas visibles y las dimensiones
orders.head(3)
orders.tail()
orders.shape
orders.columns.tolist()

head() muestra cinco filas por defecto; head(3) muestra tres. tail() comprueba el final, donde una exportación puede contener registros distintos. sample(3, random_state=0) da una muestra aleatoria reproducible de tres filas. En un cuaderno interactivo, la expresión final de una celda se muestra automáticamente; en otros entornos, usa print.

El archivo de pedidos debe contener seis filas y seis columnas. Una vista previa debe mostrar columnas con nombre y el primer pedido como datos. Si el primer registro aparece entre los nombres de las columnas, probablemente el archivo no tenga encabezado y necesite header=None. Si todo ocupa una sola columna ancha, comprueba sep.

Los nombres de columnas deben coincidir exactamente, incluidas las mayúsculas, las minúsculas y los espacios. orders["Product"] falla cuando el nombre es product. Inspeccionar la lista facilita la detección de espacios finales. orders.columns = orders.columns.str.strip() elimina los espacios en los extremos de los nombres del encabezado.

Interpreta la estructura con info

orders.info() muestra el rango del índice, el nombre de cada columna, el recuento de valores presentes, el tipo de datos y el uso de memoria. En el ejemplo de seis filas, quantity tiene cinco valores no nulos; las demás columnas tienen seis cada una. Los tipos son dos columnas de coma flotante, una columna entera y tres columnas str. orders.dtypes proporciona una lista compacta de tipos.

Una columna de aspecto numérico con tipo str merece una inspección: un elemento como "unknown", una unidad como "12 kg" o un separador de millares no tratado pueden impedir la inferencia numérica. Las fechas también permanecen como texto salvo que se interpreten. Decide el tipo necesario según el significado de la columna, no solo por su apariencia en una vista previa.

Cuenta valores faltantes y repetidos
orders.isna().sum()
orders.isna().any(axis=1).sum()
orders.nunique()

isna() crea una tabla booleana: True marca una celda faltante. La suma a lo largo de cada columna cuenta esas celdas. Quantity tiene un valor faltante y todas las demás columnas tienen cero. Para contar las filas afectadas, .any(axis=1) comprueba primero si cada fila tiene algún valor faltante y luego .sum() cuenta esas filas. En cambio, sumar todos los recuentos de columnas podría contar una fila varias veces.

nunique() cuenta los valores presentes distintos: los pedidos tienen seis identificadores, cuatro fechas, cinco productos, tres categorías, cuatro cantidades y cinco precios. Compara el recuento de identificadores con el número de filas para comprobar su unicidad, junto con su recuento de valores faltantes. orders.duplicated(subset="product") marca la segunda fila de Notebook, con etiqueta 5, como repetida. Un producto repetido es válido aquí; un identificador de pedido repetido requeriría investigación.

Consulta una vista general numérica rápida

orders.describe() informa del recuento, la media, la desviación estándar, el mínimo, los cuartiles y el máximo de las columnas numéricas. El recuento de quantity es cinco, por lo que su media resume cinco cantidades registradas. Comprueba también los rangos y unidades plausibles, además de los tipos: una columna puede ser numérica y contener aun así un error de entrada. Al revisar una carga nueva, considera conjuntamente el número observado de filas y columnas, los tipos, los recuentos de valores faltantes y la comprobación de identificadores.

Puntos clave

  • Usa conjuntamente vistas previas, dimensiones, nombres exactos de columnas y tipos de datos después de la carga.
  • info() muestra recuentos de valores no nulos y tipos; no devuelve una tabla de resumen.
  • isna().sum() cuenta las celdas faltantes por columna; .any(axis=1).sum() cuenta las filas afectadas.
  • Comprueba tanto los identificadores faltantes como el número de identificadores distintos.
  • Los recuentos de describe() muestran cuántos valores registrados respaldan un resumen numérico.

2.3 Convierte las columnas a los tipos adecuados

El tipo de datos de una columna determina qué operaciones tienen sentido. Una columna de texto que contiene "12" sigue almacenando texto; no se puede calcular su media como si fuera una columna numérica. Convierte los datos de forma deliberada y asigna el resultado de nuevo a la tabla.

Elige entre conversión estricta y coerción

astype convierte una Series a un tipo indicado, como int, float, str o "Int64". Falla cuando un valor no puede representarse en el tipo solicitado.

raw = pd.Series(["12", "7", "n/a", "3.5"])
numeric = pd.to_numeric(raw, errors="coerce")

raw.astype(float) genera ValueError al llegar a "n/a". Con errors="coerce", los valores de salida son 12,0; 7,0; NaN y 3,5. El elemento que falla pasa a ser un valor faltante en lugar de detener la conversión. Compara raw.isna().sum() con numeric.isna().sum(): se pasó de cero valores faltantes a uno, lo que identifica un valor que necesita revisión.

La coerción es una política de conversión, no una prueba de que cada nuevo valor faltante sea inofensivo. Usa los recuentos anteriores y posteriores para detectar pérdidas. Guarda la conversión en una variable o columna nueva cuando el texto original sea útil para rastrear un valor que falló.

Conserva los números enteros con valores faltantes

La columna quantity de los pedidos contiene números enteros y un NaN, por lo que es float64. El uso habitual de astype(int) falla porque NaN no tiene una representación entera ordinaria.

orders["quantity"] = orders["quantity"].astype("Int64")

La I mayúscula importa: el tipo Int64 que admite valores faltantes conserva el valor ausente como <NA> y almacena los valores conocidos como números enteros. Esta elección es adecuada para recuentos con entradas faltantes. No convierte una cantidad realmente fraccionaria en un recuento entero válido.

Los separadores de millares en el texto también requieren tratamiento. pd.Series(["1,200", "950"]).str.replace(",", "").astype(int) produce 1200 y 950. Cuando el archivo usa esa convención, thousands="," puede gestionarla durante la lectura.

Convierte texto de fechas
orders["date"] = pd.to_datetime(orders["date"])
orders["date"].dt.day_name()

La conversión permite usar .dt.year, .dt.month, .dt.day y .dt.day_name(). Para las seis fechas de los pedidos, los nombres de los días son Monday, Monday, Tuesday, Wednesday, Wednesday y Thursday. Ejecutar pd.to_datetime(orders["date"]) por sí solo produce una Series convertida, pero deja la columna original como texto. La asignación es lo que conserva el resultado.

Almacena categorías repetidas

orders["category"].astype("category") almacena las etiquetas repetidas mediante un conjunto de categorías permitidas. En tablas grandes esto suele ahorrar memoria. Asigna el resultado para conservarlo, igual que con otras conversiones.

El tipo de datos categórico cambia algunas operaciones. Sus categorías no están ordenadas por defecto, por lo que min() y max() generan TypeError. El método value_counts() de una columna categórica también enumera las categorías conocidas ausentes de una selección filtrada con recuento cero. Elegir el tipo categórico es útil para etiquetas repetidas, pero supone un cambio tanto de comportamiento como de almacenamiento.

Puntos clave

  • astype falla en conversiones no válidas; to_numeric(errors="coerce") convierte los elementos no válidos en valores faltantes.
  • Compara los recuentos de valores faltantes antes y después de la coerción.
  • Int64, que admite valores faltantes, almacena números enteros con entradas faltantes.
  • Convierte fechas con to_datetime y lee sus componentes mediante .dt.
  • Conserva las conversiones asignando sus resultados.
  • El tipo categórico no ordenado almacena etiquetas repetidas de forma eficiente, pero cambia algunos resúmenes.
3

Selecciona datos por etiqueta y por posición

Una fila puede identificarse por su etiqueta o encontrarse por su posición actual. Aprende a hacer explícita esa elección con loc e iloc, selecciona al mismo tiempo las columnas necesarias y predice si una selección devuelve un valor, una Series o un DataFrame. Los extremos de los segmentos y las etiquetas conservadas explican muchos errores de una posición. Esta distinción resulta especialmente útil después de ordenar o filtrar una tabla.

3.1 Selecciona filas y columnas por etiqueta con loc

Las etiquetas permiten solicitar una fila o columna por su significado. Con loc, un número de pedido identifica una fila incluso si la tabla se ha ordenado. La selección tiene una parte de filas seguida de una parte de columnas: df.loc[rows, columns].

Parte de un índice significativo

El archivo de pedidos tiene seis filas con identificadores del 1001 al 1006. Crea orders_by_id = orders.set_index("order_id"). Sus columnas, en orden, son date, product, category, quantity y unit_price. Las etiquetas de fila son números de pedido, no posiciones de 0 a 5.

orders_by_id.loc[1003]
orders_by_id.loc[1004, "product"]

La primera expresión devuelve el pedido 1003 como una Series: fecha "2026-03-03", producto "Pen set", categoría "Stationery", cantidad 2,0 y precio 4,75. La Series se llama 1003. La segunda devuelve una celda, "Mug".

Una etiqueta ausente genera KeyError. orders_by_id.loc[0] falla: tener una primera fila en la posición 0 no crea una etiqueta 0.

Selecciona colecciones de etiquetas
orders_by_id.loc[[1001, 1005], ["product", "unit_price"]]

Las listas seleccionan etiquetas en el orden solicitado. Esto da dos filas y dos columnas: Notebook a 2,5 y después Backpack a 35,0. Una lista conserva un resultado con forma de tabla incluso cuando contiene una sola etiqueta: .loc[[1003]] es un DataFrame de una fila.

SolicitudForma
Un valor.loc[1004, "product"]
Una fila completa.loc[1004]
Una tabla de una fila.loc[[1004]]
Todas las filas, una columna.loc[:, "unit_price"]

Dos puntos por sí solos significan todas las etiquetas de ese eje. Omitir el selector de columnas también solicita todas las columnas.

Incluye ambos extremos de un segmento por etiquetas
orders_by_id.loc[1002:1004, "product":"quantity"]

En este índice ordenado, las filas son 1002, 1003 y 1004. El segmento de columnas incluye product, category y quantity. Tanto la etiqueta final de fila como la de columna están incluidas, por lo que la forma es (3, 3). Aplicar aquí la regla habitual de Python que excluye el extremo final omitiría una fila y una columna deseadas.

Las etiquetas sobreviven a la ordenación

Un índice predeterminado puede ocultar la distinción entre etiqueta y posición. Supón que al ordenar puntuaciones se obtienen las etiquetas de fila 3, 0, 2, 1, 4. .loc[0] sigue seleccionando la etiqueta 0, ahora en la segunda fila mostrada. .iloc[0] selecciona la primera fila mostrada, con etiqueta 3. La ordenación mueve cada fila con su etiqueta; no vuelve a numerar el índice sin avisar.

Combina una condición con la selección de columnas

El selector de filas puede ser una Series booleana:

orders.loc[orders["unit_price"] > 5, ["product", "unit_price"]]

Esto conserva Desk lamp a 18,0, Mug a 6,0 y Backpack a 35,0, y devuelve solo las dos columnas solicitadas. La máscara decide qué filas cumplen la condición; la lista de columnas decide qué mostrar. La misma forma de dos ejes puede identificar celdas para actualizarlas colocando la selección en el lado izquierdo de una asignación.

Puntos clave

  • loc selecciona etiquetas de fila y nombres de columna.
  • Las listas solicitan etiquetas en el orden indicado y conservan el eje en el DataFrame.
  • Los segmentos por etiquetas incluyen la etiqueta final; dos puntos seleccionan todas las etiquetas.
  • Las etiquetas solicitadas que no existen generan KeyError.
  • La ordenación mueve las etiquetas con las filas, por lo que la etiqueta 0 puede diferir de la posición 0.
  • Una máscara booleana de filas y nombres de columnas pueden compartir una llamada a loc.

3.2 Selecciona por posición con iloc y elige el selector adecuado

Usa iloc cuando una solicitud se refiera a dónde se encuentra una fila o columna: las primeras tres filas, la última columna o una celda concreta mostrada. Sus selectores son posiciones enteras, independientes de las etiquetas del índice.

Cuenta desde cero

orders.iloc[0] selecciona la primera fila y orders.iloc[-1] la última. Una posición negativa cuenta hacia atrás desde el final. Dos posiciones seleccionan una celda: orders.iloc[2, 2] es "Pen set" en la tabla de pedidos original, donde product está en la posición de columna 2.

La tabla indexada orders_by_id tiene las columnas date, product, category, quantity y unit_price. Mover order_id al índice cambió las posiciones de sus columnas, por lo que product está ahora en la posición 1. El código basado en posiciones depende de esta estructura.

Detente antes del extremo final del segmento
orders_by_id.iloc[1:3, 0:2]

Las posiciones de fila seleccionadas son 1 y 2, que contienen los pedidos 1002 y 1003. Las posiciones de columna son 0 y 1, date y product. La posición 3 y la columna 2 se excluyen, lo que da la forma (2, 2). Un inicio vacío significa el principio; un final vacío significa el final.

Las listas solicitan posiciones concretas, incluida una mezcla de posiciones positivas y negativas. orders.iloc[[0, -1], [2, 5]] selecciona product y unit_price del primer y el último pedido. Ambos son Notebook a 2,5.

Predice la forma del resultado
SelecciónResultado
orders.iloc[0, 2]Un valor
orders.iloc[0]Una Series para una fila
orders.iloc[:, 2]Una Series para una columna
orders.iloc[[0]]Un DataFrame de una fila
orders.iloc[0:1, 2:3]Un DataFrame de una fila y una columna

Un escalar selecciona un elemento a lo largo de un eje y elimina esa dimensión. Un segmento o una lista conserva ese eje, incluso si selecciona un solo elemento. Esto importa cuando la siguiente operación espera una tabla en lugar de una Series.

Gestiona el final de una tabla

La tabla de pedidos de seis filas tiene posiciones de fila no negativas válidas de 0 a 5. orders.iloc[10] genera IndexError. Un segmento puede extenderse más allá de la tabla: orders.iloc[4:100] simplemente devuelve las dos últimas filas. Una posición individual inexistente es una solicitud de elemento no válida, mientras que un segmento describe un intervalo que se recorta a las filas disponibles.

Elige etiquetas o posiciones de forma deliberada

Para una sola celda, at usa etiquetas e iat usa posiciones. orders.at[2, "product"] y orders.iat[2, 2] dan "Pen set" antes de cambiar el orden de las filas.

Elige loc cuando conozcas un identificador o el significado de una columna. Elige iloc cuando importe la propia ubicación. Para combinar las primeras filas con un nombre de columna, orders.columns.get_loc("quantity") devuelve su posición, 4, lo que permite usar orders.iloc[0:3, 4].

Los corchetes por sí solos pueden cambiar de función: orders["product"] selecciona una columna, pero orders[2:4] selecciona un segmento de filas en las posiciones 2 y 3. Usar loc e iloc explícitamente hace que esa elección sea más fácil de leer.

Puntos clave

  • iloc usa posiciones enteras que comienzan en cero; las posiciones negativas cuentan desde el final.
  • Los segmentos por posiciones excluyen el extremo final y pueden extenderse más allá de las filas disponibles.
  • Una posición individual fuera de rango genera IndexError.
  • Los selectores escalares eliminan una dimensión; las listas y los segmentos la conservan.
  • at selecciona una celda por etiqueta e iat selecciona una celda por posición.
4

Filtra filas mediante condiciones

Las condiciones permiten centrarse en las observaciones que responden a una pregunta. Crea máscaras a partir de comparaciones, combínalas y usa métodos auxiliares para categorías, intervalos, valores faltantes y coincidencias de texto. Después, dirige una actualización a la tabla original con una sola asignación mediante loc. El filtrado y la actualización comparten una condición de filas, pero es esencial tener presente qué tabla recibe un cambio bajo el mecanismo de copia al escribir de pandas 3.

4.1 Filtra con máscaras booleanas

El filtrado selecciona observaciones que responden a una pregunta, como qué pedidos pertenecen a Home y cuestan más de 10 por artículo. Primero crea una máscara booleana, una Series con un True o False por fila. Después úsala para seleccionar las filas coincidentes.

Crea y aplica una máscara
is_stationery = orders["category"] == "Stationery"
stationery = orders[is_stationery]

La máscara es True, False, True, False, False y True. La selección conserva las etiquetas 0, 2 y 5, correspondientes a los pedidos 1001, 1003 y 1006. El filtrado conserva esas etiquetas; no vuelve a numerarlas. reset_index(drop=True) proporciona etiquetas consecutivas si se necesitan.

Los operadores de comparación incluyen ==, !=, <, <=, > y >=. Las comparaciones de texto son exactas: "home" es distinto de "Home", y los espacios también pueden impedir una coincidencia.

Combina condiciones fila por fila
is_home = orders["category"] == "Home"
is_expensive = orders["unit_price"] > 10
orders[is_home & is_expensive]

Solo Desk lamp cumple la condición: su categoría es Home y su precio es 18,0. Mug es de Home, pero cuesta 6,0. Backpack cuesta 35,0, pero pertenece a Bags.

Al escribir comparaciones directamente, coloca cada una entre paréntesis:

orders[(orders["category"] == "Home") &
       (orders["unit_price"] > 10)]

Usa & para «y», | para «o» y ~ para «no». Los paréntesis mantienen unida cada comparación antes de que pandas combine las máscaras. Sin ellos, las reglas de precedencia de Python pueden intentar combinar una cadena y una Series con & y generar TypeError.

Los operadores and, or y not de Python esperan un solo valor de verdad, no una columna de valores de verdad. Usarlos con máscaras genera el ValueError de valor de verdad ambiguo. Un simple if orders["quantity"] > 1: tiene el mismo problema. Usa .any() para preguntar si alguna fila coincide, o .all() para preguntar si todas coinciden.

Cuenta coincidencias y proporciones

is_stationery.sum() es 3 porque True cuenta como 1 y False como 0. is_stationery.mean() es 0,5, la fracción de los seis pedidos que cumplen la condición. Multiplica por 100 para expresarla como 50 %.

Trata explícitamente los valores faltantes

Con la columna quantity original de tipo float64, las comparaciones que incluyen NaN dan False salvo !=, que da True. quantity >= 1 conserva cinco filas; quantity < 1 no conserva ninguna. La cantidad vacía no está en ninguna de las dos selecciones. Sin embargo, quantity != 3 incluye esa fila vacía, por lo que «distinto de» no significa «conocido y diferente».

Después de convertir al tipo Int64 que admite valores faltantes, la comparación con <NA> produce <NA>, y el filtrado excluye esas filas. Usa isna() o notna() cuando la pregunta se refiera a valores faltantes.

Para seleccionar columnas además de filas, usa orders.loc[is_home, "product"]. Devuelve Desk lamp y Mug. Una máscara con nombre puede reutilizarse para inspeccionar, contar y actualizar el mismo conjunto de filas.

Puntos clave

  • Una comparación crea un resultado booleano por fila; el filtrado conserva las filas True y sus etiquetas.
  • Combina máscaras con &, | y ~, con paréntesis alrededor de las comparaciones.
  • Usa .any() o .all() cuando se necesite un solo valor de verdad.
  • La suma de una máscara booleana cuenta las coincidencias y su media da la proporción correspondiente.
  • Comprueba los valores faltantes explícitamente: NaN de coma flotante y <NA> se comportan de forma distinta en las comparaciones.
  • La igualdad de texto distingue entre mayúsculas y minúsculas e incluye los espacios.

4.2 Utiliza métodos auxiliares y query para filtros habituales

Algunos filtros tienen formas habituales: pertenencia a una lista, un intervalo numérico, un valor faltante o un fragmento de texto. Los métodos auxiliares expresan estas pruebas directamente y siguen produciendo máscaras que pueden combinarse con otras condiciones.

Comprueba pertenencia e intervalos
orders[orders["category"].isin(["Home", "Bags"])]
orders[orders["unit_price"].between(4.75, 18)]

isin encuentra coincidencias con cualquiera de los valores enumerados. La primera selección contiene los pedidos 1002, 1004 y 1005. ~orders["category"].isin(["Home"]) invierte la pertenencia y conserva las filas de Stationery y Bags. Una expresión in de Python no crea esta máscara de pertenencia fila por fila.

between incluye ambos extremos por defecto. La segunda selección incluye Desk lamp a 18,0, Pen set a 4,75 y Mug a 6,0. Usa inclusive="neither" para excluir ambos extremos, "left" para incluir solo el extremo inferior o "right" para incluir solo el superior. Elige la regla de los extremos según la pregunta planteada.

Encuentra entradas faltantes y presentes

orders[orders["quantity"].isna()] conserva el pedido 1006. notna() hace lo contrario y conserva las cantidades registradas. No compruebes la igualdad con np.nan: NaN es distinto incluso de sí mismo, por lo que quantity == np.nan no encuentra la fila faltante.

Busca dentro del texto
orders[orders["product"].str.contains("note", case=False, na=False)]

str.contains comprueba si cada valor de texto contiene una coincidencia. Ignorar mayúsculas y minúsculas permite encontrar ambas filas de Notebook. na=False hace que el texto faltante cuente como ausencia de coincidencia. Por defecto, la búsqueda trata el patrón como una expresión regular; para un fragmento literal de texto con puntuación, regex=False evita interpretar esa puntuación como un patrón. str.startswith y str.endswith comprueban el principio y el final.

Escribe un filtro como consulta
orders.query("quantity >= 2 and unit_price < 5")

Esto conserva los pedidos 1001 y 1003. Dentro de una cadena de query, los nombres de columna representan columnas y se permiten and, or y not. La cadena es una expresión de consulta de pandas; no tiene la misma sintaxis que combinar Series directamente en Python normal.

Una variable de Python necesita @:

limit = 5
orders.query("unit_price > @limit")

El resultado contiene Desk lamp, Mug y Backpack. Un nombre de columna que contiene un espacio necesita acentos graves dentro de la consulta, como en orders.query("`unit price` > 5").

La misma pregunta puede escribirse como una máscara, una llamada a un método auxiliar o una consulta. Prefiere la forma que muestre claramente la regla. Para un intervalo, between reúne los límites y la regla de inclusión. Para un conjunto de etiquetas permitidas, isin evita repetir pruebas de igualdad. Cuando un filtro se comporte de forma inesperada, inspecciona la máscara y los valores exactos de la columna antes de cambiar la condición.

Puntos clave

  • isin comprueba la pertenencia y ~ invierte la máscara.
  • between incluye ambos extremos salvo que inclusive cambie la regla.
  • isna y notna detectan valores faltantes y registrados.
  • str.contains busca texto; case=False ignora mayúsculas y minúsculas y na=False excluye el texto faltante.
  • Dentro de query, las columnas se nombran directamente, las variables de Python usan @ y los nombres de columna con espacios usan acentos graves.

4.3 Modifica de forma segura los valores de las filas seleccionadas

Una actualización debe dirigirse a la tabla que quieres cambiar. En pandas 3, una selección se comporta como un objeto separado bajo el mecanismo de copia al escribir, por lo que cambiar un objeto seleccionado no cambia su tabla de origen.

Coloca todo el destino en una asignación con loc
sale = orders.copy()
is_home = sale["category"] == "Home"
sale.loc[is_home, "unit_price"] *= 0.9

La máscara selecciona dos filas de Home. El selector de columna apunta a sus precios. La multiplicación por 0,9 conserva el 90 % de cada precio y reduce 18,00 a 16,20 y 6,00 a 5,40. Las demás filas no cambian. La forma desarrollada lee la misma selección en el lado derecho y asigna los valores multiplicados en el izquierdo.

Aquí sale es una tabla separada que se usa para cambiar precios, mientras que orders queda disponible para comparar. Para actualizar la tabla original, coloca orders.loc[...] en el lado izquierdo de la asignación.

Evita la asignación encadenada
orders[orders["category"] == "Home"]["unit_price"] = 0

Esto usa dos pasos de indexación. El primero produce un objeto seleccionado; el segundo asigna valores a ese objeto. En pandas 3 nunca actualiza orders, y una advertencia ChainedAssignmentError señala el problema. El mismo problema afecta a orders["unit_price"][1] = 0.

Usa orders.loc[orders["category"] == "Home", "unit_price"] = 0 cuando el cambio deseado sea en la tabla original. La tabla, las filas coincidentes y la columna se especifican en una sola asignación.

Comprende las tablas seleccionadas

Después de home = orders[orders["category"] == "Home"], cambiar home["unit_price"] solo cambia home. Los cambios posteriores en orders tampoco cambian home. Los objetos pueden compartir almacenamiento internamente hasta que sea necesario escribir, pero sus valores visibles se comportan de forma independiente.

Los ejemplos antiguos de pandas pueden mostrar SettingWithCopyWarning y usar .copy() después de la selección para evitar actualizaciones inciertas. pandas 3 eliminó esa advertencia y hace que la independencia de las selecciones sea consistente. Un .copy() explícito sigue siendo útil para expresar la intención, pero una selección ya se comporta de forma independiente ante las actualizaciones.

Empareja los valores del lado derecho con el destino

Un escalar rellena todas las celdas seleccionadas. Una lista necesita exactamente un valor por fila seleccionada y las rellena en el orden de selección. Una Series se alinea por etiqueta de índice:

new_prices = pd.Series([16.2, 5.4], index=[1, 3])
sale.loc[is_home, "unit_price"] = new_prices

Las filas de Home tienen las etiquetas 1 y 3, por lo que reciben 16,2 y 5,4. Si una etiqueta seleccionada faltara en la Series, su valor asignado sería NaN; las filas fuera de la selección permanecerían sin cambios. Que las longitudes sean iguales no garantiza por sí solo que los valores de la Series se emparejen con las filas.

Inspecciona sale.loc[is_home, "unit_price"] después del cambio y compáralo con orders.loc[is_home, "unit_price"]. El valor de .sum() de la máscara es 2, que es el número esperado de filas afectadas por este descuento.

Puntos clave

  • Actualiza la tabla deseada mediante una sola asignación loc[mask, column].
  • En pandas 3, la asignación encadenada nunca actualiza la tabla original.
  • Las selecciones se comportan de forma independiente bajo el mecanismo de copia al escribir.
  • Un escalar rellena la selección; una lista sigue el orden; una Series se alinea por etiqueta.
5

Añade y transforma columnas

Las columnas derivadas expresan relaciones ya presentes en una tabla: la cantidad y el precio se convierten en ingresos, mientras que una condición se convierte en una etiqueta de categoría. Usa aritmética vectorizada y pequeñas transformaciones para expresar estas reglas con claridad. También elegirás entre aplicar una correspondencia a todos los valores o sustituir unos pocos, conservarás los resultados mediante asignación y tendrás en cuenta las entradas faltantes y la alineación por etiquetas cuando entren nuevos valores en una tabla.

5.1 Calcula columnas nuevas a partir de las existentes

Las columnas nuevas convierten los datos registrados en cantidades que puedes analizar. Un cálculo entre columnas funciona fila por fila, mientras que el índice mantiene cada resultado asociado a su observación.

Calcula los ingresos
orders["revenue"] = orders["quantity"] * orders["unit_price"]

Los seis ingresos son 7,5; 18,0; 9,5; 24,0; 35,0 y NaN. Para la primera fila, tres artículos a 2,50 cada uno dan 7,50. La última fila tiene una cantidad desconocida, por lo que sus ingresos también son desconocidos. Asignar a un nombre nuevo añade una columna a la derecha; asignar a un nombre existente sobrescribe esa columna.

La aritmética entre columnas es vectorizada. Expresa una regla para toda la columna y evita un bucle de Python sobre las filas. En tablas grandes es mucho más rápida que for o iterrows, y la expresión muestra claramente la relación entre las entradas.

Usa los valores registrados en un total

orders["revenue"].sum() omite NaN y da 94,0, el total de los cinco ingresos conocidos. .mean() da 18,8 porque el denominador es el número de ingresos registrados, cinco. Dividir 94,0 entre las seis filas trataría el ingreso faltante como si aportara un cero conocido, sin indicarlo.

Para calcular las participaciones porcentuales:

orders["share_pct"] = (
    orders["revenue"] / orders["revenue"].sum() * 100
).round(1)

Las participaciones son 8,0; 19,1; 10,1; 25,5; 37,2 y NaN. Son participaciones del total conocido. La entrada faltante sigue siendo faltante en las operaciones aritméticas.

Devuelve una tabla con assign

assign devuelve un DataFrame nuevo con columnas añadidas o sustituidas, y deja su entrada sin cambios. Funciona de forma natural dentro de una cadena:

with_tax = orders.assign(
    tax=lambda d: (d["revenue"] * 0.2).round(2)
)

La expresión lambda lee la tabla en ese punto de la cadena. Da valores de impuesto de 1,5; 3,6; 1,9; 4,8; 7,0 y NaN. En pandas 3, pd.col("revenue") * 0.2 es otra forma de referirse a una columna en assign.

Los cálculos decimales pueden mostrar pequeños errores binarios de coma flotante: 9,5 multiplicado por 0,2 puede almacenarse como 1.9000000000000001. .round(2) da un valor útil para la presentación. Evita las pruebas de igualdad exacta sobre decimales calculados cuando sean posibles pequeños errores de representación.

Comprende cómo empareja filas la asignación
orders["home_price"] = orders.loc[
    orders["category"] == "Home", "unit_price"
]

La Series asignada tiene las etiquetas 1 y 3. Esas filas reciben 18,0 y 6,0; todas las demás reciben NaN. La asignación de una Series empareja etiquetas, incluso cuando su longitud difiere de la de la tabla. Una lista normal no tiene etiquetas y debe contener exactamente un valor por fila. Un escalar, como orders["currency"] = "EUR", rellena todas las filas.

Deriva valores de texto o fechas

Los accesores .str y .dt también proporcionan operaciones vectorizadas sobre columnas. orders["product"].str.upper() produce nombres en mayúsculas y .str.len() da las longitudes 8, 9, 7, 3, 8 y 8. Asigna estos resultados a una columna nueva cuando sean útiles tanto los valores originales como los derivados.

Puntos clave

  • Asignar una expresión de columnas almacena un resultado por fila.
  • Las entradas desconocidas suelen producir resultados aritméticos desconocidos; los resúmenes omiten los valores faltantes por defecto.
  • Las operaciones vectorizadas sobre columnas evitan los bucles sobre filas.
  • assign devuelve un DataFrame nuevo y puede referirse a columnas mediante una expresión lambda.
  • La asignación de una Series empareja etiquetas; la asignación de una lista sigue el orden y la longitud de las filas.
  • Usa .str y .dt para columnas derivadas de texto y fechas.

5.2 Recodifica y transforma valores con np.where, map y apply

Transformar una columna puede significar aplicar una regla numérica, asignar una etiqueta o traducir etiquetas existentes. Elige un método cuyo comportamiento coincida con la regla, especialmente para los valores que la regla no menciona.

Convierte una condición en etiquetas
orders["price_band"] = np.where(
    orders["unit_price"] >= 5, "high", "low"
)

np.where elige su segundo argumento cuando la condición es True y el tercero cuando es False. Para los precios 2,50; 18,00; 4,75; 6,00; 35,00 y 2,50, las etiquetas son low, high, low, high, high y low. El operador >= incluye un precio exactamente igual a 5.

Traduce todos los valores o cambia unos pocos
codes = {"Stationery": "ST", "Home": "HM", "Bags": "BG"}
orders["category_code"] = orders["category"].map(codes)

map con un diccionario da ST, HM, ST, HM, BG y ST. Un valor ausente del diccionario se convierte en NaN. Con solo {"Stationery": "ST"}, tanto Home como Bags pasan a ser valores faltantes. Usa una correspondencia completa cuando cada categoría necesite un código traducido.

replace cambia los valores enumerados y deja los no enumerados sin cambios. orders["category"].replace({"Bags": "Luggage"}) conserva Stationery y Home mientras cambia el nombre de Bags.

Cambio deseadoMétodo adecuado
Dar un código a cada categoría conocidamap con un diccionario
Cambiar el nombre de unas pocas etiquetas existentesreplace
Elegir entre dos resultados a partir de una condiciónnp.where
Aplica una función personalizada

Una Series puede pasar cada valor a una función mediante map o apply. orders["product"].apply(len) devuelve la longitud de cada nombre de producto. Pasa len en sí; len() la llamaría de inmediato sin un valor.

Una expresión lambda puede expresar una pequeña regla para valores: orders["unit_price"].apply(lambda p: "budget" if p < 5 else "standard"). Esto devuelve budget, standard, budget, standard, standard y budget.

Para una lógica que necesita varias celdas de una fila, apply de DataFrame acepta axis=1:

orders.apply(
    lambda r: r["quantity"] * r["unit_price"], axis=1
)

La función lee la cantidad y el precio de cada fila. Para esta operación aritmética, la multiplicación directa de columnas es más clara y mucho más rápida en una tabla grande. Usa expresiones vectorizadas o np.where cuando puedan expresar el cálculo; reserva las funciones por filas para la lógica que las necesite.

Usa transformaciones numéricas incorporadas

round(n) redondea a n cifras decimales, abs() da valores absolutos y clip(lower=..., upper=...) restringe los valores a unos límites. orders["unit_price"].clip(upper=20) cambia 35,0 a 20,0 y deja los otros cinco precios sin cambios. No elimina la fila cara.

Estas transformaciones devuelven valores nuevos. Asígnalos a una columna nueva para conservar la entrada y poder comprobarla, o sobrescribe la original cuando esa sea la intención. Inspecciona unas filas transformadas o ejecuta value_counts() para comprobar que las nuevas etiquetas y sus recuentos se ajustan a la regla.

Puntos clave

  • np.where selecciona un resultado para el caso verdadero o falso de cada valor de la condición.
  • map con un diccionario convierte los valores no enumerados en faltantes; replace los conserva.
  • Pasa la función en sí a apply; usa axis=1 para una función sobre filas de un DataFrame.
  • Prefiere las operaciones vectorizadas cuando expresen la regla.
  • clip limita los valores, mientras que round y abs los transforman sin seleccionar filas.
6

Ordena datos, asigna rangos y resume los resultados

Una tabla ordenada y un resumen estadístico compacto responden a preguntas distintas sobre las mismas observaciones. Ordena registros, asigna rangos con una regla deliberada para los empates y elige recuentos, medidas de tendencia central o de dispersión que se ajusten a los datos. Después examina las proporciones de categorías y las relaciones numéricas. Los valores faltantes, la dirección de la clasificación, los denominadores muestrales y los límites de la correlación afectan a la interpretación de un resultado.

6.1 Ordena filas por sus valores o por el índice

La ordenación cambia el orden en que aparecen las observaciones. Mantiene juntos los valores de cada fila y desplaza con ella su etiqueta. Decide qué tiene prioridad y cómo deben ordenarse los valores empatados antes de seleccionar los mayores o menores.

Ordena una columna
scores = pd.DataFrame({
    "name": ["Ana", "Ben", "Chen", "Dara", "Eli"],
    "points": [88, 92, 88, 75, 92]
})
ordered = scores.sort_values("points")

Por defecto, el menor aparece primero. El 75 de Dara es el primero, seguido de los dos 88 y después de los dos 92. Las etiquetas de fila se desplazan con los registros. Entre los empates, el algoritmo de ordenación predeterminado no garantiza el orden original; las etiquetas mostradas pueden ser 3, 0, 2, 1, 4, pero no debe suponerse que las filas empatadas conserven ese orden.

Usa ascending=False para colocar el mayor primero. sort_values devuelve una tabla y deja scores sin cambios salvo que se asigne el resultado.

Elige cómo resolver los empates
scores.sort_values(
    ["points", "name"], ascending=[False, True]
)

La primera clave tiene prioridad. Las puntuaciones disminuyen y los nombres aumentan dentro de las puntuaciones iguales. El orden es Ben, Eli, Ana, Chen y Dara. Ordenar primero los nombres respondería a una pregunta distinta porque convertiría los nombres en la clave principal.

Cuando los empates en una sola columna deban conservar el orden de entrada, usa scores.sort_values("points", kind="stable"). La estabilidad mantiene las filas empatadas en su secuencia existente. En cambio, una clave secundaria da a los empates su propia regla de ordenación explícita.

Ubica los valores faltantes y ordena el texto

Los valores faltantes van al final por defecto tanto en la ordenación ascendente como en la descendente. pd.Series([3.0, np.nan, 1.0]).sort_values() da 1,0; 3,0 y después NaN. na_position="first" mueve la entrada faltante al principio; invertir solo la dirección de ordenación no lo hace.

La ordenación de texto sigue los códigos de caracteres. "Zebra" se ordena antes que "apple" porque las letras mayúsculas y minúsculas ocupan intervalos distintos. Los nombres escritos de forma consistente, como Bags, Home y Stationery, se ordenan alfabéticamente como se espera.

Ordena etiquetas o vuelve a numerarlas

sort_index() ordena las etiquetas de fila, no los valores de los datos. Después de ordenar por puntuación, puede restablecer el orden de las etiquetas predeterminadas originales. sort_index(ascending=False) invierte el orden de las etiquetas. En cambio, reset_index(drop=True) mantiene el orden actual de las filas y sustituye sus etiquetas por 0, 1, 2 y así sucesivamente.

Selecciona las filas con valores mayores o menores

scores.nlargest(2, "points") devuelve Ben y Eli, ambos con 92. nsmallest toma los valores bajos. Si el corte se produce dentro de un empate, decide si quieres conservar todas las filas empatadas. scores.nlargest(1, "points", keep="all") devuelve ambos valores 92, aunque n sea 1. En ese caso, el número solicitado es un límite de corte, no una garantía del número final de filas.

Puntos clave

  • sort_values ordena las filas por los valores de los datos; sort_index ordena las etiquetas de fila.
  • ascending=False coloca primero los valores grandes, mientras que los valores faltantes siguen yendo al final por defecto.
  • Varias claves de ordenación se aplican por orden de prioridad y pueden usar distintas direcciones.
  • Usa una clave secundaria o una ordenación estable de una columna cuando importe el orden de los empates.
  • reset_index(drop=True) vuelve a numerar el orden actual sin volver a ordenarlo.
  • keep="all" en una selección de valores mayores puede devolver más de n filas.

6.2 Asigna rangos a los valores y resuelve los empates

Un rango registra el lugar que corresponde a un valor en el orden de clasificación sin mover su fila. Es útil cuando cada observación necesita un número de puesto junto a sus datos originales. Los empates necesitan una regla porque varios valores pueden ocupar la misma parte de ese orden.

Elige la dirección

scores["points"].rank() asigna rangos de menor a mayor. Usa ascending=False para una tabla de resultados en la que las puntuaciones altas deban recibir los mejores rangos. El método para resolver empates decide entonces qué número de puesto recibe cada grupo empatado.

Las puntuaciones del ejemplo en el orden de las filas son Ana 88, Ben 92, Chen 88, Dara 75 y Eli 92. En orden descendente, los valores 92 ocupan los puestos 1 y 2, los valores 88 los puestos 3 y 4, y 75 el puesto 5. El valor predeterminado method="average" asigna a cada valor empatado la media de sus puestos ocupados. Los valores devueltos, en el orden original de las filas, son 3,5; 1,5; 3,5; 5,0 y 1,5.

Elige un método para resolver empates
MétodoRangos descendentes en el orden original de las filasRegla de empate
average3,5; 1,5; 3,5; 5,0; 1,5Media de los rangos ocupados
min3, 1, 3, 5, 1Menor rango ocupado
max4, 2, 4, 5, 2Mayor rango ocupado
dense2, 1, 2, 3, 1Un rango por valor distinto, sin huecos
first3, 1, 4, 5, 2Rangos separados por orden de aparición

Con min, dos ganadores en el rango 1 hacen que la siguiente puntuación empiece en el rango 3. Con dense, la siguiente puntuación distinta empieza en el rango 2. first resuelve un empate incluso cuando las propias puntuaciones no dan motivo para preferir a una persona; sigue el orden de entrada.

Los resultados de los rangos son números de coma flotante, lo que permite valores como 1,5. Cuando el método elegido produce rangos enteros y no falta ninguno, .astype(int) los convierte para mostrarlos. Un tipo entero ordinario no puede contener un rango faltante.

Expresa los rangos como fracciones

Para el método predeterminado de la media y valores presentes, rank(pct=True) divide cada rango entre el número de valores clasificados. Clasificar las cinco puntuaciones del ejemplo de forma ascendente da 2,5; 4,5; 2,5; 1,0 y 4,5. Dividir entre cinco da 0,5; 0,9; 0,5; 0,2 y 0,9.

Los valores más altos empatados reciben 0,9, no 1, porque su rango medio es 4,5. Un rango percentil describe el rango relativo a los valores clasificados; no es un porcentaje de la propia puntuación.

Gestiona los rangos faltantes y guarda los resultados

Los valores faltantes conservan rangos NaN por defecto. Con los ingresos 7,5; 18,0; 9,5; 24,0; 35,0 y NaN, los rangos descendentes son 5, 3, 4, 2, 1 y NaN. na_option="bottom" coloca la entrada faltante después de los valores registrados y le da el rango 6.

scores["place"] = scores["points"].rank(
    method="min", ascending=False
)

Las filas siguen siendo Ana, Ben, Chen, Dara y Eli. La nueva columna place registra 3, 1, 3, 5 y 1. Ordena por separado si la presentación debe mostrar primero a los ganadores.

Puntos clave

  • La asignación de rangos establece puestos sin mover las filas; la clasificación descendente da números de rango bajos a los valores grandes.
  • Los métodos para resolver empates controlan si los rangos compartidos dejan huecos o siguen el orden de entrada.
  • El método predeterminado de la media puede devolver rangos fraccionarios.
  • Con la asignación predeterminada de rangos mediante la media, pct=True divide entre el número de valores clasificados.
  • Los valores faltantes conservan rangos faltantes por defecto; na_option="bottom" los coloca al final.

6.3 Resume columnas mediante estadísticos descriptivos

Un estadístico descriptivo condensa muchas observaciones en una cantidad útil. Elige un estadístico que se ajuste a la pregunta y consulta su recuento de valores presentes para saber cuántos datos lo respaldan.

Calcula medidas de tendencia central y dispersión
weather = pd.DataFrame({
    "temp_c": [14.0, 17.5, 16.0, 21.0, 19.5, 12.5, 15.0],
    "rain_mm": [0.0, 2.4, 0.0, 0.0, 5.1, 12.3, 0.8]
}, index=["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"])

Para weather["temp_c"], sum() es 115,5, mean() es 16,5 y median() es 16,0. El mínimo es 12,5 y el máximo 21,0, lo que da un rango de 8,5 °C. idxmax() devuelve la etiqueta "Thu", mientras que idxmin() devuelve "Sat": identifican observaciones en lugar de devolver los propios valores extremos.

std() y var() miden la dispersión. pandas usa el denominador muestral por defecto, ddof=1, y divide las desviaciones al cuadrado entre uno menos que el recuento. Aquí la desviación estándar es aproximadamente 3,028 °C y la varianza aproximadamente 9,167 grados Celsius cuadrados. std(ddof=0) usa el propio recuento y da aproximadamente 2,803 °C. np.std de NumPy usa ddof=0 por defecto, así que iguala la configuración antes de comparar resultados.

Interpreta los cuartiles y describe

quantile(0.25) da el cuartil inferior, 14,5; quantile(0.5) da la mediana, 16,0; quantile(0.75) da el cuartil superior, 18,5. La interpolación predeterminada puede devolver un valor entre mediciones registradas.

weather.describe() combina el recuento, la media, la desviación estándar, el mínimo, los tres cuartiles y el máximo para las columnas numéricas. La lluvia tiene una media de aproximadamente 2,94 mm y una mediana de 0,8 mm. La medición de 12,3 mm eleva la media; la mediana describe mejor un día típico en esta semana con asimetría a la derecha.

Ten en cuenta los valores faltantes y los tipos

Para pd.Series([1, np.nan, 3]), .mean() es 2,0 porque los valores faltantes se omiten por defecto. .count() es 2, mientras que .size es 3. Con skipna=False, la media es NaN. No uses el número total de filas como denominador de la media predeterminada cuando falten algunas entradas.

Los resúmenes de texto son distintos. orders["category"].describe() da count 6, unique 3, top Stationery y freq 3. Calcular la media de la tabla de pedidos que mezcla texto genera TypeError; usa orders.mean(numeric_only=True) o selecciona columnas numéricas con select_dtypes("number").

Resume a lo largo de un eje

Por defecto, los estadísticos de DataFrame reducen a lo largo de las filas hasta obtener un resultado por columna. En cambio, axis=1 da un resultado por fila; selecciona cantidades cuyas unidades puedan combinarse con sentido.

orders[["quantity", "unit_price"]].agg(["mean", "max"])

agg calcula conjuntamente varios estadísticos nombrados. Quantity tiene una media de 2,2 y un máximo de 4,0; unit_price tiene una media de aproximadamente 11,46 y un máximo de 35,0. weather["rain_mm"].cumsum() da las sumas acumuladas 0,0; 2,4; 2,4; 2,4; 7,5; 19,8 y 20,6 mm, conservando un resultado por día.

Puntos clave

  • Elige totales, medidas de tendencia central o medidas de dispersión según la pregunta.
  • describe reúne estadísticos numéricos habituales; las columnas de texto tienen resúmenes basados en frecuencias.
  • count excluye los valores faltantes, mientras que size los incluye.
  • La desviación estándar de pandas usa ddof=1; NumPy usa ddof=0 por defecto.
  • Los cuantiles pueden interpolar entre mediciones.
  • idxmax e idxmin devuelven etiquetas; cumsum devuelve sumas acumuladas.
  • agg solicita varios estadísticos y axis controla la dirección de la reducción.

6.4 Cuenta valores y mide relaciones

Los recuentos describen con qué frecuencia aparecen los valores; las correlaciones describen cómo varían conjuntamente dos variables numéricas. Ambos resúmenes necesitan interpretación: qué se cuenta, qué falta y qué relación mide el estadístico.

Cuenta categorías o enumera valores distintos

orders["category"].value_counts() da Stationery 3, Home 2 y Bags 1, ordenados por frecuencia. La Series devuelta se llama count. Las entradas faltantes se excluyen por defecto; dropna=False las incluye como un recuento separado.

orders["category"].value_counts(normalize=True)

La Series normalizada se llama proportion: Stationery es 0,5, Home aproximadamente 0,333 y Bags aproximadamente 0,167. Multiplicar por 100 expresa porcentajes. Con la regla predeterminada para valores faltantes, estas proporciones describen los valores presentes.

PreguntaMétodo
¿Con qué frecuencia aparece cada valor?value_counts()
¿Qué valores distintos aparecen?unique()
¿Cuántos valores presentes distintos aparecen?nunique()
¿Qué valor o valores aparecen con más frecuencia?mode()

unique() conserva el orden de primera aparición: Stationery, Home, Bags. mode() devuelve una Series porque varios valores pueden empatar en la frecuencia más alta. No solicita un único ganador elegido arbitrariamente.

Las condiciones pueden contarse directamente. (weather["rain_mm"] > 0).sum() cuenta cuatro días lluviosos. Su .mean() es aproximadamente 0,571, por lo que llovió aproximadamente el 57 % de los siete días.

Mide una relación lineal

weather["temp_c"].corr(weather["rain_mm"]) da una correlación de Pearson de aproximadamente −0,397. Su signo negativo indica que los días más cálidos tendieron a tener menos lluvia en estas observaciones. Su magnitud describe qué tan bien se ajusta un patrón lineal, en una escala de −1 a 1 que pasa por 0.

Un valor de 1 significa una relación lineal creciente perfecta; −1 significa una decreciente perfecta. Un valor cercano a cero indica poca asociación lineal. Una relación curva puede seguir siendo fuerte incluso cuando la correlación de Pearson está cerca de cero. La correlación también se refiere a la asociación, no demuestra que cambiar una variable cause el cambio de la otra.

Interpreta una matriz de correlaciones

weather.corr() muestra todos los pares numéricos juntos. La matriz es simétrica: la temperatura con la lluvia tiene la misma correlación que la lluvia con la temperatura. Una columna numérica con variación tiene correlación 1 consigo misma; una columna constante no tiene una correlación definida y da NaN.

Para relaciones que crecen o decrecen de forma consistente sin seguir una línea recta, method="spearman" calcula la correlación a partir de los rangos. El método cambia qué tipo de patrón se resume, así que indícalo al comunicar un resultado.

El cálculo meteorológico usa solo siete mediciones. Describe esta pequeña semana observada; las afirmaciones firmes sobre un patrón climático más amplio necesitan más evidencia. Un informe útil incluye las variables, el signo y el tamaño del coeficiente, el método y el número de observaciones.

Puntos clave

  • value_counts informa de las frecuencias; la normalización informa de las proporciones de los valores contados.
  • unique, nunique y mode responden a preguntas distintas sobre valores diferentes y frecuentes.
  • La suma de una condición cuenta las coincidencias y su media da una proporción.
  • La correlación de Pearson mide la asociación lineal de −1 a 1.
  • Una matriz de correlaciones es simétrica; las columnas constantes dan correlaciones no definidas.
  • La correlación de Spearman opera sobre rangos y la correlación por sí sola no establece una causa.

Ejemplos de Series y DataFrames de pandas

6 Lecciones Interactivas

1

Crea una tabla con etiquetas significativas

12 pasos
Crea datos etiquetados, predice la alineación y elige un índice para realizar búsquedas fiables.
  1. 1
    IntroducciónMantén los valores asociados a su significado

    Una lista proporciona valores en un orden. pandas añade etiquetas para que puedas identificar qué describe cada valor, incluso después de que las filas se desplacen. Empieza con una variable etiquetada y después combina varias variables en una tabla.

    La pregunta clave es si una operación sigue la identidad de una fila o su posición actual. Esa distinción explica tanto la aritmética de Series como la elección de un índice útil para una tabla.

  2. 2
    EjemploCrea una Series etiquetada de lluvia

    Crea tres mediciones de lluvia en milímetros:

    rain = pd.Series([4.5, 3.0, 6.2],
        index=["Mon", "Tue", "Wed"], name="rain_mm")
    

    Los valores y las etiquetas se emparejan en orden. rain["Tue"] da 3,0, mientras que rain.iloc[0] da 4,5. La primera solicitud nombra un día; la segunda indica una posición. .dtype es float64 y .size es 3.

  3. 3
    ExplicaciónAplica una regla a todos los valores

    Una Series admite operaciones vectorizadas: rain * 2 duplica cada medición y conserva las etiquetas de día. rain > 4 produce True, False y True, de nuevo etiquetados por día.

    Usa atributos como .index, .name y .dtype sin paréntesis. Cuando necesites los valores como un arreglo de NumPy, llama a .to_numpy(); .values puede devolver un arreglo de pandas para algunos tipos de datos.

  4. 4
    EjemploSuma por etiqueta, no por fila mostrada

    Sea a una Series que contiene x 1, y 2 y z 3, mientras que b contiene y 10, z 20 y w 30. En a + b, y se empareja con y y da 12,0, y z se empareja con z y da 23,0.

    Las etiquetas x y w no tienen pareja, por lo que sus resultados son NaN. En cambio, a.add(b, fill_value=0) da x 1,0 y w 30,0. Una posición de fila compartida no empareja entradas con etiquetas distintas.

  5. 5
    DesafíoPredice una suma alineada

    Una Series tiene las etiquetas a y b con valores 4 y 7. Otra tiene las etiquetas b y c con valores 3 y 9. ¿Cuáles son los resultados no faltantes de la suma ordinaria?

    ---reveal---

    Solo b está presente en ambas entradas. Su suma es 7 más 3, que da 10,0. Las etiquetas a y c tienen resultados faltantes. Sumar el primer elemento con el primero emparejaría incorrectamente a con b.

  6. 6
    EjemploCrea columnas para varias variables

    Crea una pequeña tabla de pedidos:

    df = pd.DataFrame({"product": ["Notebook", "Mug"],
        "quantity": [3, 4], "unit_price": [2.5, 6.0]})
    

    Cada lista proporciona una columna y debe tener un valor por fila. Las columnas comparten las etiquetas de índice 0 y 1, pero conservan sus propios tipos de datos. .shape es (2, 3), mientras que .size es 6 porque cuenta todas las celdas.

  7. 7
    Idea claveConserva la forma que necesita el siguiente paso

    df["quantity"] devuelve una Series. df[["quantity"]] devuelve un DataFrame de una columna porque la lista interior solicita una colección de columnas.

    Esta es una diferencia de estructura, aunque los valores visibles coincidan. Los corchetes también evitan conflictos de nombres: una columna llamada size necesita df["size"], ya que df.size significa el número de celdas del DataFrame.

  8. 8
    DesafíoElige la dirección de un total

    Para las columnas a [1, 2] y b [3, 4], ¿qué devuelve una suma por filas y qué eje la solicita?

    ---reveal---

    Usa df.sum(axis=1). La primera fila da 1 más 3, es decir, 4; la segunda da 2 más 4, es decir, 6. El eje predeterminado opera a lo largo de las filas y daría, en cambio, los totales de columna a 3 y b 7.

  9. 9
    EjemploUsa el identificador de pedido como índice

    Para una tabla con una columna order_id, guarda by_id = orders.set_index("order_id"). Los números de pedido pasan al índice de filas y salen de las columnas ordinarias.

    Una búsqueda como by_id.loc[1004] identifica ahora un pedido en lugar de su ubicación actual. Comprueba by_id.index.is_unique antes de confiar en que cada número identifique exactamente una fila; pandas permite etiquetas duplicadas.

  10. 10
    ConsejoGuarda un cambio de etiquetas

    rename, drop, set_index y reset_index devuelven tablas nuevas. Conserva el resultado mediante una asignación, como orders = orders.rename(columns={"unit_price": "price"}).

    Si omites la asignación, la tabla antigua permanece. Un nombre de columna antiguo mal escrito en rename se ignora por defecto, así que inspecciona .columns cuando falte el nuevo nombre esperado.

  11. 11
    DesafíoRecupera los identificadores sin perderlos

    Una tabla usa identificadores de pedido como índice. Necesitas un índice de filas predeterminado y seguir conservando los identificadores como datos. ¿Qué operación debes guardar?

    ---reveal---

    Guarda df = df.reset_index(). Esto conserva el índice anterior como una columna y proporciona las etiquetas 0, 1, 2 y así sucesivamente. Usar drop=True descartaría esos identificadores. El orden de las filas permanece igual.

  12. 12
    RepasoPredice la identidad, el tipo y la forma

    Antes de interpretar un resultado, comprueba tres cosas: qué etiquetas identifican sus valores, qué tipo de datos los almacena y cuántos ejes conserva la selección.

    La aritmética de Series sigue las etiquetas. Un DataFrame organiza las variables en columnas con tipos de datos. Los cambios de índice permiten que un identificador significativo sirva para búsquedas posteriores, siempre que se guarde la tabla devuelta y sus etiquetas identifiquen las filas de forma única.

2

Carga un CSV y comprueba su significado

13 pasos
Lee un archivo, rastrea problemas estructurales y conserva tipos numéricos y de fecha útiles.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónTrata la carga como un paso comprobable
  2. 2
    ExplicaciónLee registros en una tabla
  3. 3
    EjemploAjusta los separadores y las marcas decimales
  4. 4
    ConsejoConserva los códigos durante la lectura
  5. 5
    DesafíoConserva el primer registro
  6. 6
    EjemploComprueba la estructura visible
  7. 7
    ExplicaciónCuenta lo que está presente y lo que falta
  8. 8
    DesafíoComprueba un identificador y una medición
  9. 9
    EjemploConvierte texto numérico y rastrea un fallo
  10. 10
    Idea claveConserva los recuentos con valores faltantes como enteros
  11. 11
    EjemploHabilita las operaciones con fechas
  12. 12
    DesafíoCorrige una importación numérica
  13. 13
    RepasoRelaciona la estructura, los tipos y los recuentos
3

Selecciona filas por identidad o ubicación

10 pasos
Compara loc e iloc, predice los extremos de los segmentos y conserva la forma de resultado que necesitas.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDetermina si importa la identidad o la ubicación
  2. 2
    EjemploLee un pedido conocido
  3. 3
    EjemploLee un intervalo por etiquetas con ambos extremos incluidos
  4. 4
    DesafíoConserva una tabla de una fila
  5. 5
    EjemploLee un intervalo por posiciones
  6. 6
    ConsejoLee desde el final y más allá del límite
  7. 7
    DesafíoPredice una fila frente a un valor
  8. 8
    ConexiónUsa una forma breve para una celda
  9. 9
    DesafíoSigue una fila durante una ordenación
  10. 10
    RepasoIndica tanto el selector como la forma
4

Filtra registros y actualiza la tabla adecuada

13 pasos
Crea una condición, combina pruebas y realiza un cambio dirigido bajo el mecanismo de copia al escribir.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónConvierte una pregunta sobre datos en una prueba por filas
  2. 2
    EjemploCrea una máscara booleana
  3. 3
    ExplicaciónExige ambas condiciones
  4. 4
    ConsejoUsa un solo valor de verdad cuando sea necesario
  5. 5
    DesafíoCuenta una condición combinada
  6. 6
    EjemploExpresa un intervalo directamente
  7. 7
    Idea claveEncuentra valores ausentes con una prueba de valores faltantes
  8. 8
    DesafíoConvierte un filtro en una consulta
  9. 9
    EjemploAplica el descuento exactamente a los precios de Home
  10. 10
    ExplicaciónComprende por qué una cadena no modifica la tabla de origen
  11. 11
    ConsejoEmpareja los valores de actualización por etiqueta
  12. 12
    DesafíoCombina el filtrado y una actualización
  13. 13
    RepasoExpresa las condiciones y los destinos de forma explícita
5

Convierte columnas existentes en nuevos datos útiles

12 pasos
Calcula ingresos, conserva los valores faltantes y elige métodos adecuados de correspondencia y transformación.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónExpresa una regla para toda la columna
  2. 2
    EjemploCalcula un ingreso por pedido
  3. 3
    Idea claveInterpreta el denominador de una media
  4. 4
    EjemploAñade una columna dentro de una cadena
  5. 5
    DesafíoColoca una Series entrante
  6. 6
    EjemploElige etiquetas a partir de un umbral
  7. 7
    ExplicaciónDecide qué significan los valores no enumerados
  8. 8
    DesafíoElige un método de recodificación parcial
  9. 9
    ConsejoPasa funciones sin llamarlas
  10. 10
    EjemploLimita valores sin eliminar registros
  11. 11
    DesafíoSigue una columna calculada y recodificada
  12. 12
    RepasoComprueba la regla y las entradas sin correspondencia
6

Ordena datos e interpreta sus resúmenes

18 pasos
Sigue las reglas de ordenación y asignación de rangos y después calcula e interpreta resúmenes numéricos y categóricos.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónElige la vista que responde a la pregunta
  2. 2
    EjemploOrdena por puntuación antes que por nombre
  3. 3
    ConsejoConserva completo un empate en el límite
  4. 4
    DesafíoDistingue el orden de las etiquetas del orden de los valores
  5. 5
    EjemploCalcula la media de los puestos ocupados por empates
  6. 6
    ExplicaciónElige entre huecos o grupos consecutivos
  7. 7
    DesafíoInterpreta un rango percentil
  8. 8
    EjemploCrea un resumen meteorológico
  9. 9
    ExplicaciónIguala el denominador de dispersión
  10. 10
    EjemploInterpreta cuartiles y una media afectada por la asimetría
  11. 11
    DesafíoComprueba una media junto con su recuento
  12. 12
    EjemploCuenta categorías y proporciones
  13. 13
    Idea claveDistingue tres preguntas sobre valores
  14. 14
    DesafíoCuenta una condición como fracción
  15. 15
    ExplicaciónDescribe la asociación con precisión
  16. 16
    DesafíoInterpreta una matriz después de comprobar los datos
  17. 17
    DesafíoElige y comunica un resumen
  18. 18
    RepasoMantén visible la regla de cada resumen

Ejercicios de Series y DataFrames de pandas

50 Preguntas de Práctica en 5 sets

Set 1: Interpreta y utiliza una tabla de pandas10 Preguntas de Práctica

Pregunta 1 de 10

s = pd.Series([8, 13, 5], index=[2, 0, 1]). ¿Qué devuelve s[0]?
  1. 8
  2. 13
  3. 5
  4. 0
Mostrar respuestaOcultar respuesta
Respuesta: B
La clave entera 0 selecciona la etiqueta de índice 0, cuyo valor es 13. El primer valor mostrado es 8, pero está en la posición 0 y tiene la etiqueta 2. Para solicitar el primer valor por posición, usa s.iloc[0]; las claves enteras entre corchetes siguen siendo etiquetas.

Pregunta 2 de 10

Una columna contiene [4.0, NaN, 9.0] y representa recuentos enteros de artículos. ¿Qué tipo de datos puede conservar el valor faltante y almacenar los recuentos conocidos como enteros?
  1. int
  2. "bool"
  3. "str"
  4. "Int64"
Mostrar respuestaOcultar respuesta
Respuesta: D
Int64, con I mayúscula, admite valores faltantes, almacena números enteros y representa la entrada faltante como <NA>. El tipo int64 ordinario no tiene marcador de valor faltante y no puede convertir este NaN. El texto conservaría una representación de las entradas, pero no almacenaría recuentos numéricos enteros.

Pregunta 3 de 10

Una tabla tiene las etiquetas de fila únicas [30, 10, 20]. ¿Qué fila selecciona df.loc[10]?
  1. La fila con etiqueta 10, ahora segunda.
  2. La primera fila, en la posición cero.
  3. La última fila, en la posición dos.
  4. La décima fila, si existe.
Mostrar respuestaOcultar respuesta
Respuesta: A
loc interpreta 10 como una etiqueta de índice, por lo que selecciona la segunda fila mostrada. No cuenta diez posiciones hacia adelante. La ubicación de la fila puede cambiar después de ordenar, pero su etiqueta permanece igual hasta que se cambia explícitamente el índice.

Pregunta 4 de 10

df tiene los valores de categoría ["A", "B", "A", "B"] y las masas [3, 7, 9, 4]. Con el índice predeterminado, ¿qué etiquetas cumplen (df["category"] == "A") | (df["mass_kg"] > 6)?
  1. Solo la etiqueta 2.
  2. Solo las etiquetas 0 y 2.
  3. Las etiquetas 0, 1 y 2.
  4. Solo las etiquetas 1 y 2.
Mostrar respuestaOcultar respuesta
Respuesta: C
La máscara «o» conserva las filas que cumplen cualquiera de las dos condiciones. Las filas 0 y 2 son de categoría A, y las filas 1 y 2 superan 6 kg, por lo que su unión es 0, 1 y 2. Conservar solo la etiqueta 2 requeriría ambas condiciones y usaría & en lugar de |.

Pregunta 5 de 10

Las cantidades son [2.0, 5.0, NaN] y los precios unitarios [7.0, 3.0, 9.0]. ¿Cuál es la media predeterminada de sus productos por fila?
  1. Aproximadamente 9.67
  2. 14.5
  3. 29.0
  4. NaN
Mostrar respuestaOcultar respuesta
Respuesta: B
Los productos son 14, 15 y NaN. La media predeterminada omite el resultado faltante, por lo que 29 se divide entre dos y da 14,5. Dividir entre las tres filas da aproximadamente 9,67 y trataría un ingreso desconocido como si su contribución fuera un cero registrado.

Pregunta 6 de 10

Una columna numérica contiene [5.0, NaN, 2.0]. En una ordenación descendente de valores con las opciones predeterminadas, ¿dónde aparece NaN?
  1. Antes de ambos valores numéricos.
  2. Entre los dos valores numéricos.
  3. Después de ambos valores numéricos.
  4. En la misma posición que antes.
Mostrar respuestaOcultar respuesta
Respuesta: C
Los valores faltantes van al final por defecto, incluso cuando los valores se ordenan de forma descendente. El orden es 5, 2 y después NaN. Invertir la dirección de ordenación cambia el orden numérico, pero no mueve los valores faltantes al principio; para eso se necesita na_position="first".

Pregunta 7 de 10

a = pd.Series([6, 9], index=["east", "west"]) y b = pd.Series([4, 7], index=["west", "east"]). ¿Cuáles son (a + b).loc["east"] y (a + b).loc["west"]?
  1. 13 y 13
  2. 10 y 16
  3. 6 y 9
  4. 7 y 4
Mostrar respuestaOcultar respuesta
Respuesta: A
La aritmética de Series empareja las etiquetas de índice. East combina 6 con 7 y west combina 9 con 4, por lo que ambas sumas son 13. Emparejar las primeras entradas mostradas daría 10 y 16, pero esas entradas pertenecen a etiquetas distintas y pandas no las empareja.

Pregunta 8 de 10

Dos filas tienen celdas faltantes: una tiene valores ausentes en tres columnas y la otra en una columna. ¿Qué devuelve df.isna().any(axis=1).sum()?
  1. 4
  2. 3
  3. 1
  4. 2
Mostrar respuestaOcultar respuesta
Respuesta: D
any(axis=1) reduce cada fila a una respuesta: si contiene al menos un valor faltante. Ambas filas afectadas son True, por lo que la suma es 2. Sumar los recuentos de valores faltantes de todas las columnas daría cuatro celdas, pero esta expresión cuenta las filas una sola vez.

Pregunta 9 de 10

Los nombres son ["Zoe", "Ari", "Bo", "Dee"] con puntuaciones [8, 8, 10, 8]. Después de ordenar por puntuación descendente y nombre ascendente, y tomar las dos primeras filas, ¿qué nombres aparecen en orden?
  1. Bo, Zoe.
  2. Bo, Ari.
  3. Ari, Bo.
  4. Ari, Dee.
Mostrar respuestaOcultar respuesta
Respuesta: B
El 10 de Bo lo sitúa primero. Las tres puntuaciones de 8 se ordenan después por nombre, con Ari antes que Dee y Zoe, por lo que la segunda fila seleccionada es Ari. Mantener a Zoe en segundo lugar conservaría el orden de entrada en el empate en lugar de aplicar la clave secundaria indicada.

Pregunta 10 de 10

s contiene ["A", "B", "C", "A", "B"]. Después de s.replace({"C": "B"}), ¿cuáles son la moda y su frecuencia relativa?
  1. B y 0,6.
  2. A y 0,4.
  3. B y 0,5.
  4. A y 0,6.
Mostrar respuestaOcultar respuesta
Respuesta: A
Sustituir C por B hace que los recuentos sean A 2 y B 3, por lo que B es la moda. Su frecuencia relativa es tres de cinco, o 0,6. El denominador sigue siendo cinco porque replace conserva todas las observaciones; la transformación no elimina la fila original de C.
Set 2: Elige la operación adecuada de pandas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un DataFrame tiene 7 filas y 4 columnas. ¿Cuál es su .size?
  1. 7
  2. 4
  3. 28
  4. 11
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Una tabla de 11 filas tiene una columna con 8 valores no nulos. ¿Cuántos valores faltan en esa columna?
  1. 3
  2. 8
  3. 11
  4. 19
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

df tiene cinco filas. ¿Qué posiciones de fila selecciona df.iloc[1:4]?
  1. Posiciones 1, 2, 3 y 4.
  2. Posiciones 1, 2 y 3.
  3. Posiciones 0, 1 y 2.
  4. Posiciones 2, 3 y 4.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

En pandas 3, chosen = df[df["active"]] va seguido de chosen["score"] = 0. ¿Qué sucede con df?
  1. Todas sus puntuaciones pasan a cero.
  2. Solo las puntuaciones activas pasan a cero.
  3. Solo las puntuaciones inactivas pasan a cero.
  4. Sus puntuaciones permanecen sin cambios.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Para los valores [4, 6, 9], ¿qué etiquetas resultan de np.where(s >= 6, "large", "small")?
  1. ["small", "small", "large"]
  2. ["small", "large", "large"]
  3. ["large", "small", "small"]
  4. ["large", "large", "small"]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Las puntuaciones [90, 70, 90, 50] se clasifican con method="min", ascending=False. ¿Qué rangos resultan en el orden original de las filas?
  1. [1, 3, 1, 4]
  2. [1, 2, 1, 3]
  3. [1.5, 3, 1.5, 4]
  4. [2, 3, 2, 4]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un archivo separado por punto y coma contiene code;mass_kg, seguido de 007;1,5 y 012;2,0. ¿Qué carga conserva los códigos y permite calcular la media numérica de la masa?
  1. pd.read_csv("loads.csv", sep=";", decimal=".", dtype={"code": str})
  2. pd.read_csv("loads.csv", sep=";", decimal=",", dtype={"code": int})
  3. pd.read_csv("loads.csv", sep=";", decimal=",", dtype={"code": str})
  4. pd.read_csv("loads.csv", sep=",", decimal=",", dtype={"code": str})
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

df tiene el índice [10, 20, 30] y los ingresos [12.0, 24.0, 36.0]. Se asigna a una columna nueva df.loc[df["revenue"] > 15, "revenue"] / 2. ¿Cuál es la suma predeterminada de la nueva columna?
  1. 36.0
  2. 18.0
  3. NaN
  4. 30.0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Los valores [12, 4, 12, 8] se clasifican de forma ascendente con el método predeterminado y pct=True. ¿Qué rango percentil corresponde a cada 12?
  1. 1.0
  2. 0.75
  3. 0.875
  4. 0.5
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

df.index es ["a", "b", "a"]. ¿De qué tipo es df.loc["a"]?
  1. Un DataFrame que contiene dos filas.
  2. Una Series con la primera fila únicamente.
  3. Una Series que contiene la última fila.
  4. Un escalar que cuenta las filas coincidentes.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Comprueba filas, tipos y cálculos10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

a = pd.Series([5, 8], index=["u", "v"]) y b = pd.Series([2, 4], index=["v", "w"]). Sea c = a.add(b, fill_value=0). ¿Cuánto es c[c > 4].sum()?
  1. 10.0
  2. 15.0
  3. 19.0
  4. 9.0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

df tiene un índice sin nombre [40, 60]. ¿Qué hace df.reset_index() con esas etiquetas?
  1. Las descarta y conserva las demás columnas.
  2. Las conserva como nuevas etiquetas de fila.
  3. Las usa para cambiar el nombre de la primera columna.
  4. Las conserva en una columna index.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un archivo no tiene encabezado y comienza con 501,Sensor. ¿Cómo debe cargarse con las columnas id y device sin perder ese primer registro?
  1. pd.read_csv("devices.csv", header=0, names=["id", "device"])
  2. pd.read_csv("devices.csv", header=None, names=["id", "device"])
  3. pd.read_csv("devices.csv", skiprows=1, names=["id", "device"])
  4. pd.read_csv("devices.csv", index_col=0, names=["id", "device"])
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

En un índice ordenado [11, 12, 13, 14], ¿qué forma tiene df.loc[12:14, ["mass_kg"]]?
  1. (3, 1)
  2. (2, 1)
  3. (1, 3)
  4. (3,)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

cutoff = 6. ¿Cómo puede query seleccionar las filas cuyo mass_kg supera esa variable de Python?
  1. df.query("mass_kg > cutoff")
  2. df.query("@mass_kg > cutoff")
  3. df.query("mass_kg > @cutoff")
  4. df.query("mass_kg > 6@")
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué sucede con 14 en pd.Series([-2, 6, 14]).clip(lower=0, upper=10)?
  1. Se convierte en 10.
  2. Se elimina de la Series.
  3. Se convierte en 0.
  4. Permanece como 14.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una Series de texto es ["L", "M", "L", None]. ¿Qué proporción asigna a L value_counts(normalize=True) con las opciones predeterminadas?
  1. 0.5
  2. 0.75
  3. 2.0
  4. Aproximadamente 0.667
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una importación de seis filas tiene seis identificadores distintos presentes y cuatro mediciones de temperatura presentes que suman 28 °C. Un informe dice que un identificador se repite y que la media es aproximadamente 4,67 °C. ¿Qué informe corregido se ajusta a los datos?
  1. Un identificador se repite; faltan dos mediciones; media de 7 °C.
  2. Los identificadores son únicos; no faltan mediciones; media de 4,67 °C.
  3. Los identificadores son únicos; faltan dos mediciones; media de 7 °C.
  4. Un identificador se repite; no faltan mediciones; media de 4,67 °C.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

df tiene el índice [4, 8, 12] y los precios de coma flotante [10.0, 20.0, 30.0]. Una máscara selecciona las etiquetas 4 y 12. Después de df.loc[mask, "price"] = pd.Series([7.0, 9.0], index=[12, 4]), ¿cuáles son los precios en el orden original de las filas?
  1. [7.0, 20.0, 9.0]
  2. [9.0, 20.0, 7.0]
  3. [9.0, NaN, 7.0]
  4. [NaN, 20.0, NaN]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Las puntuaciones son [11, 9, 9, 6]. ¿Cuáles son el número de filas y la puntuación más baja que devuelve df.nlargest(2, "score", keep="all")?
  1. 2 filas; puntuación mínima 9.
  2. 4 filas; puntuación mínima 6.
  3. 1 fila; puntuación mínima 11.
  4. 3 filas; puntuación mínima 9.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Sigue varias operaciones conjuntamente10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

df = pd.DataFrame({"a": [2, 5], "b": [7, 1]}). ¿Qué valores devuelve df.sum(axis=1) en el orden de las filas?
  1. [9, 6]
  2. [7, 8]
  3. [3, 12]
  4. [2, 5, 7, 1]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

s = pd.Series(["8", "bad", "2.5"]). ¿Cuáles son los valores después de pd.to_numeric(s, errors="coerce")?
  1. [8.0, 0.0, 2.5]
  2. [8, "bad", 2.5]
  3. [8.0, NaN, 2.5]
  4. [8, NaN, 2]
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Una tabla tiene el índice [7, 2, 9] y los valores de x [4, 12, 8]. Sea d = df.sort_values("x", ascending=False). ¿Cuánto es d.iloc[:2]["x"].sum() - d.loc[7, "x"]?
  1. 20
  2. 8
  3. 24
  4. 16
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Para las masas [2, 5, 8], ¿qué valores pasan .between(2, 8, inclusive="neither")?
  1. Tanto 2 como 5.
  2. Solamente 5.
  3. Tanto 5 como 8.
  4. Los tres valores.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

df tiene el índice [5, 9, 12], la cantidad [2, 3, 4] y el precio [6, 5, 2]. Calcula los ingresos, conserva los superiores a 10 y después asigna pd.Series([20.0], index=[9]) como adjusted. ¿Cuál es la media predeterminada del valor ajustado?
  1. 10.0
  2. 13.5
  3. 20.0
  4. NaN
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Las mediciones son [3.0, 7.0, NaN, 8.0]. ¿Cuáles son su media y su recuento predeterminados?
  1. 4.5 y 4
  2. 6.0 y 3
  3. 6.0 y 4
  4. 4.5 y 3
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

df = pd.DataFrame({"a": [2, 6], "b": [5, 3]}, index=[8, 4]). Después de df = df.T, ¿cuáles son df.shape y df.loc["b"].sum()?
  1. (2, 2) y 8
  2. (2, 2) y 9
  3. (2, 2) y 7
  4. (4, 1) y 8
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una Series contiene "1,500", "800", "unknown", "200", sin valores faltantes previos. Después de eliminar las comas, aplicar coerción numérica y calcular la media predeterminada, ¿cuáles son la media y el número de nuevos valores faltantes?
  1. 625.0; un nuevo valor faltante.
  2. Aproximadamente 833.33; ningún valor faltante nuevo.
  3. 625.0; ningún valor faltante nuevo.
  4. Aproximadamente 833.33; un nuevo valor faltante.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Una Series float64 contiene [2.0, NaN, 8.0, 5.0]. ¿Cuál es la suma de los valores seleccionados por s.notna() & (s != 5) & (s < 8)?
  1. 10.0
  2. 7.0
  3. 2.0
  4. NaN
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Las mediciones son [1, 2, 3, 4, 40] mm. La media es 10 mm y la mediana es 3 mm. ¿Por qué describe mejor la mediana una medición típica en este caso?
  1. La mediana suma las cinco mediciones antes de dividir.
  2. La media da a cada medición un peso diferente.
  3. La mediana siempre es igual a la medición más pequeña.
  4. La medición alta de 40 mm eleva la media.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Resuelve problemas de alineación y resumen10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

s = pd.Series(["X", "Y", "X", "Z"]). Después de t = s.map({"X": 4, "Y": 10}), ¿cuáles son t.count() y t.mean()?
  1. 4 y 4.5
  2. 3 y 4.5
  3. 3 y 6.0
  4. 4 y 6.0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Una Series s de pandas contiene [2.0, 4.0, 6.0]. ¿Cuáles son s.std() y np.std(s.to_numpy()), redondeados a tres cifras decimales?
  1. 1.633 y 2.000
  2. 4.000 y 2.667
  3. 2.000 y 2.000
  4. 2.000 y 1.633
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Una tabla indexada por los identificadores únicos 81 y 82 se guarda como df. La siguiente línea es df.reset_index(). ¿Por qué sigue fallando df.loc[0]?
  1. El restablecimiento conservó 81 como primera etiqueta.
  2. El nuevo índice comienza en la posición 1.
  3. La tabla devuelta no se asignó.
  4. La columna de identificadores impide buscar etiquetas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un archivo usa punto y coma entre los campos y puntos decimales en los números. ¿Qué opción cambia el separador de campos?
  1. decimal=";"
  2. sep=";"
  3. header=";"
  4. index_col=";"
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una tabla de cuatro filas tiene las etiquetas [8, 3, 6, 1]. ¿Qué etiquetas permanecen en df.iloc[-2:][["x"]]?
  1. 8 y 3.
  2. 3 y 6.
  3. 1 y 6.
  4. 6 y 1.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

df tiene el índice ["k", "m", "p"], a [4, 8, 12] y b [3, 1, 5]. Sea d = df.loc[(df["a"] >= 8) & (df["b"] < 4), ["a", "b"]]. ¿Cuánto es d.sum(axis=1).iloc[0]?
  1. 9
  2. 7
  3. 17
  4. 24
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Los nombres de dispositivos son ["Probe A", "sensor", None, "PROBE B"]. ¿Qué etiquetas de fila predeterminadas pasan .str.contains("probe", case=False, na=False)?
  1. 0 y 3.
  2. Solo la etiqueta 0.
  3. 0, 2 y 3.
  4. Solo la etiqueta 3.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

df tiene etiquetas predeterminadas y precios de coma flotante [8.0, 12.0, 18.0]. Se ejecuta mask = df["price"] >= 12 y después df.loc[mask, "price"] = pd.Series([9.0], index=[2]). ¿Qué devuelve df["price"].count()?
  1. 3
  2. 2
  3. 1
  4. 0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Una tabla tiene el índice predeterminado y las puntuaciones [60, 90, 90, 75] en el orden de las filas. Se asigna un rango denso descendente como place y la tabla se ordena por place de forma ascendente con una ordenación estable. ¿Qué etiquetas de fila originales aparecen primero?
  1. 0 y 3.
  2. 2 y 1.
  3. 1 y 3.
  4. 1 y 2.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

df tiene x [1, 2, 3, 4], y [100, 6, 4, 2] y z [5, 5, 5, 5]. Después de df.loc[df["x"] > 1, ["x", "y", "z"]].corr(), ¿qué valores aparecen para x con y y para z consigo misma?
  1. 1.0 y NaN
  2. -1.0 y 1.0
  3. -1.0 y NaN
  4. -1.0 y 0.0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

91 Términos Clave, cada uno con su definición

A

Accesor de fecha y hora (dt)
El accesor de fecha y hora dt proporciona componentes o métodos de fecha y hora para una Series cuyos valores son de ese tipo.
Después de convertir las fechas, .dt.day_name() devuelve el día de la semana asociado a cada fecha de pedido.
Accesor de texto (str)
El accesor de texto str proporciona métodos vectorizados de cadenas sobre una Series de texto, incluida la conversión a mayúsculas y el recuento de caracteres.
orders["product"].str.len() calcula una longitud de nombre para cada producto registrado.
Actualización condicional
Una actualización condicional asigna valores nuevos a celdas de filas seleccionadas por una condición, normalmente mediante una sola asignación con loc.
df.loc[mask, "price"] *= 0.9 aplica un descuento exactamente a las filas seleccionadas por la máscara de actualización de precios.
Agregación (reducción)
Una agregación reduce una colección de valores a resultados resumidos; agg permite solicitar varios estadísticos conjuntamente.
agg(["mean", "max"]) informa de dos resúmenes distintos para cada columna numérica seleccionada.
Alineación por etiquetas
La alineación por etiquetas es el emparejamiento de valores de pandas por etiquetas de índice durante las operaciones, incluso cuando sus posiciones difieren.
Sumar Series indexadas con ciudades en distinto orden sigue combinando cada ciudad con la misma ciudad.
Aplicación de una función por filas (apply)
La aplicación de una función por filas pasa cada fila de un DataFrame a una función con axis=1, lo que permite a la función leer varias columnas.
Una función personalizada por filas puede usar quantity y price, aunque la multiplicación de columnas es más rápida para los ingresos.
Asignación de columnas (assign)
El método assign devuelve un DataFrame que contiene columnas nuevas o sustituidas y deja su tabla de entrada sin cambios.
Una expresión lambda de assign puede calcular una columna de impuesto a partir de revenue en esa etapa de una cadena de métodos.
Asignación encadenada
La asignación encadenada intenta actualizar valores mediante selecciones sucesivas y nunca cambia la tabla original en pandas 3.
Una tabla filtrada seguida de otra selección de columna no puede servir para actualizar su tabla de origen.
Asignación escalar
Una asignación escalar rellena todas las celdas indicadas con un solo valor proporcionado, sin necesitar un valor distinto para cada fila seleccionada.
Asignar cero a una selección con loc da cero a todas las celdas seleccionadas y deja las demás filas sin cambios.
Asociación
Una asociación es una relación observada entre variables; una correlación la describe sin establecer un mecanismo causal.
La correlación entre temperatura y lluvia de una semana no demuestra que cambiar la temperatura causaría un cambio en las precipitaciones.

C

Cambio de etiquetas (rename)
El método rename devuelve un objeto con las etiquetas indicadas modificadas según una correspondencia y conserva las demás etiquetas.
rename(columns={"unit_price": "price"}) cambia el nombre de una columna sin cambiar sus valores.
Clave de ordenación
Una clave de ordenación es la columna o etiqueta cuyos valores controlan el orden; las claves anteriores tienen prioridad cuando se proporcionan varias.
Las puntuaciones pueden ser la clave de ordenación principal y los nombres pueden ordenar los registros que comparten la misma puntuación.
Coerción de tipos
La coerción numérica convierte los valores numéricos interpretables y sustituye las entradas no válidas por valores faltantes en lugar de detenerse.
Convertir "7", "unknown", "2.5" con errors establecido en coerce crea una nueva entrada faltante.
Coincidencia de texto
Una coincidencia de texto comprueba un patrón de cadena frente a cada entrada de texto, por ejemplo, buscando dentro de los valores con str.contains.
Buscar "note" con case=False encuentra Notebook aunque su N sea mayúscula.
Columna
Una columna es una secuencia etiquetada que representa una variable en un DataFrame y se almacena como una Series con su propio tipo de datos.
La columna de cantidad contiene un recuento o una entrada faltante para cada pedido de la tabla.
Columna derivada
Una columna derivada almacena valores calculados a partir de datos existentes, como operaciones aritméticas por filas entre dos columnas numéricas.
Multiplicar quantity por unit_price crea revenue y conserva cada resultado junto a su pedido.
Comprobación de pertenencia (isin)
El método isin crea una máscara de pertenencia y comprueba si cada valor aparece en una colección proporcionada de valores permitidos.
Comprobar la pertenencia de categorías a ["Home", "Bags"] sustituye dos comparaciones de igualdad unidas por «o».
Comprobación de pertenencia a un intervalo (between)
El método between comprueba si cada valor está entre un límite inferior y uno superior e incluye ambos extremos por defecto.
between(5, 20, inclusive="left") incluye 5, pero excluye 20 del intervalo de precios.
Comprobación de registros duplicados
Una comprobación de registros duplicados marca filas repetidas o valores repetidos en columnas seleccionadas, normalmente dejando sin marcar la primera aparición.
En una columna de producto que lista Notebook más de una vez, duplicated(subset="product") marca las entradas posteriores de Notebook incluso cuando todos los identificadores de pedido son distintos.
Conjunción lógica elemento a elemento
La conjunción lógica elemento a elemento combina máscaras con & y hace que una fila sea True solo cuando ambas condiciones correspondientes son True.
Un pedido de Home que cuesta más de 10 debe cumplir tanto la comparación de categoría como la de precio.
Conversión de tipos
La conversión de tipos cambia los valores a un tipo de datos elegido para que la columna admita las operaciones que requiere su significado.
Convierte el texto de fechas antes de solicitar .dt.month y después asigna de nuevo la Series convertida.
Copia al escribir (Copy-on-Write)
La copia al escribir es el comportamiento de pandas 3 según el cual una Series o un DataFrame derivados actúan de forma independiente cuando cambian sus valores.
Editar una selección guardada de pedidos Home de una tabla de pedidos cambia esa selección y deja sin cambios la tabla de pedidos.
Correlación de Pearson
La correlación de Pearson mide la dirección y la intensidad de una asociación lineal entre variables numéricas en una escala de −1 a 1.
Un coeficiente negativo entre temperatura y lluvia describe una tendencia a que los días más cálidos tengan menos lluvia.
Correlación de Spearman
La correlación de Spearman mide la asociación mediante rangos y es adecuada para relaciones que crecen o decrecen de forma consistente.
Una relación curva que aumenta de forma constante puede describirse mediante rangos sin suponer una línea recta.
Correspondencia mediante un diccionario
La correspondencia mediante un diccionario traduce cada entrada mediante una búsqueda de clave a valor y, con map, convierte una entrada no enumerada en un valor faltante.
Asignar un código a cada categoría requiere una clave para cada categoría cuyo código deba seguir siendo conocido.
Cuantil
Un cuantil marca una posición en datos ordenados correspondiente a una fracción de cero a uno; pandas interpola por defecto.
quantile(0.25) puede dar un cuartil inferior situado entre dos temperaturas medidas en una columna de temperatura.

D

Delimitador
Un delimitador es el carácter que separa los campos en un registro de texto y se especifica con sep cuando pandas lee un archivo CSV.
Un archivo delimitado por punto y coma necesita sep=";" incluso si los números dentro de sus campos usan comas decimales.
Desviación estándar (desviación típica)
La desviación estándar mide la dispersión alrededor de la media en las unidades originales; pandas usa el denominador muestral por defecto.
La desviación estándar de la temperatura se mide en grados Celsius, a diferencia de la varianza, que se mide en grados cuadrados.
Detección de valores faltantes (isna)
El método isna identifica entradas faltantes y produce True para los valores faltantes y False para los valores presentes en cada posición.
Una máscara isna puede seleccionar el pedido sin cantidad sin comparar nada con NaN.
Difusión de un escalar
La difusión de un escalar aplica un valor proporcionado a toda una operación de columna o rellena una columna de destino con ese valor.
Dividir cada ingreso entre el mismo total conocido da la participación de cada pedido en ese total.
Directorio de trabajo
El directorio de trabajo es la carpeta a partir de la cual Python resuelve las rutas relativas al abrir archivos como un CSV.
Un nombre de archivo válido puede generar FileNotFoundError si Python se ejecuta en una carpeta diferente.
Disyunción lógica elemento a elemento
La disyunción lógica elemento a elemento combina máscaras con | y hace que una fila sea True cuando cualquiera de las condiciones correspondientes, o ambas, es True.
Una selección de artículos de Home o precios superiores a 10 puede incluir artículos caros de otra categoría.

E

Eje
Un eje es una dirección en una tabla de pandas: el eje 0 recorre las filas y el eje 1 recorre las columnas para las reducciones por filas.
df.sum(axis=1) suma las columnas numéricas seleccionadas dentro de cada fila y da un total por fila.
Encabezado (cabecera)
Un encabezado es la línea que contiene los nombres de las columnas de una tabla, que pandas normalmente lee de la primera línea de un CSV.
Usa header=None cuando la primera línea contiene un registro real que debe permanecer en los datos.
Error de coma flotante
Un error de coma flotante es una pequeña diferencia causada por representar y calcular valores decimales en almacenamiento binario.
Un cálculo de impuesto puede mostrar 1.9000000000000001, que puede redondearse a dos cifras decimales.
Escalar
Un escalar es un valor individual devuelto cuando una selección identifica una celda en lugar de una Series o un DataFrame.
Seleccionar una etiqueta de fila única y un nombre de columna devuelve un nombre de producto como escalar.
Establecimiento del índice (set_index)
El método set_index devuelve una tabla que usa una columna elegida como etiquetas de fila y elimina esa columna por defecto.
orders.set_index("order_id") convierte un número de pedido en la etiqueta usada para búsquedas posteriores de filas.

F

Filtrado
El filtrado conserva las observaciones que cumplen una condición de filas y mantiene sus valores y etiquetas de índice existentes.
Después de conservar los pedidos de Stationery, las etiquetas originales pueden tener huecos en lugar de volver a empezar en cero.
Filtrado mediante una expresión de consulta (query)
El método query filtra un DataFrame mediante una expresión de cadena en la que los nombres de columna se refieren directamente a sus valores.
query("quantity >= 2 and unit_price < 5") puede expresar con claridad un filtro combinado de pedidos.
Forma (shape)
La forma de un DataFrame es una tupla de dos elementos que indica primero su número de filas y después su número de columnas.
Una tabla con seis pedidos y cuatro variables registradas tiene forma (6, 4) y 24 celdas.
Frecuencia relativa
Una frecuencia relativa es el recuento de un valor dividido entre el recuento de todas las entradas incluidas y expresa una proporción.
Tres entradas de Stationery entre seis categorías presentes dan 0,5, o 50 % después de multiplicar por 100.
Frecuencias absolutas
Las frecuencias absolutas indican cuántas veces aparece cada valor distinto, normalmente ordenadas de mayor a menor frecuencia.
Las frecuencias absolutas de las categorías muestran si la mayoría de los pedidos registrados son Stationery, Home o Bags.

Í

Índice
Un índice es la colección de etiquetas asociadas a una Series o a las filas de un DataFrame, que se usa para identificar entradas.
Un índice de ciudades permite que population["Lima"] solicite el valor de una ciudad sin conocer su posición.
Índice de rango entero (RangeIndex)
Un RangeIndex es una secuencia de etiquetas enteras de fila proporcionada por defecto, que normalmente comienza en cero y aumenta de uno en uno.
Después de filtrar, reset_index(drop=True) sustituye las etiquetas conservadas por un nuevo índice predeterminado.

I

Inferencia de tipos
La inferencia de tipos es la elección que hace pandas del tipo de datos de una columna a partir de sus valores de entrada cuando no se proporciona un tipo explícito.
La inferencia numérica puede convertir el identificador "001" en 1 salvo que su tipo de datos se especifique como texto.

M

Marcador de valor faltante
Un marcador de valor faltante es un elemento o valor almacenado que se usa para indicar que una entrada está ausente y no es conocida.
na_values=["-"] indica al lector de CSV que un guion en el archivo representa una entrada faltante.
Máscara booleana
Una máscara booleana es una secuencia de valores de verdad que indica qué entradas cumplen una condición y deben seleccionarse.
Comparar cada precio con 10 crea un True o False para la fila de cada pedido.
Matriz de correlaciones
Una matriz de correlaciones registra las correlaciones por pares y es simétrica, con correlaciones de 1 de cada columna numérica con variación consigo misma.
La entrada de lluvia con temperatura es igual a la de temperatura con lluvia; una columna constante da NaN.
Media aritmética (promedio)
La media es el total de los valores numéricos registrados dividido entre su recuento, y pandas omite los valores faltantes por defecto.
Una cantidad media basada en cinco recuentos registrados no debe dividirse entre las seis filas de pedidos.
Mediana
La mediana es el valor central de los datos numéricos ordenados y calcula la media de los dos valores centrales cuando el número de registros es par.
Un día muy lluvioso puede elevar la media semanal de lluvia por encima de la mediana, que permanece cerca del día seco típico.
Moda
Una moda es un valor que comparte la frecuencia más alta de un conjunto de datos; pandas devuelve una Series porque puede haber varias modas empatadas.
Si A y B aparecen tres veces cada uno y ningún valor aparece con más frecuencia, mode devuelve ambas etiquetas.
Muestra aleatoria
Una muestra aleatoria es una selección realizada mediante un procedimiento aleatorio; un random_state fijo hace que la selección sea reproducible con los mismos datos.
sample(3, random_state=0) es útil para comprobar filas más allá del principio o del final de una tabla.

N

No es un número (NaN)
NaN es un marcador de valor faltante usado en datos de coma flotante y en los datos de texto predeterminados de pandas 3; no es un cero numérico conocido.
Una cantidad vacía puede hacer que sus ingresos calculados sean faltantes mientras los ingresos conocidos siguen siendo utilizables.

O

Observación
Una observación es el caso individual registrado en una fila de una tabla ordenada, con sus variables registradas en columnas.
Una fila registra un pedido, incluso cuando su producto también aparece en la fila de otro pedido.
Operación vectorizada
Una operación vectorizada aplica una expresión a una secuencia o columna completa de valores sin un bucle explícito de Python sobre filas.
Multiplicar una Series de precios por 0,9 reduce cada precio registrado en la misma proporción.
Orden ascendente
El orden ascendente coloca los valores menores antes que los mayores y es la dirección predeterminada de la ordenación de valores e índices en pandas.
Establece ascending=False cuando una tabla de resultados deba mostrar primero las puntuaciones más altas.
Ordenación estable
Una ordenación estable conserva el orden relativo original de las entradas empatadas en el valor de ordenación cuando se solicita para ordenar una columna.
kind="stable" mantiene dos puntuaciones iguales en su orden anterior en lugar de imponer una nueva regla de empate.

P

Posición negativa
Una posición negativa cuenta hacia atrás desde el final de un eje, y −1 identifica su última entrada disponible.
La posición −2 selecciona la penúltima columna independientemente de su nombre.

R

Rango
Un rango es un número que describe el puesto de un valor en datos ordenados y se asocia a la fila original sin cambiar su orden.
Los rangos descendentes permiten que el registro original de cada persona incluya un puesto basado en su puntuación.
Rango denso
Un rango denso da rangos consecutivos a grupos de valores distintos, de modo que los empates no dejan huecos antes del siguiente grupo.
Dos ganadores empatados reciben el rango 1 y la siguiente puntuación distinta recibe el rango 2 con el método dense.
Rango medio
Un rango medio da a cada valor empatado la media de las posiciones ocupadas por su grupo empatado en el orden de clasificación.
Dos puntuaciones máximas iguales que ocupan los puestos 1 y 2 reciben ambas el rango descendente 1,5.
Rango mínimo
Un rango mínimo da a los valores empatados el menor rango ocupado y deja huecos correspondientes a los otros puestos ocupados por el empate.
Con dos valores clasificados en primer lugar, el siguiente valor distinto recibe el rango 3 usando el método min.
Rango percentil
Un rango percentil expresa un rango como una fracción; la asignación predeterminada mediante la media divide entre el número de valores clasificados.
Un rango medio de 4,5 entre cinco valores presentes da un rango percentil de 0,9.
Rango por orden de aparición
Un rango por orden de aparición resuelve los empates según su orden en la entrada y da a cada entrada empatada un rango separado con el método first.
Cambiar el orden de filas empatadas puede cambiar sus rangos con el método first aunque sus puntuaciones no cambien.
Recorte de valores (clipping)
El recorte de valores limita los valores a unos límites inferiores o superiores dados y conserva cada observación en lugar de eliminar filas fuera de rango.
Recortar los precios unitarios en 20 cambia un valor de 35 a 20 y conserva el mismo registro de pedido.
Recuento de valores distintos
Un recuento de valores distintos es el número de valores presentes diferentes de una columna, devuelto por nunique con sus opciones predeterminadas.
Seis identificadores registrados distintos entre seis filas indican que la columna de identificadores no tiene valores repetidos.
Recuento de valores no nulos
Un recuento de valores no nulos es el número de entradas presentes en una columna, que puede compararse con el número de filas para localizar valores faltantes.
Cinco cantidades no nulas entre seis pedidos significan que un pedido no tiene una cantidad registrada.
Reducción booleana
Una reducción booleana combina muchos valores de verdad en un resultado, como si alguna entrada o todas las entradas son True.
El método .any() de una máscara puede responder si al menos un pedido tiene una cantidad faltante.
Restablecimiento del índice (reset_index)
El método reset_index devuelve una tabla con un nuevo índice de filas predeterminado y, salvo que se descarte, conserva el índice anterior como columna.
Un índice con nombre de identificador de pedido vuelve a ser una columna order_id después de usar reset_index() sin más.

S

Segmento por etiquetas
Un segmento por etiquetas selecciona un intervalo mediante etiquetas inicial y final e incluye ambos extremos en un índice ordenado adecuado.
En un índice de etiquetas de pedido, .loc[1002:1004] incluye las tres etiquetas de pedido 1002, 1003 y 1004.
Segmento por posiciones
Un segmento por posiciones selecciona un intervalo desde una posición inicial incluida hasta la posición final indicada, sin incluirla.
.iloc[1:3] devuelve las posiciones 1 y 2 y puede diferir de un segmento de loc que incluye ambos extremos.
Selección condicional
La selección condicional con np.where elige un resultado para las entradas True y otro para las entradas False de una condición.
Un umbral de precio puede producir las etiquetas high y low sin escribir un bucle de Python sobre las filas.
Selección de los n valores mayores
Una selección de los n valores mayores recupera las filas con los valores más altos y puede incluir todos los empates en el límite cuando keep se establece en all.
nlargest(1, "points", keep="all") devuelve dos filas si dos personas comparten la puntuación más alta.
Selector de celda por etiquetas (at)
El selector at selecciona una sola celda mediante sus etiquetas de fila y columna y proporciona una forma concisa de búsqueda escalar por etiquetas.
orders.at[2, "product"] lee el producto con etiqueta 2 en una tabla de pedidos con índice predeterminado.
Selector de celda por posiciones (iat)
El selector iat selecciona una sola celda mediante sus posiciones de fila y columna contadas desde cero, sin interpretarlas como etiquetas.
orders.iat[2, 2] lee la celda de la tercera fila y la tercera columna de una tabla de pedidos.
Selector de columnas
Un selector de columnas identifica qué variables debe devolver una selección de dos ejes, usando etiquetas en loc y posiciones en iloc.
Una máscara puede elegir las filas mientras ["product", "unit_price"] elige las columnas que se mostrarán.
Selector por etiquetas (loc)
El selector loc selecciona filas y columnas por etiquetas y acepta etiquetas individuales, listas, segmentos por etiquetas y máscaras booleanas.
Un índice de identificadores de pedido permite que .loc[1004, "product"] seleccione el producto de un pedido identificado.
Selector por posiciones (iloc)
El selector iloc selecciona filas y columnas por posiciones enteras contadas desde cero, independientemente de sus etiquetas o nombres.
.iloc[-1] devuelve la última fila incluso si su etiqueta de índice es un número de pedido como 1006.
Serie (Series)
Una Series es una estructura unidimensional de pandas que asocia cada valor almacenado con una etiqueta de índice y tiene un solo tipo de datos.
Una Series de lluvia puede asociar mediciones en milímetros con las etiquetas Mon, Tue y Wed.
Suma acumulada
Una suma acumulada es un total progresivo con un valor acumulado en cada posición, devuelto por el método cumsum.
Las sumas acumuladas de lluvia diaria indican cuánta lluvia se ha acumulado hasta cada día de la semana.
Sustitución
La sustitución cambia los valores especificados y conserva los no enumerados, como hace una operación replace de Series.
En una columna de categoría con Bags, Home y Stationery, sustituir Bags por Luggage deja sin cambios las etiquetas Home y Stationery.

T

Tabla de datos (DataFrame)
Un DataFrame es una tabla bidimensional de pandas cuyas columnas comparten un índice de filas y pueden tener cada una un tipo de datos distinto.
Una tabla de pedidos almacena texto de productos, cantidades numéricas y precios en columnas separadas.
Tipo de datos (dtype)
Un tipo de datos es el tipo en que se almacena una Series o columna y determina qué valores puede contener y qué operaciones admite.
Una columna de cantidad puede usar float64 cuando un registro tiene una cantidad vacía que se lee como NaN.
Tipo de datos categórico (category)
El tipo de datos category representa etiquetas repetidas mediante un conjunto de categorías y sus códigos, lo que suele ahorrar memoria en tablas grandes.
Una columna categórica no ordenada rechaza min() incluso cuando sus etiquetas mostradas son texto ordinario.
Tipo entero que admite valores faltantes
Un tipo entero que admite valores faltantes almacena números enteros junto con entradas faltantes, representadas como en Int64 de pandas.
Una columna de recuentos con un campo vacío puede usar "Int64" en lugar de fallar al convertirse al tipo int ordinario.

U

Ubicación de los valores faltantes
La ubicación de los valores faltantes especifica dónde aparecen las entradas faltantes en un resultado ordenado, independientemente de la dirección de la ordenación numérica.
Una ordenación descendente sigue colocando NaN al final salvo que se solicite explícitamente na_position="first".
Unicidad del índice
La unicidad del índice significa que cada etiqueta de fila aparece una sola vez, lo que permite que una etiqueta sirva como identificador inequívoco de fila.
Comprueba .index.is_unique antes de esperar que un identificador de pedido devuelva exactamente una fila.

V

Valores separados por comas (CSV)
CSV es un formato de texto para registros tabulares cuyos campos están separados por un delimitador, normalmente comas, y que suele tener un encabezado.
Un campo vacío entre dos delimitadores puede representar una cantidad no registrada en un pedido.
Variable de consulta
Una variable de consulta es un valor externo de Python al que se hace referencia con el prefijo @ para distinguirlo de los nombres de columna.
Con limit = 5, query("unit_price > @limit") compara los precios con ese valor de Python.
Varianza
La varianza mide la desviación cuadrática media respecto a la media usando el denominador elegido; en pandas, ddof=1 por defecto.
Es necesario igualar ddof antes de comparar un cálculo de dispersión de pandas con las opciones predeterminadas de NumPy.
Vista previa
Una vista previa es una pequeña selección de registros mostrados que se usa para comprobar los valores visibles y la estructura antes de analizar toda la tabla.
head(3) permite comprobar el encabezado y los tres primeros registros sin mostrar todas las filas.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar