python 单特征可视化 特征和标签关系可视化
目录
一.单特征可视化
1.1 连续特征箱线图/核密度直方图
笔记:
1.1.1 中文显示配置
1.1.2. 箱线图绘制
1.1.3.核密度直方图
1.2 离散特征柱状图
二. 特征和标签关系可视化
2.1 连续变量vs标签可视化方式:
箱线图 / 小提琴图 / 核密度估计直方图
2.2 离散变量vs标签可视化方式:柱状图
三、柱状图美化
笔记:
3.1. 数据分组(离散化)
3.2. 计数柱状图绘制
一.单特征可视化
1.1 连续特征箱线图/核密度直方图
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
data = pd.read_csv(r'data.csv')
# 查看连续特征
continuous_features = []
for i in data.columns:
if data[i].dtype != 'object':
continuous_features.append(i)
print(data[continuous_features].head())
# 设置全局字体为支持中文的字体 (例如 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
# 绘制箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x=data['Current Credit Balance'])
plt.title('当前信用余额 箱线图')
plt.xlabel('当前信用余额')
plt.show()
# 绘制核密度直方图
plt.figure(figsize=(10, 6))
sns.histplot(x=data['Current Credit Balance'] , kde=True , element='step')
plt.title('当前信用余额 箱线图')
plt.xlabel('当前信用余额')
plt.show()
笔记:
1.1.1 中文显示配置
plt.rcParams['font.sans-serif'] = ['SimHei']
这行代码将 matplotlib 的全局字体设置为支持中文的字体(例如SimHei)。
(1)plt.rcParams 是matplotlib的全局参数设置。
(2)’font.sans-serif’ 指定无衬线字体。
plt.rcParams['axes.unicode_minus'] = False
这行代码解决负号’-‘显示为方块的问题。
(1) ‘axes.unicode_minus’ 控制坐标轴上负号的显示方式。
(2) 设置为 False 后,负号将使用ASCII字符显示,而不是Unicode字符,从而避免显示为方块。
1.1.2. 箱线图绘制
- 可视化元素:
- 箱体:显示IQR(25%-75%分位数)
- 中线:中位数(50%分位数)
- 须线:1.5倍IQR范围内的正常值
- 离群点:超出须线的异常值
- 分析价值:
- 快速识别数据范围和异常值
- 比较不同组别的分布差异
1.1.3.核密度直方图
sns.histplot(x=data['Current Credit Balance'], kde=True, element='step')
- 参数解析:
kde=True:叠加核密度估计曲线element='step':生成阶梯状直方图- 可视化对比:

1.2 离散特征柱状图
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
data = pd.read_csv(r'data.csv')
# 查看离散特征
discrete_features = []
for i in data.columns:
if data[i].dtype == 'object':
discrete_features.append(i)
print(data[discrete_features].head())
# 设置全局字体为支持中文的字体 (例如 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
#离散特征绘制图--柱状图
sns.countplot(data['Years in current job'])
plt.title('工作时长 柱状图')
plt.xlabel('人数统计')
plt.ylabel('工作时长')
plt.show()
二. 特征和标签关系可视化
2.1 连续变量vs标签可视化方式:
箱线图 / 小提琴图 / 核密度估计直方图
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
data = pd.read_csv(r'data.csv')
# 连续变量vs标签可视化方式:箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(x=data['Credit Default'], y=data['Annual Income'])
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Credit Default')
plt.ylabel('Annual Income')
plt.show()
# 另一种可视化方式:小提琴图更加美观
plt.figure(figsize=(8, 6))
sns.violinplot(x=data['Credit Default'], y=data['Annual Income'])
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Credit Default')
plt.ylabel('Annual Income')
plt.show()
#核密度估计直方图
sns.histplot(x=data['Credit Default'], hue=data['Annual Income'], kde=True, element="step")
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Annual Income')
plt.ylabel('Count')
plt.show()
2.2 离散变量vs标签可视化方式:柱状图
# 柱状图
plt.figure(figsize=(8, 6))
sns.countplot(x=data['Number of Open Accounts'], hue=data['Credit Default'])
plt.title('Number of Open Accounts vs. Credit Default')
plt.xlabel('Number of Open Accounts')
plt.ylabel('Count')
plt.show()
三、柱状图美化
# 将 "Number of Open Accounts" 分组
data['Open Accounts Group'] = pd.cut(data['Number of Open Accounts'], bins=[0, 5, 10, 15, 20, float('inf')], labels=['0-5', '6-10', '11-15', '16-20', '20+']) # 根据你的数据调整分组
plt.figure(figsize=(10, 6))
sns.countplot(x='Open Accounts Group', hue='Credit Default', data=data)
plt.title('Number of Open Accounts (Grouped) vs. Credit Default')
plt.xlabel('Number of Open Accounts Group')
plt.ylabel('Count')
plt.show()
笔记:
3.1. 数据分组(离散化)
data['Open Accounts Group'] = pd.cut(
data['Number of Open Accounts'],
bins=[0, 5, 10, 15, 20, float('inf')],
labels=['0-5', '6-10', '11-15', '16-20', '20+']
)
- pd.cut()参数解析:
bins:定义分组边界0-5,6-10, …,20+五个区间float('inf')表示无穷大,捕获所有大于20的值labels:自定义分组标签- 意义:将连续的开户数量转换为有序分类变量
3.2. 计数柱状图绘制
sns.countplot(
x='Open Accounts Group',
hue='Credit Default',
data=data
)
- 可视化特性:
- X轴:开户数量分组(离散有序)
- Y轴:计数(频数)
- 颜色区分:信用违约状态(hue参数)
- 图表类型选择:
countplot适合展示分类变量的频数分布- 堆叠效果直观显示组内构成比例
- @浙大疏锦行
作者:沐兮兮兮