Pandas value_counts Porcentaje

Salman Mehmood 21 junio 2023
  1. Use la función Pandas value_counts() para contar valores de Dataframe en Python
  2. Aplicar la función value_counts() en la lista de columnas
  3. Convertir frecuencia en porcentaje en Python
Pandas value_counts Porcentaje

Aprenderemos a usar la función value_counts() para contar valores y veremos cómo aplicar esta función a una lista de columnas de marcos de datos. También aprenderemos cómo convertir frecuencias en porcentajes en Python.

Use la función Pandas value_counts() para contar valores de Dataframe en Python

La función value_counts() opera un poco similar a la función groupby() pero también hay ventajas de usar la función value_counts().

Para explorar esta función de Pandas, usamos un conjunto de datos de empleados para nuestro análisis y encontraremos el porcentaje de empleados en cada departamento.

El objetivo es crear un marco de datos simple de salarios y encontrar el segmento superior de empleados por salario en el departamento y qué departamentos quedan por empleados. Y vamos a convertir la frecuencia en un porcentaje; todo esto se puede hacer con la función value_counts().

Comencemos importando Pandas y guardándolo como pd, que es nuestra variable, y luego usamos la variable pd para llamar a la función read_csv() y pasar nuestro archivo de datos llamado HR_file.csv.

Tenemos acceso a la función head(), que nos da las primeras cinco filas y algunas columnas.

import pandas as pd

Employee_Data = pd.read_csv("HR_file.csv")
Employee_Data.head()

marco de datos

Siempre podemos aislar una columna que nos interese usando un corchete, y dentro de los corchetes, vamos a llamar a la columna salario. Ahora vamos a utilizar la función value_counts().

Employee_Data["salary"].value_counts()

Podemos ver la distribución baja, media y alta de los salarios.

low       7316
medium    6446
high      1237
Name: salary, dtype: int64

el parámetro normalizar

Siempre podemos ver lo que requiere esta función presionando Shift+Tab, y podemos ver que hay algunos parámetros diferentes que podemos usar, por ejemplo, normalizar.

Podemos ver que la gran mayoría de nuestros salarios están en una categoría baja, pero si quisiéramos obtener un porcentaje, usaríamos normalizar igual a True.

Employee_Data["salary"].value_counts(normalize=True)

Producción :

low       0.487766
medium    0.429762
high      0.082472
Name: salary, dtype: float64

Podemos cambiar fácilmente la columna salario por la columna Departamentos.

Employee_Data["Departments "].value_counts(normalize=True)

Podemos ver el desglose de los departamentos, y todavía lo tenemos normalizado.

sales          0.276018
technical      0.181345
support        0.148610
IT             0.081805
product_mng    0.060137
marketing      0.057204
RandD          0.052470
accounting     0.051137
hr             0.049270
management     0.042003
Name: Departments , dtype: float64

Si no quisiéramos que se normalizara, nos desharíamos de eso, que se mostrará en orden descendente.

Employee_Data["Departments "].value_counts()

Producción :

sales          4140
technical      2720
support        2229
IT             1227
product_mng     902
marketing       858
RandD           787
accounting      767
hr              739
management      630
Name: Departments , dtype: int64

Aplicar la función value_counts() en la lista de columnas

Lo siguiente que podemos hacer es cuál es la intersección entre empleados por salario y Departamentos. Usaremos más de una columna usando una lista, y dentro de la lista, le pasaremos salario y Departamentos y luego le aplicaremos la función value_counts().

Si ve un pequeño espacio delante de Departamentos, es porque el departamento agrega un espacio después por alguna razón, por lo que agregaremos un espacio usando esta columna.

Employee_Data[["Departments ", "salary"]].value_counts()

Podemos ver la mayoría de las ventas de nuestros empleados y la mayoría de ellos están en el rango bajo y luego, si bajamos aquí, podemos ver que hay una cantidad de salario alto en ventas, pero solo 269 personas. Y 2099 está en un rango de salario bajo.

Aplicar el value_counts

Convertir frecuencia en porcentaje en Python

Ahora queremos saber qué departamentos dejan los empleados. Usaremos la columna Salir de la empresa para hacer esto.

Employee_Data[["Departments ", "Quit the Company"]].value_counts()

Como vemos, 1 es donde en términos de quién dejó la empresa, por lo que solo estaríamos mirando los unos. La mayoría de la gente abandonó el departamento de ventas.

Convertir frecuencia en porcentaje

Ahora solo falta evaluar ventas; podríamos aislar fácilmente nuestra columna Departamentos creando una condición y obteniendo una máscara.

Employee_Data["Departments "] == "sales"

Ahora encapsularemos esta condición entre paréntesis y la almacenaremos en una variable llamada ventas. Usando ventas, estamos viendo los recuentos de valor de aquellos que abandonaron la empresa.

sales = Employee_Data[Employee_Data["Departments "] == "sales"]
sales["Quit the Company"].value_counts()

Ahora podemos ver el número de personas que han dejado la empresa.

0    3126
1    1014
Name: Quit the Company, dtype: int64

Puede ser bueno ver esto en un porcentaje.

sales = Employee_Data[Employee_Data["Departments "] == "sales"]
sales["Quit the Company"].value_counts(normalize=True)

Producción :

0    0.755072
1    0.244928
Name: Quit the Company, dtype: float64
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn