Está en la página 1de 25

T_2 Indexar , seleccionar y asignar

December 13, 2020

1 Indexar , seleccionar y asignar


• Seleccionar valores específicos de un padas DataFrame o Series para trabajar es un paso
implícito en casi cualquier operación de datos que ejecute, entonces una de las primeras cosas
que necesitas aprender para trabajar con datos en Python es como vamos a seleccionar los
puntos de datos relevantes rápido y efectivamente.
[1]: import pandas as pd

[2]: # se especifica la base tiene index en la calumna 0


reviews=pd.read_csv('../python-ml-course-master/datasets/wine/
,→winemag-data-130k-v2.csv',index_col=0)

[3]: reviews

[3]: country description \


0 Italy Aromas include tropical fruit, broom, brimston…
1 Portugal This is ripe and fruity, a wine that is smooth…
2 US Tart and snappy, the flavors of lime flesh and…
3 US Pineapple rind, lemon pith and orange blossom …
4 US Much like the regular bottling from 2012, this…
… … …
129966 Germany Notes of honeysuckle and cantaloupe sweeten th…
129967 US Citation is given as much as a decade of bottl…
129968 France Well-drained gravel soil gives this wine its c…
129969 France A dry style of Pinot Gris, this is crisp with …
129970 France Big, rich and off-dry, this is powered by inte…

designation points price \


0 Vulkà Bianco 87 NaN
1 Avidagos 87 15.0
2 NaN 87 14.0
3 Reserve Late Harvest 87 13.0
4 Vintner's Reserve Wild Child Block 87 65.0
… … … …
129966 Brauneberger Juffer-Sonnenuhr Spätlese 90 28.0
129967 NaN 90 75.0
129968 Kritt 90 30.0

1
129969 NaN 90 32.0
129970 Lieu-dit Harth Cuvée Caroline 90 21.0

province region_1 region_2 \


0 Sicily & Sardinia Etna NaN
1 Douro NaN NaN
2 Oregon Willamette Valley Willamette Valley
3 Michigan Lake Michigan Shore NaN
4 Oregon Willamette Valley Willamette Valley
… … … …
129966 Mosel NaN NaN
129967 Oregon Oregon Oregon Other
129968 Alsace Alsace NaN
129969 Alsace Alsace NaN
129970 Alsace Alsace NaN

taster_name taster_twitter_handle \
0 Kerin O’Keefe @kerinokeefe
1 Roger Voss @vossroger
2 Paul Gregutt @paulgwine 
3 Alexander Peartree NaN
4 Paul Gregutt @paulgwine 
… … …
129966 Anna Lee C. Iijima NaN
129967 Paul Gregutt @paulgwine 
129968 Roger Voss @vossroger
129969 Roger Voss @vossroger
129970 Roger Voss @vossroger

title variety \
0 Nicosia 2013 Vulkà Bianco (Etna) White Blend
1 Quinta dos Avidagos 2011 Avidagos Red (Douro) Portuguese Red
2 Rainstorm 2013 Pinot Gris (Willamette Valley) Pinot Gris
3 St. Julian 2013 Reserve Late Harvest Riesling … Riesling
4 Sweet Cheeks 2012 Vintner's Reserve Wild Child… Pinot Noir
… … …
129966 Dr. H. Thanisch (Erben Müller-Burggraef) 2013 … Riesling
129967 Citation 2004 Pinot Noir (Oregon) Pinot Noir
129968 Domaine Gresser 2013 Kritt Gewurztraminer (Als… Gewürztraminer
129969 Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Pinot Gris
129970 Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car… Gewürztraminer

winery
0 Nicosia
1 Quinta dos Avidagos
2 Rainstorm
3 St. Julian

2
4 Sweet Cheeks
… …
129966 Dr. H. Thanisch (Erben Müller-Burggraef)
129967 Citation
129968 Domaine Gresser
129969 Domaine Marcel Deiss
129970 Domaine Schoffit

[129971 rows x 13 columns]

En Python , nosotros podemos acceder a las propiedades de un objeto accediendo a este como
un atributo . un book object , por ejemplo , podría tener una propiedad de titulo , al cual se
puede acceder llamando book.title . las columnas en un pandas DatarFrame funcionan en muchas
maneras de forma similar.
[4]: # si queremos ver solo la columna country
reviews.country

[4]: 0 Italy
1 Portugal
2 US
3 US
4 US

129966 Germany
129967 US
129968 France
129969 France
129970 France
Name: country, Length: 129971, dtype: object

[5]: # en general las variable no son solo de una palabra por lo que es
# mas conveniente llamar a las variables
reviews['country']

[5]: 0 Italy
1 Portugal
2 US
3 US
4 US

129966 Germany
129967 US
129968 France
129969 France
129970 France
Name: country, Length: 129971, dtype: object

3
Estas son dos maneras de sleccionar una series especifica de un DataFrame . ninguna de ellas es
mas o menos validas que otra. Pero el operador[] tiene la ventaja que puede manejar el nombre de la
columna con caracteres reservados en ellos (por ejemplo , si tuviéramos una columna de providencia
de country , reseñas , la reviews.country no funcionara al no mostrar la provincia ).
Pande Series no se parecen a un tipo de diccionario elegante ? bastante realmente , asi que no es
sorprendente que para profundizar en un solo valor especifico , nosotros solo necesitamos usar el
operador de indexing [] una vez mas :

[6]: # entre la primera fila de la columna country


reviews['country'][0]

[6]: 'Italy'

1.1 Indexing en Pandas


• El operador de indexación y la selección de atributos son agradables porque ellos funcionan
al igual que ellos lo hacen en el ecosistema de Python . como un principiante , esto hace fácil
recoger y usar , sin embargo pandas tiene su propio operadores de acceso , loc and iloc . para
mas operaciones avanzadas , estas son las que se supone que deben ser usadas .

1.1.1 Selección basada en índices(index-based-selection)


La idexación en pandas funciona con uno de estos dos paradigmas . el primero es Index-based
selection . la selección de datos en base de su posición numérica en los datos iloc sigue este
paradigma .
Para seleccionar la primera fila de los datos en un DataFrame , nosotros podríamos usar los siguiente
[7]: reviews.iloc[0]#muestra los valores de las variables de la fila 0

[7]: country Italy


description Aromas include tropical fruit, broom, brimston…
designation Vulkà Bianco
points 87
price NaN
province Sicily & Sardinia
region_1 Etna
region_2 NaN
taster_name Kerin O’Keefe
taster_twitter_handle @kerinokeefe
title Nicosia 2013 Vulkà Bianco (Etna)
variety White Blend
winery Nicosia
Name: 0, dtype: object

Tanto como loc y iloc es primero las filas, segundo las columnas en la notación para llamar
la información requerida . esto es opuesto a los que nosotros hacemos en Python nativo , el cual
para llamar los datos de una matriz es columna , fila .

4
Esto significa que es marginalmente mas fácil para recuperar filas y marginalmente mas difícil de
recuperar columnas . para conseguir una columna con iloc, nosotros podemos hacer lo siguiente :
[8]: # el : en las filas o las columnas indica que se seleccionan todas las filas
# o se seleccioina todas las columnas
reviews.iloc[:,0]

[8]: 0 Italy
1 Portugal
2 US
3 US
4 US

129966 Germany
129967 US
129968 France
129969 France
129970 France
Name: country, Length: 129971, dtype: object

[9]: #desde la fila 0 hasta la fila 3


reviews.iloc[:3,0]

[9]: 0 Italy
1 Portugal
2 US
Name: country, dtype: object

O para seleccionar solo la segunda y tercer entrada (datos ) de country :

[10]: reviews.iloc[1:3,0]

[10]: 1 Portugal
2 US
Name: country, dtype: object

podemos especificar el numero de la filas que queremos obsercar


[11]: reviews.iloc[[0,1,2],0]

[11]: 0 Italy
1 Portugal
2 US
Name: country, dtype: object

Finalmente , vale la pena saber que se pueden usar números negativos en la selección. Esto comen-
zará a contar adelante desde el final de los valores . Entonces , por ejemplo, aquí están los últimos
elementos del conjunto de datos .

5
[12]: reviews.iloc[-5:]

[12]: country description \


129966 Germany Notes of honeysuckle and cantaloupe sweeten th…
129967 US Citation is given as much as a decade of bottl…
129968 France Well-drained gravel soil gives this wine its c…
129969 France A dry style of Pinot Gris, this is crisp with …
129970 France Big, rich and off-dry, this is powered by inte…

designation points price province \


129966 Brauneberger Juffer-Sonnenuhr Spätlese 90 28.0 Mosel
129967 NaN 90 75.0 Oregon
129968 Kritt 90 30.0 Alsace
129969 NaN 90 32.0 Alsace
129970 Lieu-dit Harth Cuvée Caroline 90 21.0 Alsace

region_1 region_2 taster_name taster_twitter_handle \


129966 NaN NaN Anna Lee C. Iijima NaN
129967 Oregon Oregon Other Paul Gregutt @paulgwine 
129968 Alsace NaN Roger Voss @vossroger
129969 Alsace NaN Roger Voss @vossroger
129970 Alsace NaN Roger Voss @vossroger

title variety \
129966 Dr. H. Thanisch (Erben Müller-Burggraef) 2013 … Riesling
129967 Citation 2004 Pinot Noir (Oregon) Pinot Noir
129968 Domaine Gresser 2013 Kritt Gewurztraminer (Als… Gewürztraminer
129969 Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Pinot Gris
129970 Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car… Gewürztraminer

winery
129966 Dr. H. Thanisch (Erben Müller-Burggraef)
129967 Citation
129968 Domaine Gresser
129969 Domaine Marcel Deiss
129970 Domaine Schoffit

1.1.2 Selección basada en etiquetas (Label-based-selection)


El segundo paradigma para la selección atributo es el seguido por el operador loc: label -based
selection. En este paradigma ,lo que importa es el valor del índice de datos , no su posición.
Por ejemplo , para obtener la primera entrada (o primer dato) , nosotro ahora haríamos lo siguiente
:
[13]: reviews.loc[0,'country']

[13]: 'Italy'

6
iloc es conceptualmente mas simple que loc porque este ignora el índice del dataset . cuando
nosotros usamos iloc tratamos el dataset como una gran matriz (o una lisata o listas ) , una que
tenemos que indexar por posición , loc , por el contrario, usar la información en el índice para hacer
su trabajo . ya que tu dataset usualmente tiene índices significativos, es generalmente mas sencillo
hacer las cosas usando loc en su lugar . por ejemplo , aquí esta una operación que es mas fácil
usando loc:
[14]: reviews.loc[:,['taster_name','taster_twitter_handle','points']]

[14]: taster_name taster_twitter_handle points


0 Kerin O’Keefe @kerinokeefe 87
1 Roger Voss @vossroger 87
2 Paul Gregutt @paulgwine  87
3 Alexander Peartree NaN 87
4 Paul Gregutt @paulgwine  87
… … … …
129966 Anna Lee C. Iijima NaN 90
129967 Paul Gregutt @paulgwine  90
129968 Roger Voss @vossroger 90
129969 Roger Voss @vossroger 90
129970 Roger Voss @vossroger 90

[129971 rows x 3 columns]

Entonces cual opción es mejor ?


Al elegir o hacer la transición entre loc y iloc , hay un problema que vale la pena tener en cuenta ,
que es que los dos métodos utilizan esquemas de indexación ligeramente diferentes .
Iloc usa el esquema de indexación Python stdlib , donde el primer elemento del rango es incluido
y el ultimo es excluido , entonces 0:10 seleccionara enteros 0 al 9 . loc mientras tanto indexa
inclusivamente , entonces 0:10 seleccionara las entradas 0 al 10 .
¿Por qué el cambio? Recordar que loc puede indexar cualquier tipo stdlib string , por ejemplo , si
nosotros tenemos un DataFrame con valores indexados apple ,….., potatoes, ….. , y nosotros quere-
mos seleccionar “todo las frutas alfabetica escogida entre apples an potatoes “, entonces es mucho
mas conveniente indexar df.loc[‘apples’:’potatoes’] que indexar algo como df.loc[‘apples’,’potatoet]
donde la t viene después del alfabeto que la s Esto es particularmente confuso cuando el DataFrame
indexado es una simple lista numérica , como por ejemplo [0,……,1000], en este caso df.iloc[0:1000]
retornara 1000 entradas o datos ,mientras que df.loc[0:1000] retornara 1001 de ellos , para obtener
1000 elementos usando loc , necesitaremos bajar una y pedir df.loc[0:999]. De lo contrario, la
semántica de usar loc es la misma que para iloc.

1.1.3 Manipulación del índice


Label_based selection deriva su poder de la etiqueta en el índice , críticamente , el índice que usamos
no es inmutable . podemos manipular el índice de cualquier manera que lo creamos conveniente .
El método Set_index() puede ser usado para hacer el trabajo . esto es lo que sucede cuando
usamos set_index en el campo de título :

7
[15]: reviews.set_index('title')

[15]: country \
title
Nicosia 2013 Vulkà Bianco (Etna) Italy
Quinta dos Avidagos 2011 Avidagos Red (Douro) Portugal
Rainstorm 2013 Pinot Gris (Willamette Valley) US
St. Julian 2013 Reserve Late Harvest Riesling (… US
Sweet Cheeks 2012 Vintner's Reserve Wild Child … US
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Germany
Citation 2004 Pinot Noir (Oregon) US
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) France
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) France
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… France

description \
title
Nicosia 2013 Vulkà Bianco (Etna) Aromas include tropical
fruit, broom, brimston…
Quinta dos Avidagos 2011 Avidagos Red (Douro) This is ripe and fruity, a
wine that is smooth…
Rainstorm 2013 Pinot Gris (Willamette Valley) Tart and snappy, the flavors
of lime flesh and…
St. Julian 2013 Reserve Late Harvest Riesling (… Pineapple rind, lemon pith
and orange blossom …
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Much like the regular
bottling from 2012, this…


Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Notes of honeysuckle and
cantaloupe sweeten th…
Citation 2004 Pinot Noir (Oregon) Citation is given as much as
a decade of bottl…
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) Well-drained gravel soil
gives this wine its c…
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) A dry style of Pinot Gris,
this is crisp with …
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… Big, rich and off-dry, this
is powered by inte…

designation \
title
Nicosia 2013 Vulkà Bianco (Etna)
Vulkà Bianco
Quinta dos Avidagos 2011 Avidagos Red (Douro)
Avidagos

8
Rainstorm 2013 Pinot Gris (Willamette Valley)
NaN
St. Julian 2013 Reserve Late Harvest Riesling (… Reserve
Late Harvest
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Vintner's Reserve Wild
Child Block


Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Brauneberger Juffer-
Sonnenuhr Spätlese
Citation 2004 Pinot Noir (Oregon)
NaN
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace)
Kritt
Domaine Marcel Deiss 2012 Pinot Gris (Alsace)
NaN
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… Lieu-dit Harth
Cuvée Caroline

points price \
title
Nicosia 2013 Vulkà Bianco (Etna) 87 NaN
Quinta dos Avidagos 2011 Avidagos Red (Douro) 87 15.0
Rainstorm 2013 Pinot Gris (Willamette Valley) 87 14.0
St. Julian 2013 Reserve Late Harvest Riesling (… 87 13.0
Sweet Cheeks 2012 Vintner's Reserve Wild Child … 87 65.0
… … …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… 90 28.0
Citation 2004 Pinot Noir (Oregon) 90 75.0
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) 90 30.0
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) 90 32.0
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… 90 21.0

province \
title
Nicosia 2013 Vulkà Bianco (Etna) Sicily & Sardinia
Quinta dos Avidagos 2011 Avidagos Red (Douro) Douro
Rainstorm 2013 Pinot Gris (Willamette Valley) Oregon
St. Julian 2013 Reserve Late Harvest Riesling (… Michigan
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Oregon
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Mosel
Citation 2004 Pinot Noir (Oregon) Oregon
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) Alsace
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Alsace
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… Alsace

9
region_1 \
title
Nicosia 2013 Vulkà Bianco (Etna) Etna
Quinta dos Avidagos 2011 Avidagos Red (Douro) NaN
Rainstorm 2013 Pinot Gris (Willamette Valley) Willamette Valley
St. Julian 2013 Reserve Late Harvest Riesling (… Lake Michigan Shore
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Willamette Valley
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… NaN
Citation 2004 Pinot Noir (Oregon) Oregon
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) Alsace
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Alsace
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… Alsace

region_2 \
title
Nicosia 2013 Vulkà Bianco (Etna) NaN
Quinta dos Avidagos 2011 Avidagos Red (Douro) NaN
Rainstorm 2013 Pinot Gris (Willamette Valley) Willamette Valley
St. Julian 2013 Reserve Late Harvest Riesling (… NaN
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Willamette Valley
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… NaN
Citation 2004 Pinot Noir (Oregon) Oregon Other
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) NaN
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) NaN
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… NaN

