Re: [Python-es] [Consulta] isin()

2020-08-05 Por tema Lemarchand Barker
Buenísimo Ricardo, gracias ya lo anoto.
Si lo de numpy y el array algo de eso vi muy por arriba, por ahora quiero
familiarizarme con algunas cosas de momento.
Gracias, saludos

El mié., 5 ago. 2020 a las 17:23, Ricardo Cárdenes (<
ricardo.carde...@gmail.com>) escribió:

> Por cierto, añado: observa que limité los criterios a columnas concretas.
> Eso tiene perfecto sentido aquí porque cada columna tiene una semántica
> diferente. Sin embargo, nada te impide aplicar isin a un DataFrame
> entero. El problema es que el resultado puede no tener mucho sentido (o sí,
> depende):
>
> >>> mask = df2.isin(['382.24', '617.12'])
> >>> mask
>  lab   pami
> 19 False  False
> 629False   True
> 23549  False  False
> 30087  False   True
>
>
> Obviamente, todas las entradas de la columna "lab" salen falsos. ¿Qué
> sucede si usas esto como máscara?
>
> >>> df2[mask]
>labpami
> 19 NaN NaN
> 629NaN  382.24
> 23549  NaN NaN
> 30087  NaN  617.12
>
>
> Dado que no puedes discriminar filas enteras, la máscara no sabe lo que
> estás queriendo hacer. Y por tanto va a mostrarte *todo*, pero poniendo
> valores NaN ("not a number") en las celdas falsas.
>
> Por cierto, que la máscara no tiene por qué ser un DataSet. Puede ser por
> ejemplo una simple lista, que se aplica al primer eje (filas, en este caso):
>
> >>> df2[[False, True, False, True]]
>  labpami
> 629Alcon  382.24
> 30087  Fabra  617.12
>
>
> Y dado que Pandas se apoya en NumPy, imagino que puedes pasar un array de
> NumPy también.
>
>
> On Wed, Aug 5, 2020 at 10:12 AM Ricardo Cárdenes <
> ricardo.carde...@gmail.com> wrote:
>
>> Aparte de lo que te está contestando Darío (error en la entrada: 627.12
>> en lugar de 617.12), a tu otra pregunta...
>>
>> - Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra
>>> valores booleanos, en realidad no se que estaría chequeando
>>
>>
>> isin te devuelve *siempre* un DataFrame de booleanos, siendo True las
>> celdas donde hay coincidencia con alguno de los valores que pasaste a
>> isin. Así pues, ninguna sorpresa. Ese dataframe de booleanos lo puedes
>> utilizar como una *máscara* para filtrar los valores de otro DataFrame.
>> Eso es lo que haces en tu ejemplo anterior:
>>
>> *print(df2[df2['pami'].isin(['382.24', '627.12'])])*
>>
>>
>>  Observa que estás usando df2['pami'].isin(['382.24', '627.12']) como
>> índice del propio df2. En este caso, tu máscara está discriminando
>> algunas filas: el resultado de df2[mascara] será un nuevo DataFrame que
>> mostrará (normalmente esto se hace con una clase proxy que actúa como
>> "vista") sólo esas filas.
>>
>> En tu segundo ejemplo no estás aplicando la máscara: la estás imprimiendo
>> directamente y por tanto sólo ves los booleanos.
>>
>> Curiosidad: las máscaras se pueden combinar usando operaciones booleanas
>> normales. Por ejemplo, combinando criterios sobre diferentes columnas:
>>
>> >>> l = df2['lab'].isin(['Alcon'])
>> >>> p = df2['pami'].isin(['382.24', '617.12'])
>> >>> l
>> 19   False
>> 629  False
>> 23549 True
>> 30087False
>> Name: lab, dtype: bool
>> >>> p
>> 19   False
>> 629   True
>> 23549False
>> 30087 True
>> Name: pami, dtype: bool
>> >>> l & p# AND lógico -> todas False porque no coincide nada
>> 19   False
>> 629  False
>> 23549False
>> 30087False
>> dtype: bool
>> >>> l | p# OR lógico -> combina las filas True de ambas
>> 19   False
>> 629   True
>> 23549 True
>> 30087 True
>> dtype: bool
>> >>> df2[l | p]# DataFrame con las filas que cumplen AL MENOS uno de
>> los dos criterios
>>   labpami
>> 629 Alcon  382.24
>> 23549  Duncan  245.44
>> 30087   Fabra  617.12
>> >>> df2[l & p]# DataFrame con las filas que cumplen AMBOS criterios
>> (está vacío, claro)
>> Empty DataFrame
>> Columns: [lab, pami]
>> Index: []
>>
>>
>> Saludos,
>> Ricardo
>>
>> On Wed, Aug 5, 2020 at 9:06 AM Lemarchand Barker <
>> lemarchand8...@gmail.com> wrote:
>>
>>> Hola siguiendo con la lectura de pandas, estoy probando isin() y no me
>>> queda muy en claro bien que función cumple y qué tipo de uso le podría dar.
>>> Mi ejemplo es el siguiente:
>>>
>>> leer = pd.read_csv('democsv.csv')
>>> df = pd.DataFrame({
>>> 'lab': ['Abbott Diabetes', 'Alcon', 'Duncan', 'Fabra'],
>>> 'pami': ['490.13', '382.24', '245.44', '617.12'],},
>>> index=['19', '629', '23549', '30087'])
>>> df2 = df.copy()
>>>
>>> df2['pami'] = ['490.13', '382.24', '245.44', '617.12']
>>> *print(df2['pami'])*
>>>
>>> Salida:
>>> 19   490.13
>>> 629  382.24
>>> 23549245.44
>>> 30087617.12
>>> Name: pami, dtype: object
>>>
>>>
>>> *print(df2[df2['pami'].isin(['382.24', '627.12'])])*
>>>
>>> - En esta salida tengo un inconveniente, paso 2 valores: 382.24 y 627.12
>>> y solo muestra 1, qué estoy haciendo mal?
>>>
>>> Salida:
>>>labpami
>>> 629  Alcon  382.24
>>>
>>>
>>> *print(df2.isin({'pami': [1, 3]}))*
>>>
>>> - Acá paso también 

