Pandas value_counts Porcentaje
-
Use la función Pandas
value_counts()
para contar valores de Dataframe en Python -
Aplicar la función
value_counts()
en la lista de columnas - Convertir frecuencia en porcentaje en Python
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()
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.
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
.
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
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