taster_name \
title
Nicosia 2013 Vulkà Bianco (Etna) Kerin O’Keefe
Quinta dos Avidagos 2011 Avidagos Red (Douro) Roger Voss
Rainstorm 2013 Pinot Gris (Willamette Valley) Paul Gregutt
St. Julian 2013 Reserve Late Harvest Riesling (… Alexander Peartree
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Paul Gregutt
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Anna Lee C. Iijima
Citation 2004 Pinot Noir (Oregon) Paul Gregutt
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) Roger Voss
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Roger Voss
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… Roger Voss

taster_twitter_handle \
title
Nicosia 2013 Vulkà Bianco (Etna) @kerinokeefe
Quinta dos Avidagos 2011 Avidagos Red (Douro) @vossroger
Rainstorm 2013 Pinot Gris (Willamette Valley) @paulgwine 

10
St. Julian 2013 Reserve Late Harvest Riesling (… NaN
Sweet Cheeks 2012 Vintner's Reserve Wild Child … @paulgwine 
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… NaN
Citation 2004 Pinot Noir (Oregon) @paulgwine 
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) @vossroger
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) @vossroger
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… @vossroger

variety \
title
Nicosia 2013 Vulkà Bianco (Etna) White Blend
Quinta dos Avidagos 2011 Avidagos Red (Douro) Portuguese Red
Rainstorm 2013 Pinot Gris (Willamette Valley) Pinot Gris
St. Julian 2013 Reserve Late Harvest Riesling (… Riesling
Sweet Cheeks 2012 Vintner's Reserve Wild Child … Pinot Noir
… …
Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Riesling
Citation 2004 Pinot Noir (Oregon) Pinot Noir
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace) Gewürztraminer
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Pinot Gris
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro… Gewürztraminer

winery
title
Nicosia 2013 Vulkà Bianco (Etna)
Nicosia
Quinta dos Avidagos 2011 Avidagos Red (Douro) Quinta
dos Avidagos
Rainstorm 2013 Pinot Gris (Willamette Valley)
Rainstorm
St. Julian 2013 Reserve Late Harvest Riesling (…
St. Julian
Sweet Cheeks 2012 Vintner's Reserve Wild Child …
Sweet Cheeks


Dr. H. Thanisch (Erben Müller-Burggraef) 2013 B… Dr. H. Thanisch (Erben
Müller-Burggraef)
Citation 2004 Pinot Noir (Oregon)
Citation
Domaine Gresser 2013 Kritt Gewurztraminer (Alsace)
Domaine Gresser
Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Domaine
Marcel Deiss
Domaine Schoffit 2012 Lieu-dit Harth Cuvée Caro…
Domaine Schoffit

11
[129971 rows x 12 columns]

Esto es útil si tu puedes encontrar un índice para el conjunto de datos que sea mejor que el actual .

1.2 Selección Condicional


Hasta aquí nosotros hemos indexado varios pasoso de datos , usando propiedades estructurales de el
dataframe mismo .sin embargo para hacer cosas interesantes con los datos, a menudo necesitamos
hacer preguntas basadas en las condiciones
Por ejemplo , supongamos que nos interesa especificar los mejores vinos que se han producidos
Nosotros podemos comenzar chequiando si cada vino es italiano o no :
[16]: reviews.country=='Italy'

[16]: 0 True
1 False
2 False
3 False
4 False

129966 False
129967 False
129968 False
129969 False
129970 False
Name: country, Length: 129971, dtype: bool

Esta operación produjo una serie de booleanos true/false basado en el país de cada registro . este
resultado se puede usar dentro de loc para seleccionar los datos relevantes :
[17]: reviews.loc[reviews.country=='Italy']

[17]: country description \


0 Italy Aromas include tropical fruit, broom, brimston…
6 Italy Here's a bright, informal red that opens with …
13 Italy This is dominated by oak and oak-driven aromas…
22 Italy Delicate aromas recall white flower and citrus…
24 Italy Aromas of prune, blackcurrant, toast and oak c…
… … …
129929 Italy This luminous sparkler has a sweet, fruit-forw…
129943 Italy A blend of Nero d'Avola and Syrah, this convey…
129947 Italy A blend of 65% Cabernet Sauvignon, 30% Merlot …
129961 Italy Intense aromas of wild cherry, baking spice, t…
129962 Italy Blackberry, cassis, grilled herb and toasted a…

designation points price province \


0 Vulkà Bianco 87 NaN Sicily & Sardinia

12
6 Belsito 87 16.0 Sicily & Sardinia
13 Rosso 87 NaN Sicily & Sardinia
22 Ficiligno 87 19.0 Sicily & Sardinia
24 Aynat 87 35.0 Sicily & Sardinia
… … … … …
129929 NaN 91 38.0 Veneto
129943 Adènzia 90 29.0 Sicily & Sardinia
129947 Symposio 90 20.0 Sicily & Sardinia
129961 NaN 90 30.0 Sicily & Sardinia
129962 Sàgana Tenuta San Giacomo 90 40.0 Sicily & Sardinia

region_1 region_2 taster_name \


0 Etna NaN Kerin O’Keefe
6 Vittoria NaN Kerin O’Keefe
13 Etna NaN Kerin O’Keefe
22 Sicilia NaN Kerin O’Keefe
24 Sicilia NaN Kerin O’Keefe
… … … …
129929 Prosecco Superiore di Cartizze NaN NaN
129943 Sicilia NaN Kerin O’Keefe
129947 Terre Siciliane NaN Kerin O’Keefe
129961 Sicilia NaN Kerin O’Keefe
129962 Sicilia NaN Kerin O’Keefe

taster_twitter_handle \
0 @kerinokeefe
6 @kerinokeefe
13 @kerinokeefe
22 @kerinokeefe
24 @kerinokeefe
… …
129929 NaN
129943 @kerinokeefe
129947 @kerinokeefe
129961 @kerinokeefe
129962 @kerinokeefe

title variety \
0 Nicosia 2013 Vulkà Bianco (Etna) White Blend
6 Terre di Giurfo 2013 Belsito Frappato (Vittoria) Frappato
13 Masseria Setteporte 2012 Rosso (Etna) Nerello Mascalese
22 Baglio di Pianetto 2007 Ficiligno White (Sicilia) White Blend
24 Canicattì 2009 Aynat Nero d'Avola (Sicilia) Nero d'Avola
… … …
129929 Col Vetoraz Spumanti NV Prosecco Superiore di… Prosecco
129943 Baglio del Cristo di Campobello 2012 Adènzia R… Red Blend
129947 Feudo Principi di Butera 2012 Symposio Red (Te… Red Blend

13
129961 COS 2013 Frappato (Sicilia) Frappato
129962 Cusumano 2012 Sàgana Tenuta San Giacomo Nero d… Nero d'Avola

winery
0 Nicosia
6 Terre di Giurfo
13 Masseria Setteporte
22 Baglio di Pianetto
24 Canicattì
… …
129929 Col Vetoraz Spumanti
129943 Baglio del Cristo di Campobello
129947 Feudo Principi di Butera
129961 COS
129962 Cusumano

[19540 rows x 13 columns]

Este DataFrame tiene casi 20000 filas. El original tiene 130000 , esto significa que alrededor del
15% de los vinos son originario de Italia
Nosotros también queríamos saber cuales son mejores que la media . los vinos se revisad en una
escala de puntos del 80-100 , esto podria significar vinos que acumularon al menos 90 puntos .
Podemos usar el signo (&) para unir las dos preguntas :

[18]: reviews.loc[(reviews.country=='Italy')&(reviews.points>=90)]

[18]: country description \


120 Italy Slightly backward, particularly given the vint…
130 Italy At the first it was quite muted and subdued, b…
133 Italy Einaudi's wines have been improving lately, an…
135 Italy The color is just beginning to show signs of b…
140 Italy A big, fat, luscious wine with plenty of toast…
… … …
129929 Italy This luminous sparkler has a sweet, fruit-forw…
129943 Italy A blend of Nero d'Avola and Syrah, this convey…
129947 Italy A blend of 65% Cabernet Sauvignon, 30% Merlot …
129961 Italy Intense aromas of wild cherry, baking spice, t…
129962 Italy Blackberry, cassis, grilled herb and toasted a…

designation points price province \


120 Bricco Rocche Prapó 92 70.0 Piedmont
130 Bricco Rocche Brunate 91 70.0 Piedmont
133 NaN 91 68.0 Piedmont
135 Sorano 91 60.0 Piedmont
140 Costa Bruna 90 26.0 Piedmont
… … … … …

14
129929 NaN 91 38.0 Veneto
129943 Adènzia 90 29.0 Sicily & Sardinia
129947 Symposio 90 20.0 Sicily & Sardinia
129961 NaN 90 30.0 Sicily & Sardinia
129962 Sàgana Tenuta San Giacomo 90 40.0 Sicily & Sardinia

region_1 region_2 taster_name \


120 Barolo NaN NaN
130 Barolo NaN NaN
133 Barolo NaN NaN
135 Barolo NaN NaN
140 Barbera d'Alba NaN NaN
… … … …
129929 Prosecco Superiore di Cartizze NaN NaN
129943 Sicilia NaN Kerin O’Keefe
129947 Terre Siciliane NaN Kerin O’Keefe
129961 Sicilia NaN Kerin O’Keefe
129962 Sicilia NaN Kerin O’Keefe

taster_twitter_handle \
120 NaN
130 NaN
133 NaN
135 NaN
140 NaN
… …
129929 NaN
129943 @kerinokeefe
129947 @kerinokeefe
129961 @kerinokeefe
129962 @kerinokeefe

title variety \
120 Ceretto 2003 Bricco Rocche Prapó (Barolo) Nebbiolo
130 Ceretto 2003 Bricco Rocche Brunate (Barolo) Nebbiolo
133 Poderi Luigi Einaudi 2003 Barolo Nebbiolo
135 Giacomo Ascheri 2001 Sorano (Barolo) Nebbiolo
140 Poderi Colla 2005 Costa Bruna (Barbera d'Alba) Barbera
… … …
129929 Col Vetoraz Spumanti NV Prosecco Superiore di… Prosecco
129943 Baglio del Cristo di Campobello 2012 Adènzia R… Red Blend
129947 Feudo Principi di Butera 2012 Symposio Red (Te… Red Blend
129961 COS 2013 Frappato (Sicilia) Frappato
129962 Cusumano 2012 Sàgana Tenuta San Giacomo Nero d… Nero d'Avola

winery
120 Ceretto

15
130 Ceretto
133 Poderi Luigi Einaudi
135 Giacomo Ascheri
140 Poderi Colla
… …
129929 Col Vetoraz Spumanti
129943 Baglio del Cristo di Campobello
129947 Feudo Principi di Butera
129961 COS
129962 Cusumano

[6648 rows x 13 columns]

Supongamos que compraremos cualquier vino que sea hecho en Italia o si el puntaje esta sobre la
media , para esto usame pipe(|):

[19]: reviews.loc[(reviews.country=='Italy')|(reviews.points>=90)]

[19]: country description \


0 Italy Aromas include tropical fruit, broom, brimston…
6 Italy Here's a bright, informal red that opens with …
13 Italy This is dominated by oak and oak-driven aromas…
22 Italy Delicate aromas recall white flower and citrus…
24 Italy Aromas of prune, blackcurrant, toast and oak c…
… … …
129966 Germany Notes of honeysuckle and cantaloupe sweeten th…
129967 US Citation is given as much as a decade of bottl…
129968 France Well-drained gravel soil gives this wine its c…
129969 France A dry style of Pinot Gris, this is crisp with …
129970 France Big, rich and off-dry, this is powered by inte…

designation points price \


0 Vulkà Bianco 87 NaN
6 Belsito 87 16.0
13 Rosso 87 NaN
22 Ficiligno 87 19.0
24 Aynat 87 35.0
… … … …
129966 Brauneberger Juffer-Sonnenuhr Spätlese 90 28.0
129967 NaN 90 75.0
129968 Kritt 90 30.0
129969 NaN 90 32.0
129970 Lieu-dit Harth Cuvée Caroline 90 21.0

province region_1 region_2 taster_name \


0 Sicily & Sardinia Etna NaN Kerin O’Keefe
6 Sicily & Sardinia Vittoria NaN Kerin O’Keefe

16
13 Sicily & Sardinia Etna NaN Kerin O’Keefe
22 Sicily & Sardinia Sicilia NaN Kerin O’Keefe
24 Sicily & Sardinia Sicilia NaN Kerin O’Keefe
… … … … …
129966 Mosel NaN NaN Anna Lee C. Iijima
129967 Oregon Oregon Oregon Other Paul Gregutt
129968 Alsace Alsace NaN Roger Voss
129969 Alsace Alsace NaN Roger Voss
129970 Alsace Alsace NaN Roger Voss

taster_twitter_handle \
0 @kerinokeefe
6 @kerinokeefe
13 @kerinokeefe
22 @kerinokeefe
24 @kerinokeefe
… …
129966 NaN
129967 @paulgwine 
129968 @vossroger
129969 @vossroger
129970 @vossroger

title variety \
0 Nicosia 2013 Vulkà Bianco (Etna) White Blend
6 Terre di Giurfo 2013 Belsito Frappato (Vittoria) Frappato
13 Masseria Setteporte 2012 Rosso (Etna) Nerello Mascalese
22 Baglio di Pianetto 2007 Ficiligno White (Sicilia) White Blend
24 Canicattì 2009 Aynat Nero d'Avola (Sicilia) Nero d'Avola
… … …
129966 Dr. H. Thanisch (Erben Müller-Burggraef) 2013 … Riesling
129967 Citation 2004 Pinot Noir (Oregon) Pinot Noir
129968 Domaine Gresser 2013 Kritt Gewurztraminer (Als… Gewürztraminer
129969 Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Pinot Gris
129970 Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car… Gewürztraminer

winery
0 Nicosia
6 Terre di Giurfo
13 Masseria Setteporte
22 Baglio di Pianetto
24 Canicattì
… …
129966 Dr. H. Thanisch (Erben Müller-Burggraef)
129967 Citation
129968 Domaine Gresser
129969 Domaine Marcel Deiss

17
129970 Domaine Schoffit

[61937 rows x 13 columns]

Pandas viene con algunos selectores de contrucción condicional , dos de los cuales nosotros
destacaremos aquí . El primero es isin.isin le permite seleccionar datos cuyo valor “esta en “
una lista de valores . por ejemplo así es como podemos usarlo para seleccionar vinos solo de Italia
o Francia .
[20]: reviews.loc[reviews.country.isin(['Italy','France'])]

[20]: country description \


0 Italy Aromas include tropical fruit, broom, brimston…
6 Italy Here's a bright, informal red that opens with …
7 France This dry and restrained wine offers spice in p…
9 France This has great depth of flavor with its fresh …
11 France This is a dry wine, very spicy, with a tight, …
… … …
129964 France Initially quite muted, this wine slowly develo…
129965 France While it's rich, this beautiful dry wine also …
129968 France Well-drained gravel soil gives this wine its c…
129969 France A dry style of Pinot Gris, this is crisp with …
129970 France Big, rich and off-dry, this is powered by inte…

designation points price province \


0 Vulkà Bianco 87 NaN Sicily & Sardinia
6 Belsito 87 16.0 Sicily & Sardinia
7 NaN 87 24.0 Alsace
9 Les Natures 87 27.0 Alsace
11 NaN 87 30.0 Alsace
… … … … …
129964 Domaine Saint-Rémy Herrenweg 90 NaN Alsace
129965 Seppi Landmann Vallée Noble 90 28.0 Alsace
129968 Kritt 90 30.0 Alsace
129969 NaN 90 32.0 Alsace
129970 Lieu-dit Harth Cuvée Caroline 90 21.0 Alsace

region_1 region_2 taster_name taster_twitter_handle \


0 Etna NaN Kerin O’Keefe @kerinokeefe
6 Vittoria NaN Kerin O’Keefe @kerinokeefe
7 Alsace NaN Roger Voss @vossroger
9 Alsace NaN Roger Voss @vossroger
11 Alsace NaN Roger Voss @vossroger
… … … … …
129964 Alsace NaN Roger Voss @vossroger
129965 Alsace NaN Roger Voss @vossroger
129968 Alsace NaN Roger Voss @vossroger

18
129969 Alsace NaN Roger Voss @vossroger
129970 Alsace NaN Roger Voss @vossroger

title variety \
0 Nicosia 2013 Vulkà Bianco (Etna) White Blend
6 Terre di Giurfo 2013 Belsito Frappato (Vittoria) Frappato
7 Trimbach 2012 Gewurztraminer (Alsace) Gewürztraminer
9 Jean-Baptiste Adam 2012 Les Natures Pinot Gris… Pinot Gris
11 Leon Beyer 2012 Gewurztraminer (Alsace) Gewürztraminer
… … …
129964 Domaine Ehrhart 2013 Domaine Saint-Rémy Herren… Gewürztraminer
129965 Domaine Rieflé-Landmann 2013 Seppi Landmann Va… Pinot Gris
129968 Domaine Gresser 2013 Kritt Gewurztraminer (Als… Gewürztraminer
129969 Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Pinot Gris
129970 Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car… Gewürztraminer

winery
0 Nicosia
6 Terre di Giurfo
7 Trimbach
9 Jean-Baptiste Adam
11 Leon Beyer
… …
129964 Domaine Ehrhart
129965 Domaine Rieflé-Landmann
129968 Domaine Gresser
129969 Domaine Marcel Deiss
129970 Domaine Schoffit

[41633 rows x 13 columns]

El segundo es isnull. Estos métodos permiten resaltar valores que están (o no) vacíos (NaN). Por
ejemplo , para filtrar los vinos que carecen de una etiqueta de precio en el conjunto de datos, esto
es lo que haríamos:
[21]: reviews.loc[reviews.price.notnull()]

[21]: country description \


1 Portugal This is ripe and fruity, a wine that is smooth…
2 US Tart and snappy, the flavors of lime flesh and…
3 US Pineapple rind, lemon pith and orange blossom …
4 US Much like the regular bottling from 2012, this…
5 Spain Blackberry and raspberry aromas show a typical…
… … …
129966 Germany Notes of honeysuckle and cantaloupe sweeten th…
129967 US Citation is given as much as a decade of bottl…
129968 France Well-drained gravel soil gives this wine its c…

19
129969 France A dry style of Pinot Gris, this is crisp with …
129970 France Big, rich and off-dry, this is powered by inte…

designation points price province \


1 Avidagos 87 15.0 Douro
2 NaN 87 14.0 Oregon
3 Reserve Late Harvest 87 13.0 Michigan
4 Vintner's Reserve Wild Child Block 87 65.0 Oregon
5 Ars In Vitro 87 15.0 Northern Spain
… … … … …
129966 Brauneberger Juffer-Sonnenuhr Spätlese 90 28.0 Mosel
129967 NaN 90 75.0 Oregon
129968 Kritt 90 30.0 Alsace
129969 NaN 90 32.0 Alsace
129970 Lieu-dit Harth Cuvée Caroline 90 21.0 Alsace

region_1 region_2 taster_name \


1 NaN NaN Roger Voss
2 Willamette Valley Willamette Valley Paul Gregutt
3 Lake Michigan Shore NaN Alexander Peartree
4 Willamette Valley Willamette Valley Paul Gregutt
5 Navarra NaN Michael Schachner
… … … …
129966 NaN NaN Anna Lee C. Iijima
129967 Oregon Oregon Other Paul Gregutt
129968 Alsace NaN Roger Voss
129969 Alsace NaN Roger Voss
129970 Alsace NaN Roger Voss

taster_twitter_handle \
1 @vossroger
2 @paulgwine 
3 NaN
4 @paulgwine 
5 @wineschach
… …
129966 NaN
129967 @paulgwine 
129968 @vossroger
129969 @vossroger
129970 @vossroger

title variety \
1 Quinta dos Avidagos 2011 Avidagos Red (Douro) Portuguese Red
2 Rainstorm 2013 Pinot Gris (Willamette Valley) Pinot Gris
3 St. Julian 2013 Reserve Late Harvest Riesling … Riesling
4 Sweet Cheeks 2012 Vintner's Reserve Wild Child… Pinot Noir

20
5 Tandem 2011 Ars In Vitro Tempranillo-Merlot (N… Tempranillo-Merlot
… … …
129966 Dr. H. Thanisch (Erben Müller-Burggraef) 2013 … Riesling
129967 Citation 2004 Pinot Noir (Oregon) Pinot Noir
129968 Domaine Gresser 2013 Kritt Gewurztraminer (Als… Gewürztraminer
129969 Domaine Marcel Deiss 2012 Pinot Gris (Alsace) Pinot Gris
129970 Domaine Schoffit 2012 Lieu-dit Harth Cuvée Car… Gewürztraminer

winery
1 Quinta dos Avidagos
2 Rainstorm
3 St. Julian
4 Sweet Cheeks
5 Tandem
… …
129966 Dr. H. Thanisch (Erben Müller-Burggraef)
129967 Citation
129968 Domaine Gresser
129969 Domaine Marcel Deiss
129970 Domaine Schoffit

[120975 rows x 13 columns]

1.2.1 Asignación de datos

[22]: reviews['critic']='everyone'

[23]: reviews['critic']

[23]: 0 everyone
1 everyone
2 everyone
3 everyone
4 everyone

129966 everyone
129967 everyone
129968 everyone
129969 everyone
129970 everyone
Name: critic, Length: 129971, dtype: object

y si visualizamos la base completa se observara la nueva variable


[25]: reviews.head()

21
[25]: country description \
0 Italy Aromas include tropical fruit, broom, brimston…
1 Portugal This is ripe and fruity, a wine that is smooth…
2 US Tart and snappy, the flavors of lime flesh and…
3 US Pineapple rind, lemon pith and orange blossom …
4 US Much like the regular bottling from 2012, this…

designation points price province \


0 Vulkà Bianco 87 NaN Sicily & Sardinia
1 Avidagos 87 15.0 Douro
2 NaN 87 14.0 Oregon
3 Reserve Late Harvest 87 13.0 Michigan
4 Vintner's Reserve Wild Child Block 87 65.0 Oregon

region_1 region_2 taster_name \


0 Etna NaN Kerin O’Keefe
1 NaN NaN Roger Voss
2 Willamette Valley Willamette Valley Paul Gregutt
3 Lake Michigan Shore NaN Alexander Peartree
4 Willamette Valley Willamette Valley Paul Gregutt

taster_twitter_handle title \
0 @kerinokeefe Nicosia 2013 Vulkà Bianco (Etna)
1 @vossroger Quinta dos Avidagos 2011 Avidagos Red (Douro)
2 @paulgwine  Rainstorm 2013 Pinot Gris (Willamette Valley)
3 NaN St. Julian 2013 Reserve Late Harvest Riesling …
4 @paulgwine  Sweet Cheeks 2012 Vintner's Reserve Wild Child…

variety winery critic


0 White Blend Nicosia everyone
1 Portuguese Red Quinta dos Avidagos everyone
2 Pinot Gris Rainstorm everyone
3 Riesling St. Julian everyone
4 Pinot Noir Sweet Cheeks everyone

si quisieramos generar una base con variables y filas especificas podrimos hacer lo siguiente
[36]: names=reviews.iloc[:,:5].columns.tolist()
#seleccionamos las primeras 5 variables
names

[36]: ['country', 'description', 'designation', 'points', 'price']

[33]: primeras_50filas_con_variables_name=reviews[names][:50]

[34]: primeras_50filas_con_variables_name.shape

22
[34]: (50, 5)

[37]: primeras_50filas_con_variables_name.head()

[37]: country description \


0 Italy Aromas include tropical fruit, broom, brimston…
1 Portugal This is ripe and fruity, a wine that is smooth…
2 US Tart and snappy, the flavors of lime flesh and…
3 US Pineapple rind, lemon pith and orange blossom …
4 US Much like the regular bottling from 2012, this…

designation points price


0 Vulkà Bianco 87 NaN
1 Avidagos 87 15.0
2 NaN 87 14.0
3 Reserve Late Harvest 87 13.0
4 Vintner's Reserve Wild Child Block 87 65.0

si queremos acceder a filas y columnsa especificas


[38]: reviews.iloc[[1,5,8,36],[2,5,7]]

[38]: designation province region_2


1 Avidagos Douro NaN
5 Ars In Vitro Northern Spain NaN
8 Shine Rheinhessen NaN
36 Estate Colchagua Valley NaN

o tambien se puede acceder con los nombres de las variables


[40]: reviews.loc[[1,5,8,36],['designation','province','region_2']]

[40]: designation province region_2


1 Avidagos Douro NaN
5 Ars In Vitro Northern Spain NaN
8 Shine Rheinhessen NaN
36 Estate Colchagua Valley NaN

1.3 Crear una columnas


si queremos crear una nueva variable que sera el resultado entre la operación de una o mas variables
se pude hace como muestra el siguiente ejemplo
[45]: data = pd.read_csv("../python-ml-course-master//datasets/customer-churn-model/
,→Customer Churn Model.txt")

la base de datos es un registro de las llamadas telefonicas

23
[46]: data.head()

[46]: State Account Length Area Code Phone Int'l Plan VMail Plan \
0 KS 128 415 382-4657 no yes
1 OH 107 415 371-7191 no yes
2 NJ 137 415 358-1921 no no
3 OH 84 408 375-9999 yes no
4 OK 75 415 330-6626 yes no

VMail Message Day Mins Day Calls Day Charge … Eve Calls Eve Charge \
0 25 265.1 110 45.07 … 99 16.78
1 26 161.6 123 27.47 … 103 16.62
2 0 243.4 114 41.38 … 110 10.30
3 0 299.4 71 50.90 … 88 5.26
4 0 166.7 113 28.34 … 122 12.61

Night Mins Night Calls Night Charge Intl Mins Intl Calls Intl Charge \
0 244.7 91 11.01 10.0 3 2.70
1 254.4 103 11.45 13.7 3 3.70
2 162.6 104 7.32 12.2 5 3.29
3 196.9 89 8.86 6.6 7 1.78
4 186.9 121 8.41 10.1 3 2.73

CustServ Calls Churn?


0 1 False.
1 1 False.
2 0 False.
3 2 False.
4 3 False.

[5 rows x 21 columns]

[47]: data['Total Calls']= data['Day Calls']+data['Night Calls']+data['Eve Calls']


data.head()

[47]: State Account Length Area Code Phone Int'l Plan VMail Plan \
0 KS 128 415 382-4657 no yes
1 OH 107 415 371-7191 no yes
2 NJ 137 415 358-1921 no no
3 OH 84 408 375-9999 yes no
4 OK 75 415 330-6626 yes no

VMail Message Day Mins Day Calls Day Charge … Eve Charge \
0 25 265.1 110 45.07 … 16.78
1 26 161.6 123 27.47 … 16.62
2 0 243.4 114 41.38 … 10.30
3 0 299.4 71 50.90 … 5.26

24
4 0 166.7 113 28.34 … 12.61

Night Mins Night Calls Night Charge Intl Mins Intl Calls Intl Charge \
0 244.7 91 11.01 10.0 3 2.70
1 254.4 103 11.45 13.7 3 3.70
2 162.6 104 7.32 12.2 5 3.29
3 196.9 89 8.86 6.6 7 1.78
4 186.9 121 8.41 10.1 3 2.73

CustServ Calls Churn? Total Calls


0 1 False. 300
1 1 False. 329
2 0 False. 328
3 2 False. 248
4 3 False. 356

[5 rows x 22 columns]

[ ]:

[ ]:

[ ]:

25

También podría gustarte