¿Cómo contar las ocurrencias de valor específico en la columna Pandas?

En este artículo, discutiremos cómo contar las ocurrencias de un valor de columna específico en la columna pandas.

Conjunto de datos en uso:

Podemos contar usando el método value_counts() . Esta función se usa para contar los valores presentes en todo el marco de datos y también contar los valores en una columna en particular.

Sintaxis :

data['column_name'].value_counts()[value]

dónde

  • data es el marco de datos de entrada
  • valor es el valor de string/entero presente en la columna que se va a contar
  • column_name es la columna en el marco de datos

Ejemplo : para contar las ocurrencias de un valor específico

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count values in name column
print(data['name'].value_counts()['sravan'])
 
# count values in subjects column
print(data['subjects'].value_counts()['php'])
 
# count values in marks column
print(data['marks'].value_counts()[89])

Producción:

3
2
1

Si queremos contar todos los valores en una columna en particular, entonces no necesitamos mencionar el valor.

Sintaxis :

data['column_name'].value_counts()

Ejemplo: Para contar la ocurrencia de un valor en una columna en particular 

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count all values in name column
print(data['name'].value_counts())
 
# count all values in subjects column
print(data['subjects'].value_counts())
 
# count all values in marks column
print(data['marks'].value_counts())
 
# count all values in age column
print(data['age'].value_counts())

Producción:

Si queremos obtener los resultados en orden (como orden ascendente y descendente), tenemos que especificar el parámetro

Sintaxis:

orden ascendente:

data[‘column_name’].value_counts(ascending=True)

Orden descendiente:

data[‘column_name’].value_counts(ascending=False)

Ejemplo: obtener resultados de forma ordenada 

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count all values in name column in ascending order
print(data['name'].value_counts(ascending=True))
 
# count all values in subjects column in ascending order
print(data['subjects'].value_counts(ascending=True))
 
# count all values in marks column in descending order
print(data['marks'].value_counts(ascending=False))
 
# count all values in age column in descending order
print(data['age'].value_counts(ascending=False))

Producción:

Tratar con valores faltantes

Aquí podemos contar la ocurrencia con o sin valores NA. Al usar el parámetro dropna para incluir valores NA si se establece en True, no contará NA si se establece en False.

Sintaxis :

Incluir valores NA:

data[‘column_name’].value_counts(dropna=True)

Excluir valores NA:

data[‘column_name’].value_counts(dropna=False)

Ejemplo: tratar con valores faltantes

Python3

# import pandas module
import pandas as pd
 
#import numpy
import numpy
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith', 'gnanesh',
             'sravan', 'sravan', 'ojaswi', numpy.nan],
    'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css',
                 'python', 'R', numpy.nan],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90, numpy.nan],
    'age': [11, 23, 23, 21, 21, 21, 23, 21, numpy.nan]
})
 
# count all values in name column including NA
print(data['name'].value_counts(dropna=False))
 
# count all values in subjects column including NA
print(data['subjects'].value_counts(dropna=False))
 
# count all values in marks column excluding NA
print(data['marks'].value_counts(dropna=False))
 
# count all values in age column excluding NA
print(data['age'].value_counts(dropna=True))

Producción:

Contar valores con frecuencias relativas

Vamos a agregar el parámetro de normalización para obtener las frecuencias relativas de los datos repetidos. Se establece en Verdadero.

Sintaxis:

data[‘column_name’].value_counts(normalize=True)

Ejemplo: contar valores con frecuencias relativas 

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# count all values in name  with relative frequencies
print(data['name'].value_counts(normalize=True))

Producción:

sravan     0.375
ojaswi     0.125
ojsawi     0.125
bobby      0.125
rohith     0.125
gnanesh    0.125
Name: name, dtype: float64

Obtén detalles

Si queremos obtener detalles como recuento, media, estándar, mínimo, 25 %, 50 %, 75 %, máximo, entonces tenemos que usar el método describe().

Sintaxis :

data['column_name'].describe()

Ejemplo: Obtener detalles

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get about age
print(data['age'].describe())

Producción:

count     8.000000
mean     20.500000
std       3.964125
min      11.000000
25%      21.000000
50%      21.000000
75%      23.000000
max      23.000000
Name: age, dtype: float64

Usando tamaño() con groupby()

Aquí esto devolverá el recuento de todas las ocurrencias en una columna en particular.

Sintaxis :

data.groupby('column_name').size()

Ejemplo : Conteo de todas las ocurrencias en una columna en particular

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get the size of name
print(data.groupby('name').size())

Producción:

name
bobby      1
gnanesh    1
ojaswi     1
ojsawi     1
rohith     1
sravan     3
dtype: int64

Usando count() con groupby()

Aquí, esto devolverá el recuento de todas las ocurrencias en una columna en particular en todas las columnas.

Sintaxis :

data.groupby('column_name').count()

Ejemplo : Conteo de todas las ocurrencias en una columna en particular 

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get the count of name across all columns
print(data.groupby('name').count())

Producción:

Uso de contenedores

Si queremos obtener el conteo en un rango particular de valores, entonces se aplica el parámetro bins. Podemos especificar el número de rangos (contenedores).

Sintaxis:

(data['column_name'].value_counts(bins)

dónde,

  • data es el marco de datos de entrada
  • column_name es la columna para obtener contenedores
  • bins es el número total de bins a especificar

Ejemplo: Obtener el recuento en un rango particular de valores

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'ojsawi', 'bobby',  'rohith',
             'gnanesh', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'php', 'java',
                 'html/css', 'python', 'R'],
    'marks': [98, 90, 78, 91, 87, 78, 89, 90],
    'age': [11, 23, 23, 21, 21, 21, 23, 21]
})
 
# get count of  age column with  6 bins
print(data['age'].value_counts(bins=6))
 
# get count of  age column with  4 bins
print(data['age'].value_counts(bins=4))

Producción:

(19.0, 21.0]      4
(21.0, 23.0]      3
(10.987, 13.0]    1
(17.0, 19.0]      0
(15.0, 17.0]      0
(13.0, 15.0]      0
Name: age, dtype: int64
(20.0, 23.0]      7
(10.987, 14.0]    1
(17.0, 20.0]      0
(14.0, 17.0]      0
Name: age, dtype: int64

Usando aplicar()

Si queremos obtener un recuento de todas las columnas en todas las columnas, entonces tenemos que usar la función apply(). En eso usaremos el método value_counts().

Sintaxis:

data.apply(pd.value_counts)

Ejemplo: obtener el recuento de todas las columnas en todas las columnas

Python3

# import pandas module
import pandas as pd
 
# create a dataframe
# with 5 rows and 4 columns
data = pd.DataFrame({
    'name': ['sravan', 'bobby', 'sravan', 'sravan', 'ojaswi'],
    'subjects': ['java', 'php', 'java', 'html/css', 'python'],
    'marks': [98, 90, 78, 91, 87],
    'age': [11, 23, 23, 21, 21]
})
 
# get all count
data.apply(pd.value_counts)

Producción:

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 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 *