Python打卡训练营学习记录Day6

数据初步可视化

内容回顾:

  1. 单特征可视化:连续变量箱线图(还说了核密度直方图)、离散特征直方图
  2. 特征和标签关系可视化
  3. 箱线图美化--->直方图

作业:去针对其他特征绘制单特征图和特征和标签的关系图,并且试图观察出一些有意思的结论

#导入库并查看数据
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv('data.csv')
print(data.head())
#找到连续特征
continuous_features = []
for i in data.columns:
    if data[i].dtype!= 'object':
        continuous_features.append(i)
print(continuous_features)
# 设置全局字体为支持中文的字体 (例如 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
#对年收入进行箱线图分析
sns.boxplot(x=data['Annual Income'])
plt.title('年收入的箱线图')
plt.xlabel('Annual Income')
plt.show()

#对未结清账户数量进行箱线图分析
sns.boxplot(x=data['Number of Open Accounts'])
plt.title('未结清账户数量的箱线图')
plt.xlabel('Tax Liens')
plt.show()

#对信用记录年限进行箱线图分析
sns.boxplot(x=data['Years of Credit History'])
plt.title('信用记录年限的箱线图')
plt.xlabel('Years of Credit History')
plt.show()

#对当前工作年限进行条形图分析
sns.countplot(x=data['Years in current job'])
plt.title('当前工作年限的条形图')
plt.xlabel('Years in current job')
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('Annual Income vs. Credit Default')
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()
# 绘制年收入和违约的关系图
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()

# 绘制未结清账户数量和违约的关系图
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()

总代码

#导入库并查看数据
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv('data.csv')
print(data.head())
#找到连续特征
continuous_features = []
for i in data.columns:
    if data[i].dtype!= 'object':
        continuous_features.append(i)
print(continuous_features)
# 设置全局字体为支持中文的字体 (例如 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
#对年收入进行箱线图分析
sns.boxplot(x=data['Annual Income'])
plt.title('年收入的箱线图')
plt.xlabel('Annual Income')
plt.show()
#对未结清账户数量进行箱线图分析
sns.boxplot(x=data['Number of Open Accounts'])
plt.title('未结清账户数量的箱线图')
plt.xlabel('Tax Liens')
plt.show()
#对信用记录年限进行箱线图分析
sns.boxplot(x=data['Years of Credit History'])
plt.title('信用记录年限的箱线图')
plt.xlabel('Years of Credit History')
plt.show()
#找到离散特征
lists_final = data.columns.difference(continuous_features)
print(lists_final)
#对当前工作年限进行条形图分析
sns.countplot(x=data['Years in current job'])
plt.title('当前工作年限的条形图')
plt.xlabel('Years in current job')
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('Annual Income vs. Credit Default')
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()
# 绘制年收入和违约的关系图
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()
# 绘制未结清账户数量和违约的关系图
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()

@浙大疏锦行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值