python数据分析新手入门课程学习——(三)使用matplotlib和seaborn画图(来源:慕课网)

本文通过使用Python的数据处理库pandas和数据可视化库matplotlib及seaborn,对人力资源数据集进行了深入分析。首先导入并预处理数据,去除异常值,然后通过柱状图、直方图、箱线图、折线图和饼图等多种图表形式,展示了员工工资分布、满意度水平、评估分数、工作时长等关键指标的分布情况,揭示了员工离职率随工作年限变化的趋势,以及各部门在公司中的比例。
摘要由CSDN通过智能技术生成

一,导入数据

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("./HR.csv")
# 去除异常值
df =df.dropna(how="any",axis=0)
df = df[df["last_evaluation"]<=1][df["salary"]!="nme"][df["department"]!="sale"]
df.head(5)
df["salary"].value_counts()

二,柱状图


 1.使用matplotlib画图

#真正有意义的是柱状图的高度
# 横坐标是工资的长度
# 纵坐标是工资value_counts的值
plt.title("SALARY")
plt.xlabel("salary")
plt.ylabel("Number")
#x轴坐标值
plt.xticks(np.arange(len(df["salary"].value_counts())),df["salary"].value_counts().index)
#设置显示范围[xmin,xmax,ymin,ymax]
plt.axis([0,4,0,10000])
plt.bar(np.arange(len(df["salary"].value_counts()))+0.5,df["salary"].value_counts(),width=0.5)
#数字标在图表上,用zip函数把标注的位置和值都显示出来
for x,y in zip(np.arange(len(df["salary"].value_counts()))+0.5,df["salary"].value_counts()):
    plt.text(x,y,y,ha="center",va="bottom")
plt.show()

 

2.使用seaborn画图

#seaborn是matplotlib的封装,所以matplotlib命令在seaborn中也是可以用的
# 改变图表样式:"darkgrid","whitegrid","white","ticks"
sns.set_style(style="darkgrid")
# 设置字体context和字号font_scale.
# 字体:"paper","notebook","talk","poster"
sns.set_context(context="poster",font_scale=0.8)
# 设置颜色palette:"matplotlib colormap","color_palette()"
sns.set_palette("summer")
sns.set_palette([sns.color_palette("RdBu",n_colors=7)[5]])
# seaborn画图
#sns.countplot(x="salary",data=df)
# 多层绘图,以"department"为分割进行多层绘制
sns.countplot(x="salary",hue="department",data=df)

 


三,直方图

f = plt.figure()
# 添加子图(行,列,第几个图)
f.add_subplot(1,3,1)
# kde=False 去掉曲线
# hist = False 去掉直方图
sns.distplot(df["satisfaction_level"],bins=10,kde=True,hist=True)
f.add_subplot(1,3,2)
sns.distplot(df["last_evaluation"],bins=10)
f.add_subplot(1,3,3)
sns.distplot(df["average_monthly_hours"],bins=10)

结论:satisfaction_level大部分集中在右边,last_evaluation有个小的波动,每个月的工作时长基本上呈现两极分布


四,箱线图 

# saturation=0.75上四分位数
# whis=3(whis(也就是K)一般取1.5〜3)
sns.boxplot(y=df["satisfaction_level"],saturation=0.75,whis=3)


五,折线图 

#sub_df = df.groupby("time_spend_company").mean()
#sns.pointplot(sub_df.index,sub_df["left"])
# 另一种画法,还可以得到它的覆盖范围,更加直观
sns.pointplot(x="time_spend_company",y="left",data=df)
plt.show()

结论:..我们可以看到在公司呆5年的时候,离职率最高4年其次6年第三所以,5年前后离职率比较大随着时间越来越久,离职率会下来时间越短,离职率也不高。 


六,饼图

主要用来做结构分析 

# seaborn中无饼图的画法,我们使用matplotlib
#加上标签
lbs=df["department"].value_counts().index
#autopct加上数字
#单独给某个部门间隔加宽,以凸显这个部门
explodes=[0.1 if i == "sales" else 0 for i in lbs]
plt.pie(df["department"].value_counts(normalize=True),labels=lbs,explode=explodes,autopct="%1.1f%%",colors=sns.color_palette("Reds"))
plt.show()

其他图:散点图,气泡图,雷达图等 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值