La solicitud

De Priya Shah, Directora de Datos
Tu objetivo
Asigna a result el número de filas de order_items, como un int.
- Usa el DataFrame
order_itemspendiente - Guarda un número en
resultpendiente
Tu código
Cargando el editor…
Solución de referencia
| order_item_id | order_id | product_id | quantity | unit_price |
|---|---|---|---|---|
| 1 | 1001 | 121 | 9 | 31.99 |
| 2 | 1001 | 154 | 3 | 11.99 |
| 3 | 1002 | 154 | 4 | 11.99 |
| 4 | 1002 | 194 | 1 | 149.00 |
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.
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 |
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 |
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
Filas y columnas
Antes de cualquier análisis, comprueba el tamaño de lo que tienes:
order_items.shape # (rows, columns)
order_items.shape[0] # number of rows
order_items.shape[1] # number of columns
len(order_items) # number of rows, the most common way to write it
shape es un atributo, no un método, así que no lleva paréntesis. Es una tupla, que indexas como una
lista.
El número de filas es tu primera comprobación de sentido. Si el negocio dice «unas 30,000 líneas de pedido» y ves 3,000 o 300,000, detente y averigua por qué antes de seguir. Quizá el archivo se truncó, quizá cargaste la tabla equivocada, quizá la cifra del negocio está desactualizada. Cualquiera de esas cosas conviene saberla.
Nombres de columna
order_items.columns
# Index(['order_item_id', 'order_id', 'product_id', 'quantity',
# 'unit_price', 'discount_pct'], dtype='object')
list(order_items.columns) # as a plain list
Los nombres de columna distinguen mayúsculas y minúsculas y deben coincidir exactamente, así que conviene mirarlos antes de escribirlos en el código.
Tipos con dtypes e info
Cada columna tiene un dtype (tipo de dato). Los que más verás:
| dtype | contiene |
|---|---|
int64 |
números enteros |
float64 |
decimales, y enteros en una columna con valores que faltan |
bool |
True / False |
object |
texto (y cualquier mezcla) |
datetime64[ns] |
fechas y horas, una vez convertidas |
order_items.dtypes
info() lo reúne todo en una sola vista: número de filas, el conteo de valores no nulos y el dtype de
cada columna, y el uso de memoria.
customers.info()
RangeIndex: 2018 entries, 0 to 2017
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 customer_id 2018 non-null int64
...
4 city 2004 non-null object
...
8 referral_source 1352 non-null object
Dos descubrimientos de un vistazo: algunos clientes no tienen ciudad, y alrededor de un tercio no tiene
fuente de referencia. info() imprime su informe en lugar de devolver un valor, así que úsalo para
mirar, no para guardar.
Los tipos te hablan de los datos
Los tipos suelen revelar problemas antes de que los veas en las filas. En web_sessions, customer_id
es float64 en lugar de int64. ¿Por qué un ID sería un decimal? Porque algunas sesiones son anónimas,
y una columna de enteros clásica de NumPy no puede contener valores que faltan, así que pandas guarda la
columna como floats con NaN. De forma parecida, order_date muestra datetime64[ns] solo porque las
tablas de aquí se cargaron con pd.read_csv(..., parse_dates=[...]). Los archivos CSV no llevan tipos,
así que un read_csv simple dejaría las fechas como texto object. Detectarlo pronto te ahorra errores
confusos después.
Otras comprobaciones rápidas
order_items["order_id"].nunique() # distinct orders that have lines
order_items.isna().sum() # missing values per column
Errores comunes
- Escribir
order_items.shape()con paréntesis:TypeError: 'tuple' object is not callable. - Guardar
order_items.info()en una variable. Imprime y devuelveNone. - Usar
order_items.sizepara el número de filas.sizees filas por columnas.
¡Linterna encendida!
Practicaste: shapeleninfodtypescolumns
- Resuelto
- Sin pistas
- Al primer intento
