Nivel 1 · Tu primer DataFrame
¿Es nuevo para ti? Lee primero el concepto: Mirar una tabla antes de confiar en ella
0 de 3
La solicitud

De Priya Shah, Directora de Datos
Tu objetivo
Asigna a result un DataFrame con las 10 primeras filas de orders, todas las columnas, exactamente como las devuelve head().
- Usa el DataFrame
orderspendiente - Muestra exactamente
order_idcustomer_idorder_datestatuschannelshipping_feecoupon_codependiente - 10 filas, ordenadas como se pidependiente
Tu código
Cargando el editor…
Solución de referencia
| order_id | customer_id | order_date | status | channel |
|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Priya, y por qué
DataFrames
Cargados como DataFrames de pandas, junto con pd y np.
orders12,000 filas · 7 columnas
order_idintegercustomer_idintegerorder_datetimestampstatusvarcharchannelvarcharshipping_feedecimalcoupon_codevarchar
| order_id | customer_id | order_date | status | channel | shipping_fee | coupon_code |
|---|---|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web | 0.00 | NaN |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web | 0.00 | NaN |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace | 4.99 | WELCOME10 |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace | 4.99 | WELCOME10 |
| 1005 | 82 | 2023-01-02 11:43:36 | completed | web | 0.00 | WELCOME10 |
customers2,018 filas · 9 columnas
customer_idintegerfirst_namevarcharlast_namevarcharemailvarcharcityvarcharstatevarcharsignup_datedatesegmentvarcharreferral_sourcevarchar
| customer_id | first_name | last_name | city | state | signup_date | segment | referral_source | |
|---|---|---|---|---|---|---|---|---|
| 1 | Owen | Hudson | owen.hudson@icloud.com | San Francisco | CA | 2022-06-02 | consumer | search |
| 2 | Douglas | Mendoza | dmendoza69@gmail.com | Atlanta | GA | 2022-06-02 | consumer | NaN |
| 3 | Henry | Brooks | hbrooks@lakesidecafe.com | Los Angeles | CA | 2022-06-04 | business | NaN |
| 4 | Brian | Graham | bgraham@bluecedarhomes.com | Seattle | WA | 2022-06-06 | business | |
| 5 | Kyle | Jimenez | kjimenez27@yahoo.com | Indianapolis | IN | 2022-06-07 | consumer | NaN |
products120 filas · 8 columnas
product_idintegernamevarcharcategoryvarcharsubcategoryvarcharunit_pricedecimalunit_costdecimallaunched_ondateis_activeboolean
| product_id | name | category | subcategory | unit_price | unit_cost | launched_on | is_active |
|---|---|---|---|---|---|---|---|
| 101 | Vale Velvet Loveseat | Furniture | Sofas | 1659.00 | NaN | 2023-09-11 | true |
| 102 | Alder Oak Coffee Table | Furniture | Tables | 919.00 | 503.50 | 2024-05-16 | true |
| 103 | Orchard Rattan Dining Chair | Furniture | Chairs | 789.00 | 429.87 | 2023-05-27 | true |
| 104 | Upland Oak Bookcase | Furniture | Storage | 429.00 | 214.70 | 2022-12-20 | true |
| 105 | Avery Leather Bed Frame | Furniture | Beds | 449.00 | 232.70 | 2021-08-31 | true |
order_items30,338 filas · 6 columnas
order_item_idintegerorder_idintegerproduct_idintegerquantityintegerunit_pricedecimaldiscount_pctdecimal
| order_item_id | order_id | product_id | quantity | unit_price | discount_pct |
|---|---|---|---|---|---|
| 1 | 1001 | 121 | 9 | 31.99 | 0.00 |
| 2 | 1001 | 154 | 3 | 11.99 | 0.00 |
| 3 | 1002 | 154 | 4 | 11.99 | 0.00 |
| 4 | 1002 | 194 | 1 | 149.00 | 0.00 |
| 5 | 1002 | 193 | 2 | 19.99 | 0.00 |
returns1,673 filas · 5 columnas
return_idintegerorder_item_idintegerreturned_ondatereasonvarcharrefund_amountdecimal
| return_id | order_item_id | returned_on | reason | refund_amount |
|---|---|---|---|---|
| 1 | 14 | 2023-01-10 | damaged | 83.69 |
| 2 | 42 | 2023-01-10 | wrong_item | 19.99 |
| 3 | 105 | 2023-01-14 | wrong_item | 10.99 |
| 4 | 24 | 2023-01-16 | changed_mind | 26.99 |
| 5 | 126 | 2023-01-16 | late | 20.99 |
employees60 filas · 8 columnas
employee_idintegerfirst_namevarcharlast_namevarchardepartmentvarchartitlevarcharmanager_idintegerhire_datedatesalaryinteger
| employee_id | first_name | last_name | department | title | manager_id | hire_date | salary |
|---|---|---|---|---|---|---|---|
| 1 | Catherine | Hale | Executive | Chief Executive Officer | NaN | 2016-03-01 | 285000 |
| 2 | Robert | Kim | Executive | Chief Operating Officer | 1 | 2017-01-09 | 235000 |
| 3 | Megan | Collins | Sales | Head of Sales | 1 | 2018-04-16 | 172000 |
| 4 | Chloe | Gutierrez | Sales | Account Executive | 3 | 2020-01-21 | 72000 |
| 5 | Frank | Bell | Sales | Account Executive | 3 | 2023-05-21 | 73000 |
web_sessions40,000 filas · 7 columnas
session_idintegercustomer_idintegerstarted_attimestampdevicevarcharsourcevarcharpages_viewedintegerconvertedboolean
| session_id | customer_id | started_at | device | source | pages_viewed | converted |
|---|---|---|---|---|---|---|
| 1 | NaN | 2023-01-01 23:02:24 | mobile | paid | 1 | false |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid | 1 | false |
| 3 | NaN | 2023-01-01 16:55:46 | desktop | direct | 7 | false |
| 4 | NaN | 2023-01-01 12:43:28 | mobile | organic | 3 | false |
| 5 | NaN | 2023-01-01 13:06:21 | mobile | social | 2 | false |
marketing_spend3,276 filas · 3 columnas
spend_datedatechannelvarcharamountdecimal
| spend_date | channel | amount |
|---|---|---|
| 2023-01-01 | paid | 492.99 |
| 2023-01-01 | 37.38 | |
| 2023-01-01 | social | 200.53 |
| 2023-01-02 | paid | 709.13 |
| 2023-01-02 | 64.13 |
La lección
Qué es un DataFrame
Un DataFrame es una tabla: filas de registros, columnas con nombre y una etiqueta para cada fila. Si has usado una hoja de cálculo, ya conoces la forma. La diferencia es que trabajas con él en código, así que cada paso queda escrito, es repetible y rápido con millones de filas.
Cada columna de un DataFrame es una Series: una sola columna de valores con un único tipo de dato, como todos enteros o todo texto. Te encontrarás con las Series constantemente, porque seleccionar una columna, añadir una columna o resumir una columna producen una.
A la izquierda de todo DataFrame está el índice, las etiquetas de las filas. Cuando una tabla se carga desde un archivo CSV, el índice es simplemente 0, 1, 2, y así sucesivamente. No es una de las columnas; es la dirección de la fila. Lo verás cambiar cuando filtres u ordenes, lo cual importa más adelante.
Mirar los datos
Nunca imprimes una tabla de 12,000 filas para leerla. Miras un trozo:
orders.head() # first 5 rows
orders.head(10) # first 10 rows
orders.tail(3) # last 3 rows
orders.sample(5, random_state=1) # 5 random rows, the same 5 every time
head te muestra cómo empiezan los datos, que en los pedidos significa los registros más antiguos.
tail muestra los más nuevos. sample es la mejor forma de ver filas «típicas», ya que el comienzo de
un archivo suele ser especial (pedidos de prueba, datos tempranos). random_state fija la aleatoriedad
para que tú y un compañero veáis las mismas filas.
Estos métodos devuelven un DataFrame nuevo; no cambian orders. Eso ocurre con casi todos los métodos de
pandas: recibes un resultado y lo guardas en una variable si quieres conservarlo.
Leer la tabla de pedidos
Las primeras filas de orders se ven así:
| order_id | customer_id | order_date | status | channel | shipping_fee | coupon_code | |
|---|---|---|---|---|---|---|---|
| 0 | 1001 | 125 | 2023-01-01 20:51:19 | completed | web | 0.00 | NaN |
| 1 | 1002 | 156 | 2023-01-02 07:58:46 | completed | web | 0.00 | NaN |
| 2 | 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace | 4.99 | WELCOME10 |
Hay varias cosas que notar enseguida:
- Cada fila es un pedido, identificado por
order_id. Saber qué representa una fila (la granularidad de la tabla) es el dato más importante de cualquier tabla. customer_idvincula cada pedido con una fila decustomers. Los unirás con un join en el capítulo 7.coupon_codemuestraNaNdonde no se usó cupón.NaN(not a number) es como pandas marca un valor que falta.order_datecontiene una fecha y una hora. Se interpretó como un datetime real al cargar la tabla, así que puedes extraer años y meses. Lo harás en el capítulo de limpieza.
Mostrar resultados
En este juego, el valor de result es lo que se comprueba, y se muestra como una tabla debajo del
editor. En un notebook de Jupyter, la última expresión de una celda se muestra automáticamente, así que
verás a menudo a los analistas escribir solo orders.head() en una línea.
Errores comunes
- Escribir
orders.headsin paréntesis. Eso es el método en sí, no su resultado, y pandas muestra algo como<bound method NDFrame.head ...>. - Tratar el índice como el ID del pedido. Aquí casualmente avanzan juntos, pero tras un filtro o una ordenación ya no lo harán.
- Suponer que las primeras filas son representativas. Mira siempre también una muestra.
¡Linterna encendida!
Practicaste: dataframeseriesindexheadtail
- Resuelto
- Sin pistas
- Al primer intento