Re: [Python-es] [Consulta] isin()

2020-08-05 Por tema Ricardo Cárdenes
Por cierto, añado: observa que limité los criterios a columnas concretas.
Eso tiene perfecto sentido aquí porque cada columna tiene una semántica
diferente. Sin embargo, nada te impide aplicar isin a un DataFrame entero.
El problema es que el resultado puede no tener mucho sentido (o sí,
depende):

>>> mask = df2.isin(['382.24', '617.12'])
>>> mask
 lab   pami
19 False  False
629False   True
23549  False  False
30087  False   True


Obviamente, todas las entradas de la columna "lab" salen falsos. ¿Qué
sucede si usas esto como máscara?

>>> df2[mask]
   labpami
19 NaN NaN
629NaN  382.24
23549  NaN NaN
30087  NaN  617.12


Dado que no puedes discriminar filas enteras, la máscara no sabe lo que
estás queriendo hacer. Y por tanto va a mostrarte *todo*, pero poniendo
valores NaN ("not a number") en las celdas falsas.

Por cierto, que la máscara no tiene por qué ser un DataSet. Puede ser por
ejemplo una simple lista, que se aplica al primer eje (filas, en este caso):

>>> df2[[False, True, False, True]]
 labpami
629Alcon  382.24
30087  Fabra  617.12


Y dado que Pandas se apoya en NumPy, imagino que puedes pasar un array de
NumPy también.


On Wed, Aug 5, 2020 at 10:12 AM Ricardo Cárdenes 
wrote:

