La solicitud

De Brian Mitchell, Analista Financiero
Tu objetivo
Saca una muestra aleatoria con completed.sample(n=200, random_state=7). Asigna a result un diccionario con "sample_mean" (la media del order_value de la muestra), "population_mean" (la media de todo completed) y "error" (sample_mean menos population_mean), cada uno redondeado a 2 decimales. Calcula el error con las medias sin redondear.
- Usa el DataFrame
orderspendiente - Usa el DataFrame
order_itemspendiente - Guarda un dict en
resultpendiente
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 Brian, 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 |
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 |
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 |
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
Población y muestra
La población es todo lo que te interesa: aquí, los 10,849 pedidos completados. Una muestra es la parte que realmente mides. Cuando tienes toda la población en una tabla, su media es simplemente la respuesta. Las muestras existen porque la población suele ser demasiado grande, lenta o costosa de medir: auditores revisando facturas a mano, una encuesta a clientes, una prueba A/B que solo puede correr dos semanas.
sample = completed.sample(n=200, random_state=7)
sample["order_value"].mean() # 515.22
completed["order_value"].mean() # 543.30
random_state fija la extracción aleatoria para que tú (y el verificador) obtengan las mismas 200
filas cada vez.
El error de muestreo es normal
La media de la muestra está $28.08 por debajo de la media de la población, y la muestra no tiene nada de malo. Cada muestra aleatoria da una respuesta un poco distinta. Prueba otras semillas:
| random_state | media de la muestra |
|---|---|
| 2 | $384.70 |
| 5 | $574.72 |
| 7 | $515.22 |
| 8 | $581.28 |
Misma población, mismo tamaño, una dispersión de casi $200. Esa dispersión es el error de muestreo: la diferencia entre el número de una muestra y el de la población que viene solo de qué filas resultaron extraídas.
Por qué varían tanto los valores de pedido
Una muestra de 200 pedidos suele incluir unos seis pedidos por encima de $2,500. Saca dos o tres más o menos de esos y la media se mueve decenas de dólares. Cuanto más sesgada y dispersa es una columna, más vagan las medias de sus muestras. La mediana de la misma muestra ($347.46 frente a $268.94 de todos los pedidos) muestra que cada estadístico que calculas a partir de una muestra tiene su propio error.
Las muestras más grandes vagan menos
El error de muestreo se reduce al crecer la muestra, pero despacio: baja con la raíz cuadrada del tamaño de la muestra. Una muestra cuatro veces más grande reduce a la mitad el error típico. El Desafío final le pone un número a esto con el error estándar.
Errores comunes
- Tratar el número de una muestra como la verdad. Repórtalo como una estimación, idealmente con un margen.
- Leer el error de muestreo como un hallazgo. Una muestra que sale más baja que los libros no es evidencia de un problema hasta que la brecha sea mayor de lo que puede explicar el error de muestreo.
- Redondear antes de restar. Redondea al final; redondear primero cada media puede cambiar la diferencia en un centavo.
- Muestrear sin semilla en un análisis que otros deben reproducir. Sin
random_state, cada ejecución da una muestra distinta y una respuesta distinta.
¡Linterna encendida!
Practicaste: samplepopulationsampling errorrandom sample
- Resuelto
- Sin pistas
- Al primer intento
