day 6
前已经说过,对于数据可视化一般会进行如下操作
1. 单特征分布可视化
2. 特征与标签关系可视化
3. 特征与特征关系可视化
单特征分布可视化
找到连续的特征
# 首先查看都有什么特征
import pandas as pd
data=pd.read_csv('/Users/gj/东财-学习/Python60DaysChallenge-main/day31 文件的拆分/data/raw/data.csv')
data.head()
# 找到所有的连续特征,之前的写法
continuous_features = []
for i in data.columns:
if data[i].dtype !='object':
continuous_features.append(i)
continuous_features
#实际上,实现上述操作,更简单的方法如下:借助select—_dtypes方法
continuous_features = data.select_dtypes(include=['float64','int64']).columns.tolist()
continuous_features
初识matplotlib库
1. 需要指定图的类型,比如折线图,散点图,柱状图等
2. 需要指定图的坐标轴,比如x轴和y轴,并且传入数据
3. 需要指定图的标题,比如x轴和y轴的标签,以及标题
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
sns.boxplot(x=data['Annual Income'])
plt.title('Annual Income 的箱线图')
plt.xlabel('Annual Income')
plt.show()
解决中文字符不现实的问题
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# 设置全局字体为支持中文的字体(例如SimHEi)
plt.rcParams['font.sans-serif'] = ['SimHei']
#解决负号‘-’ 显示方框的问题
plt.rcParams['axes.unicode_minus']=False
sns.boxplot(x=data['Annual Income'])
plt.title('年收入 箱线图')
plt.xlabel('年收入')
plt.show()
数值变量有的是连续变量,有的是离散变量
# 绘制直方图
sns.histplot(data['Years in current job'])
plt.title("在当前工作年限 直方图")
plt.xlabel("在当前工作年限")
plt.ylabel("员工数量")
plt.show()
# 很多新的参数恶意调整图像,到那时不需要记忆,用的时候问ai
sns.histplot(x=data['Years in current job'])
plt.title("在当前工作年限 直方图")
plt.xlabel("在当前工作年限")
plt.ylabel("员工数量")
plt.xticks(rotation=45,ha='right')# 旋转45度,并右对齐
plt.tight_layout()# 自动调整图像,防止图像重叠
plt.show()
绘制特征和标签的关系
标签是离散的,特征如果是连续的应该绘制什么图?
可以分别考虑违约和不违约情况下的连续特征,画2个箱线图
# 另一种可视化方法,箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(x='Credit Default', y='Annual Income', data=data)
plt.title('Credit Default vs. Annual Income')
plt.xlabel('Credit Default')
plt.ylabel('Annual Income')
plt.show()
# 另一种可视化方式:小提琴
# 相较于箱线图,小提琴更好看
plt.figure(figsize=(8, 6))
sns.violinplot(x='Credit Default', y='Annual Income', data=data)
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Credit Default')
plt.ylabel('Annual Income')
plt.show()
但是实际上连续变量也可以绘制类似于直方图的图像,可以用核密度估计来完成边缘的柔和化
# 绘制annual Income he credit default 的关系图
plt.figure(figsize=(8, 6))
sns.histplot(x='Annual Income', hue='Credit Default', data=data, kde=True,element="step")
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Annual Income')
plt.ylabel('Count')
plt.show()
绘制离散变量和标签的关系
# 绘制number of open accpunts 和credit default 的关系图
plt.figure(figsize=(8, 6))
sns.countplot(x='Number of Open Accounts', hue='Credit Default', data=data)#
plt.title('Number of Open Accounts vs. Credit Default')
plt.xlabel('Number of Open Accounts')
plt.ylabel('Count')
plt.show()
可以看到如果number of open accounts的值太多 就会很散,不美观,所以这时候采取分组的措施
#将“number of open accounts”分组
# bins 是定义分箱的区间范围。这里的区间是 [0, 3]、(3, 5]、(5, 7]、(7, 10]、(10, ∞)。
#数值在这个范围内的会被分到相应的区间。
# float('inf') 代表正无穷大,表示所有大于 10 的数都属于最后一个区间。
data['Number of Open Accounts'] = pd.cut(data['Number of Open Accounts'], bins=[0, 3, 5, 7, 10, float('inf')], labels=['0-3', '3-5', '5-7', '7-10', '10+'])
# 绘制number of open accounts 和credit default 的关系图
plt.figure(figsize=(8, 6))
sns.countplot(x='Number of Open Accounts', hue='Credit Default', data=data)#以信用是否违约为分类条件,按颜色区分。即在每个账户分组中,显示违约和未违约两类人数。
plt.title('Number of Open Accounts vs. Credit Default')
plt.xlabel('Number of Open Accounts')
plt.ylabel('Count')
plt.show()
day6打卡
最新推荐文章于 2025-12-22 13:59:14 发布
161

被折叠的 条评论
为什么被折叠?