> Aparte de lo que te está contestando Darío (error en la entrada: 627.12 en
> lugar de 617.12), a tu otra pregunta...
>
> - Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores
>> booleanos, en realidad no se que estaría chequeando
>
>
> isin te devuelve *siempre* un DataFrame de booleanos, siendo True las
> celdas donde hay coincidencia con alguno de los valores que pasaste a isin.
> Así pues, ninguna sorpresa. Ese dataframe de booleanos lo puedes utilizar
> como una *máscara* para filtrar los valores de otro DataFrame. Eso es lo
> que haces en tu ejemplo anterior:
>
> *print(df2[df2['pami'].isin(['382.24', '627.12'])])*
>
>
>  Observa que estás usando df2['pami'].isin(['382.24', '627.12']) como
> índice del propio df2. En este caso, tu máscara está discriminando
> algunas filas: el resultado de df2[mascara] será un nuevo DataFrame que
> mostrará (normalmente esto se hace con una clase proxy que actúa como
> "vista") sólo esas filas.
>
> En tu segundo ejemplo no estás aplicando la máscara: la estás imprimiendo
> directamente y por tanto sólo ves los booleanos.
>
> Curiosidad: las máscaras se pueden combinar usando operaciones booleanas
> normales. Por ejemplo, combinando criterios sobre diferentes columnas:
>
> >>> l = df2['lab'].isin(['Alcon'])
> >>> p = df2['pami'].isin(['382.24', '617.12'])
> >>> l
> 19   False
> 629  False
> 23549 True
> 30087False
> Name: lab, dtype: bool
> >>> p
> 19   False
> 629   True
> 23549False
> 30087 True
> Name: pami, dtype: bool
> >>> l & p# AND lógico -> todas False porque no coincide nada
> 19   False
> 629  False
> 23549False
> 30087False
> dtype: bool
> >>> l | p# OR lógico -> combina las filas True de ambas
> 19   False
> 629   True
> 23549 True
> 30087 True
> dtype: bool
> >>> df2[l | p]# DataFrame con las filas que cumplen AL MENOS uno de
> los dos criterios
>   labpami
> 629 Alcon  382.24
> 23549  Duncan  245.44
> 30087   Fabra  617.12
> >>> df2[l & p]# DataFrame con las filas que cumplen AMBOS criterios
> (está vacío, claro)
> Empty DataFrame
> Columns: [lab, pami]
> Index: []
>
>
> Saludos,
> Ricardo
>
> On Wed, Aug 5, 2020 at 9:06 AM Lemarchand Barker 
> wrote:
>
>> Hola siguiendo con la lectura de pandas, estoy probando isin() y no me
>> queda muy en claro bien que función cumple y qué tipo de uso le podría dar.
>> Mi ejemplo es el siguiente:
>>
>> leer = pd.read_csv('democsv.csv')
>> df = pd.DataFrame({
>> 'lab': ['Abbott Diabetes', 'Alcon', 'Duncan', 'Fabra'],
>> 'pami': ['490.13', '382.24', '245.44', '617.12'],},
>> index=['19', '629', '23549', '30087'])
>> df2 = df.copy()
>>
>> df2['pami'] = ['490.13', '382.24', '245.44', '617.12']
>> *print(df2['pami'])*
>>
>> Salida:
>> 19   490.13
>> 629  382.24
>> 23549245.44
>> 30087617.12
>> Name: pami, dtype: object
>>
>>
>> *print(df2[df2['pami'].isin(['382.24', '627.12'])])*
>>
>> - En esta salida tengo un inconveniente, paso 2 valores: 382.24 y 627.12
>> y solo muestra 1, qué estoy haciendo mal?
>>
>> Salida:
>>labpami
>> 629  Alcon  382.24
>>
>>
>> *print(df2.isin({'pami': [1, 3]}))*
>>
>> - Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra
>> valores booleanos, en realidad no se que estaría chequeando
>>
>> Salida:
>>   lab   pami
>> 19False  False
>> 629  False  False
>> 23549  False  False
>> 30087  False  False
>>
>> Muchas gracias, saludos
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>
___
Python-es mailing list

Re: [Python-es] [Consulta] isin()

2020-08-05 Por tema Ricardo Cárdenes
Aparte de lo que te está contestando Darío (error en la entrada: 627.12 en
lugar de 617.12), a tu otra pregunta...

- Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores
> booleanos, en realidad no se que estaría chequeando


isin te devuelve *siempre* un DataFrame de booleanos, siendo True las
celdas donde hay coincidencia con alguno de los valores que pasaste a isin.
Así pues, ninguna sorpresa. Ese dataframe de booleanos lo puedes utilizar
como una *máscara* para filtrar los valores de otro DataFrame. Eso es lo
que haces en tu ejemplo anterior:

*print(df2[df2['pami'].isin(['382.24', '627.12'])])*


 Observa que estás usando df2['pami'].isin(['382.24', '627.12']) como
índice del propio df2. En este caso, tu máscara está discriminando algunas
filas: el resultado de df2[mascara] será un nuevo DataFrame que mostrará
(normalmente esto se hace con una clase proxy que actúa como "vista") sólo
esas filas.

En tu segundo ejemplo no estás aplicando la máscara: la estás imprimiendo
directamente y por tanto sólo ves los booleanos.

Curiosidad: las máscaras se pueden combinar usando operaciones booleanas
normales. Por ejemplo, combinando criterios sobre diferentes columnas:

>>> l = df2['lab'].isin(['Alcon'])
>>> p = df2['pami'].isin(['382.24', '617.12'])
>>> l
19   False
629  False
23549 True
30087False
Name: lab, dtype: bool
>>> p
19   False
629   True
23549False
30087 True
Name: pami, dtype: bool
>>> l & p# AND lógico -> todas False porque no coincide nada
19   False
629  False
23549False
30087False
dtype: bool
>>> l | p# OR lógico -> combina las filas True de ambas
19   False
629   True
23549 True
30087 True
dtype: bool
>>> df2[l | p]# DataFrame con las filas que cumplen AL MENOS uno de los
dos criterios
  labpami
629 Alcon  382.24
23549  Duncan  245.44
30087   Fabra  617.12
>>> df2[l & p]# DataFrame con las filas que cumplen AMBOS criterios
(está vacío, claro)
Empty DataFrame
Columns: [lab, pami]
Index: []


Saludos,
Ricardo

On Wed, Aug 5, 2020 at 9:06 AM Lemarchand Barker 
wrote:

> Hola siguiendo con la lectura de pandas, estoy probando isin() y no me
> queda muy en claro bien que función cumple y qué tipo de uso le podría dar.
> Mi ejemplo es el siguiente:
>
> leer = pd.read_csv('democsv.csv')
> df = pd.DataFrame({
> 'lab': ['Abbott Diabetes', 'Alcon', 'Duncan', 'Fabra'],
> 'pami': ['490.13', '382.24', '245.44', '617.12'],},
> index=['19', '629', '23549', '30087'])
> df2 = df.copy()
>
> df2['pami'] = ['490.13', '382.24', '245.44', '617.12']
> *print(df2['pami'])*
>
> Salida:
> 19   490.13
> 629  382.24
> 23549245.44
> 30087617.12
> Name: pami, dtype: object
>
>
> *print(df2[df2['pami'].isin(['382.24', '627.12'])])*
>
> - En esta salida tengo un inconveniente, paso 2 valores: 382.24 y 627.12 y
> solo muestra 1, qué estoy haciendo mal?
>
> Salida:
>labpami
> 629  Alcon  382.24
>
>
> *print(df2.isin({'pami': [1, 3]}))*
>
> - Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores
> booleanos, en realidad no se que estaría chequeando
>
> Salida:
>   lab   pami
> 19False  False
> 629  False  False
> 23549  False  False
> 30087  False  False
>
> Muchas gracias, saludos
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] isin()

2020-08-05 Por tema lemarchand8679

Pero que .da, gracias.Igual sigo sin comprender mucho su 
uso.SaludosEnviado desde mi smartphone Samsung Galaxy.
 Mensaje original De: Darío vía Python-es 
 Fecha: 5/8/20  16:49  (GMT-03:00) A: La lista de python 
en castellano  CC: Darío  
Asunto: Re: [Python-es] [Consulta] isin() Hola, fijate que en lugar de 617.12 
ponés 627.12 para ver si está. Lo cual está funcionando bien. Hay un error de 
tipeo.-Sent with ProtonMail Secure Email.‐‐‐ Original Message ‐‐‐ On 
Wednesday, 5 de August de 2020 16:06, Lemarchand Barker 
 wrote: Hola siguiendo con la lectura de pandas, 
