Cómo contar la frecuencia con la que un valor se produce en Pandas DataFrame

A veces, cuando se trabaja con dataframe, se puede querer contar cuántas veces se produce un valor en la columna o, en otras palabras, calcular la frecuencia. Principalmente se utilizan tres métodos para este propósito. Echemos un vistazo a ellos uno por uno.
df.groupby().count()
Series.cuentas_de_valor()
df.groupby().size()
Usaremos el mismo DataFrame
en las siguientes secciones como sigue,
import pandas as pd
df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})
df.groupby().count()
método
Si quieres calcular la frecuencia sobre una sola columna, entonces este método es el mejor.
import pandas as pd
df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})
freq = df.groupby(['A']).count()
print(freq)
freq = df.groupby(['B']).count()
print(freq)
Se obtendrá lo siguiente.
B
A
jim 4
sal 3
tom 2
A
B
a 4
b 5
Método Series.value_counts()
Como cada objeto dataframe es una colección de objetos Series
, este método se utiliza mejor para el objeto pandas.Series
.
Ahora usa la función Series.values_counts()
.
import pandas as pd
df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})
freq = df['A'].value_counts()
print(freq)
freq = df['B'].value_counts()
print(freq)
Lo siguiente será la salida.
jim 4
sal 3
tom 2
Name: A, dtype: int64
b 5
a 4
Name: B, dtype: int64
df.groupby().size()
método
Los dos métodos anteriores no se pueden utilizar para contar la frecuencia de múltiples columnas, pero podemos utilizar df.groupby().size()
para múltiples columnas al mismo tiempo.
import pandas as pd
df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})
freq = df.groupby(['A', 'B']).size()
print(freq)
Se obtendrá lo siguiente.
A B
jim a 2
b 2
sal a 1
b 2
tom a 1
b 1
dtype: int64