前言
数据为kaggle上下载的HR.csv
导入numpy、pandas、matplotlib、seaborn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
读入数据
df=pd.read_csv("./data/HR.csv")
输出时会发现列显示不完全,中间有省略号代替,如下图所示:
此时我们并不能掌握这个数据中到底包含什么,所以我们要让中间的列显示完全,向代码中增添两行:
pd.set_option("max_columns",100000)
pd.set_option("max_colwidth",100000)
异常值删除
大致的观察数据会发现其中包含了一些很诡异的数据,这些异常数据的存在会使得整体数据的特征(如期望等)产生偏差,所以我们要将异常值删除。
df=df.dropna(axis=0,how="any")
df=df[df["last_level"]<=1]
axis=0 以行为单位,how="any"当行中出现NaN时,删除这一行。
axis=1以列为单位,how="all"当列中全为NaN时,删除这一列。
直方图(sns.histplot)
直方图与柱状图虽形似,但其含义并不相同,直方图表达的是连续变量的概率分布估计,直方图的面积是有意义的,而柱状图的面积没有意义。
df=df[df["last_evaluation"]<=1]
f=plt.figure()
f.add_subplot(1,3,1) # 一行三列第一个位置的图
sns.histplot(df["satisfaction_level"],bins=10,kde=True) # kde是直方图上面的分布曲线 False时不绘制曲线
f.add_subplot(1,3,2)
sns.histplot(df["last_evaluation"],bins=10,kde=True)
plt.tight_layout()
f.add_subplot(1,3,3)
sns.histplot(df["average_monthly_hours"],bins=10,kde=True)
plt.show()
绘制结果如下:
折线图(sns.pointplot)
sub_df=df.groupby("time_spend_company").mean() # 按time_spend_company分组,其他列计算均值
sns.pointplot(sub_df.index,sub_df["left"]) # 横轴为时间,纵轴为离职情况
plt.show()
sns.pointplot(x="time_spend_company",y="left",data=df)
plt.show()
饼图(plt.pie)
lbs=df["department"].value_counts().index
explodes=[0.1 if i=="sales" else 0 for i in lbs]
plt.pie(df["department"].value_counts(normalize=True),explode=explodes,labels=lbs,autopct="%1.1f%%",colors=sns.color_palette("Reds"))
# 如果想得出计数占比,可以加参数 normalize=True
plt.show()
normalize
以百分比的形式展示
有帮助的话,点个赞再走吧~
转载:https://blog.csdn.net/Yeexxxx___/article/details/115476307
查看评论