estoy probando isin() y no me queda muy en claro bien que función cumple y qué 
tipo de uso le podría dar.Mi ejemplo es el siguiente:leer = 
pd.read_csv('democsv.csv')df = pd.DataFrame({    'lab': ['Abbott Diabetes', 
'Alcon', 'Duncan', 'Fabra'],    'pami': ['490.13', '382.24', '245.44', 
'617.12'],},    index=['19', '629', '23549', '30087'])df2 = 
df.copy()df2['pami'] = ['490.13', '382.24', '245.44', 
'617.12']print(df2['pami'])Salida:19       490.13629      382.2423549    
245.4430087    617.12Name: pami, dtype: 
objectprint(df2[df2['pami'].isin(['382.24', '627.12'])])- En esta salida tengo 
un inconveniente, paso 2 valores: 382.24 y 627.12 y solo muestra 1, qué estoy 
haciendo mal?Salida:           lab    pami629  Alcon  
382.24print(df2.isin({'pami': [1, 3]}))- Acá paso también 2 valores: 1 y 3, no 
entiendo porque me muestra valores booleanos, en realidad no se que estaría 
chequeandoSalida:  lab   pami19        False  False629      False  
False23549  False  False30087  False  FalseMuchas gracias, saludos___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


Re: [Python-es] [Consulta] isin()

2020-08-05 Por tema Darío vía Python-es
Hola, fijate que en lugar de 617.12 ponés 627.12 para ver si está. Lo cual está 
funcionando bien. Hay un error de tipeo.

-

Sent with [ProtonMail](https://protonmail.com) Secure Email.

‐‐‐ Original Message ‐‐‐
On Wednesday, 5 de August de 2020 16:06, Lemarchand Barker 
 wrote:

> Hola siguiendo con la lectura de pandas, estoy probando isin() y no me queda 
> muy en claro bien que función cumple y qué tipo de uso le podría dar.
> Mi ejemplo es el siguiente:
>
> leer = pd.read_csv('democsv.csv')
> df = pd.DataFrame({
> 'lab': ['Abbott Diabetes', 'Alcon', 'Duncan', 'Fabra'],
> 'pami': ['490.13', '382.24', '245.44', '617.12'],},
> index=['19', '629', '23549', '30087'])
> df2 = df.copy()
>
> df2['pami'] = ['490.13', '382.24', '245.44', '617.12']
> print(df2['pami'])
>
> Salida:
> 19 490.13
> 629 382.24
> 23549 245.44
> 30087 617.12
> Name: pami, dtype: object
>
> print(df2[df2['pami'].isin(['382.24', '627.12'])])
>
> - En esta salida tengo un inconveniente, paso 2 valores: 382.24 y 627.12 y 
> solo muestra 1, qué estoy haciendo mal?
>
> Salida:
> lab pami
> 629 Alcon 382.24
>
> print(df2.isin({'pami': [1, 3]}))
>
> - Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores 
> booleanos, en realidad no se que estaría chequeando
>
> Salida:
> lab pami
> 19 False False
> 629 False False
> 23549 False False
> 30087 False False
>
> Muchas gracias, saludos___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


[Python-es] [Consulta] isin()

2020-08-05 Por tema Lemarchand Barker
Hola siguiendo con la lectura de pandas, estoy probando isin() y no me
queda muy en claro bien que función cumple y qué tipo de uso le podría dar.
Mi ejemplo es el siguiente:

leer = pd.read_csv('democsv.csv')
df = pd.DataFrame({
'lab': ['Abbott Diabetes', 'Alcon', 'Duncan', 'Fabra'],
'pami': ['490.13', '382.24', '245.44', '617.12'],},
index=['19', '629', '23549', '30087'])
df2 = df.copy()

df2['pami'] = ['490.13', '382.24', '245.44', '617.12']
*print(df2['pami'])*

Salida:
19   490.13
629  382.24
23549245.44
30087617.12
Name: pami, dtype: object


*print(df2[df2['pami'].isin(['382.24', '627.12'])])*

- En esta salida tengo un inconveniente, paso 2 valores: 382.24 y 627.12 y
solo muestra 1, qué estoy haciendo mal?

Salida:
   labpami
629  Alcon  382.24


*print(df2.isin({'pami': [1, 3]}))*

- Acá paso también 2 valores: 1 y 3, no entiendo porque me muestra valores
booleanos, en realidad no se que estaría chequeando

Salida:
  lab   pami
19False  False
629  False  False
23549  False  False
30087  False  False

Muchas gracias, saludos
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es