Gráfico de barras de dos columnas basado en una condición específica

Me dieron una tarea en la que se supone que debo trazar un elemento basado en otro elemento de columna.

Para más información aquí está el código:

# TODO: Plot the Male employee first name on 'Y' axis while Male salary is on 'X' axis
import pandas as pd 
import matplotlib.pyplot as plt 
data = pd.read_excel("C:\\users\\HP\\Documents\\Datascience task\\Employee.xlsx")

print(data.head(5))

Producción:

    First Name  Last Name   Gender           Age    Experience (Years)  Salary
0   Arnold  Carter           Male             21                10    8344
1   Arthur  Farrell          Male             20                 7    6437
2   Richard Perry            Male             28                 3    8338
3   Ellia   Thomas           Female           26                 4    8870
4   Jacob   Kelly            Male             21                 4    548

Cómo trazar la columna 'Nombre' frente a la columna 'Salario' de las primeras 5 filas donde 'Género' es Masculino.

Answer

Primero genere las filas masculinas por separado y extraiga el nombre y el salario para trazar.

El siguiente código identifica a los primeros cinco empleados varones y convierte su nombre y salario como listas x e y.

x = list(df[df['Gender'] == "Male"][:5]['Fname'])
y = list(df[df['Gender'] == "Male"][:5]['Salary'])
print(x)
print(y)

Producción:

['Arnold', 'Arthur', 'Richard', 'Jacob']
[8344, 6437, 8338, 548]

Tenga en cuenta que solo hay 4 machos disponibles en el df.

Luego podemos trazar cualquier gráfico que necesitemos;

plt.bar(x, y, color = ['r', 'g', 'b', 'y']);

Producción: ingrese la descripción de la imagen aquí

seaborn puede ayudar también

import seaborn as sns
import matplotlib.plotly as plt

sns.barplot( x=df[(df['Gender'] == "Male")]['First Name'][:5] , y = df[(df['Gender'] == "Male")]['Salary'][:5] )

plt.xlabel('First Names')
plt.ylabel('Salary')
plt.title('Barplot of Male Employees')
plt.show()