¿Cómo contar valores distintos de una columna de marco de datos de Pandas?

Veamos ¿Cómo contar valores distintos de una columna de marco de datos de Pandas?

Considere una estructura tabular como se indica a continuación, que debe crearse como Dataframe. Las columnas son altura, peso y edad . Los registros de 8 estudiantes forman las filas. 

  altura peso años
Steve 165    63.5    20
Ría 165     64   22
Nivi 164    63.5 22
jane 158     54 21
Kate 167    63.5 23
lucia 160    62 22
RAM 158     64 20
niki 165 64 21

El primer paso es crear el marco de datos para la tabulación anterior. Mire el fragmento de código a continuación.

Python3

# import library
import pandas as pd
  
# create a Dataframe
df = pd.DataFrame({ 
  'height' : [165, 165, 164, 
              158, 167, 160,
              158, 165],
    
  'weight' : [63.5, 64, 63.5,
              54, 63.5, 62,
              64, 64],
    
  'age' : [20, 22, 22, 
           21, 23, 22,
           20, 21]},
    
   index = ['Steve', 'Ria', 'Nivi', 
            'Jane', 'Kate', 'Lucy',
            'Ram', 'Niki'])
  
# show the Dataframe
df

Producción:

Dataframe

Método 1: Uso del bucle for.

El marco de datos se ha creado y se puede codificar usando for loop y contar el número de valores únicos en una columna específica. Por ejemplo, en la tabla anterior, si se desea contar el número de valores únicos en la altura de la columna . La idea es usar una variable cnt para almacenar el conteo y una lista visitada que tenga los valores visitados previamente. Luego, el ciclo for que itera a través de la columna ‘altura’ y para cada valor, verifica si el mismo valor ya ha sido visitado en la lista visitada. Si el valor no se visitó anteriormente, el conteo se incrementa en 1.

A continuación se muestra la implementación:

Python3

# import library
import pandas as pd
  
# create a Dataframe
df = pd.DataFrame({ 
  'height' : [165, 165, 164, 
              158, 167, 160,
              158, 165],
    
  'weight' : [63.5, 64, 63.5,
              54, 63.5, 62,
              64, 64],
    
  'age' : [20, 22, 22, 
           21, 23, 22,
           20, 21]},
    
   index = ['Steve', 'Ria', 'Nivi', 
            'Jane', 'Kate', 'Lucy',
            'Ram', 'Niki'])
  
# variable to hold the count
cnt = 0
  
# list to hold visited values
visited = []
  
# loop for counting the unique
# values in height
for i in range(0, len(df['height'])):
    
    if df['height'][i] not in visited: 
        
        visited.append(df['height'][i])
          
        cnt += 1
  
print("No.of.unique values :",
      cnt)
  
print("unique values :",
      visited)

Producción :

No.of.unique values : 5
unique values : [165, 164, 158, 167, 160]

Pero este método no es tan eficiente cuando el Dataframe crece en tamaño y contiene miles de filas y columnas. Para dar una eficiencia hay tres métodos disponibles que se enumeran a continuación:

  • pandas.unique()
  • Marco de datos.nunique()
  • Serie.value_counts()

Método 2: Usar unique().

El método único toma una array o serie 1-D como entrada y devuelve una lista de elementos únicos en ella. El valor devuelto es una array NumPy y el contenido de la misma se basa en la entrada pasada. Si se proporcionan índices como entrada, el valor devuelto también serán los índices del valor único. 

Sintaxis: pandas.unique(Series)

Ejemplo:

Python3

# import library
import pandas as pd
  
# create a Dataframe
df = pd.DataFrame({ 
  'height' : [165, 165, 164, 
              158, 167, 160,
              158, 165],
    
  'weight' : [63.5, 64, 63.5,
              54, 63.5, 62,
              64, 64],
    
  'age' : [20, 22, 22, 
           21, 23, 22,
           20, 21]},
    
   index = ['Steve', 'Ria', 'Nivi', 
            'Jane', 'Kate', 'Lucy',
            'Ram', 'Niki'])
  
# counting unique values
n = len(pd.unique(df['height']))
  
print("No.of.unique values :", 
      n)

Producción:

No.of.unique values : 5

Método 3: Usar Dataframe.nunique() .

Este método devuelve el recuento de valores únicos en el eje especificado. La sintaxis es:

Sintaxis: Dataframe.nunique (eje=0/1, dropna=Verdadero/Falso)

Ejemplo:

Python3

# import library
import pandas as pd
  
# create a Dataframe
df = pd.DataFrame({ 
  'height' : [165, 165, 164, 
              158, 167, 160,
              158, 165],
    
  'weight' : [63.5, 64, 63.5,
              54, 63.5, 62,
              64, 64],
    
  'age' : [20, 22, 22, 
           21, 23, 22,
           20, 21]},
    
   index = ['Steve', 'Ria', 'Nivi', 
            'Jane', 'Kate', 'Lucy',
            'Ram', 'Niki'])
  
# check the values of 
# each row for each column
n = df.nunique(axis=0)
  
print("No.of.unique values in each column :\n",
      n)

Producción:

No.of.unique values in each column :
height    5
weight    4
age       4
dtype: int64

Para obtener el número de valores únicos en una columna específica:

 Sintaxis: Dataframe.col_name.nunique()

Ejemplo:

Python3

# import library
import pandas as pd
  
# create a Dataframe
df = pd.DataFrame({ 
  'height' : [165, 165, 164, 
              158, 167, 160,
              158, 165],
    
  'weight' : [63.5, 64, 63.5,
              54, 63.5, 62,
              64, 64],
    
  'age' : [20, 22, 22, 
           21, 23, 22,
           20, 21]},
    
   index = ['Steve', 'Ria', 'Nivi', 
            'Jane', 'Kate', 'Lucy',
            'Ram', 'Niki'])
  
# count no. of unique 
# values in height column
n = df.height.nunique()
  
print("No.of.unique values in height column :",
      n)

Producción:

No.of.unique values in height column : 5

Método 3: Usar Series.value_counts() .

Este método devuelve el recuento de todos los valores únicos en la columna especificada. 

Sintaxis: Series.value_counts(normalize=False, sort=True, ascendente=False, bins=Ninguno, dropna=True)

Ejemplo:

Python3

# import library
import pandas as pd
  
# create a Dataframe
df = pd.DataFrame({ 
  'height' : [165, 165, 164, 
              158, 167, 160,
              158, 165],
    
  'weight' : [63.5, 64, 63.5,
              54, 63.5, 62,
              64, 64],
    
  'age' : [20, 22, 22, 
           21, 23, 22,
           20, 21]},
    
   index = ['Steve', 'Ria', 'Nivi', 
            'Jane', 'Kate', 'Lucy',
            'Ram', 'Niki'])
  
  
# getting the list of unique values
li = list(df.height.value_counts())
  
# print the unique value counts
print("No.of.unique values :",
      len(li))

Producción:

No.of.unique values : 5

Publicación traducida automáticamente

Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *