Python训练营第六天学习打卡记录

#日拱一卒,功不唐捐!

​​​​​​@浙大疏锦行

day6

数据初步可视化

内容回顾:

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

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

0.初步分析数据,找到连续特征

#查看有什么特征
import pandas as pd
data = pd.read_csv('data.csv')  
#读取数据   
data.info()

#找到所有的连续特征(方便画图)
"""#ai版写法(供参考)
continuous_features = data.select_dtypes(include=['int64', 'float64']).columns.tolist()
continuous_features
"""
continuous_features = []
for i in data.columns:
    if data[i].dtype !='object':
        continuous_features.append(i)
continuous_features

绘制相应图像步骤

1.指定相应类型,比如折现图、散点图、柱状图等

2.指定图的坐标轴,x/y轴,并传入数据

3.指定图的标题,xy的标签及表头

1.单特征分布可视化

(连续箱线图、离散直方图、连续直方图核密度估计边缘柔和)

(1)连续变量箱线图

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 设置全局字体为支持中文的字体 (例如 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

sns.boxplot(x=data['Monthly Debt'])  # 绘制箱线图
plt.title('月度债务 箱线图')  # 使用中文标题
plt.xlabel('月度债务')  # 使用中文标签
plt.show()

(2)离散变量直方图

#绘制直方图(离散数据)
sns.histplot(data['Home Ownership'])  # 绘制直方图
plt.title('房屋所有权 直方图')  # 使用中文标题
plt.xlabel('房屋所有权')  # 使用中文标签    
plt.ylabel('数量')  # 使用中文标签
plt.show()

(3)连续直方图(核密度估计)

#绘制核密度直方图(连续数据)
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 设置全局字体为支持中文的字体 (例如 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号'-'显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
# 绘制核密度直方图
sns.histplot(data['Monthly Debt'], kde=True,fill=True)  # 绘制核密度图
plt.title('月度债务 核密度直方图')  # 使用中文标题
plt.xlabel('月度债务')  # 使用中文标签
plt.ylabel('数量')  # 使用中文标签
plt.show()

2.绘制特征和标签的关系(连续和离散)

(1)标签离散,特征连续

选择标签违约/不违约,特征选择月度债务

#箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(x='Credit Default', y='Monthly Debt', data=data)
plt.title('信用违约与月度债务的箱线图')  # 使用中文标题
plt.xlabel('信用违约')  # 使用中文标签
plt.ylabel('月度债务')  # 使用中文标签
plt.show()

#小提琴图(更美观)
plt.figure(figsize=(10, 6))
sns.violinplot(x='Credit Default', y='Monthly Debt', data=data)
plt.title('信用违约与月度债务的小提琴图')  # 使用中文标题
plt.xlabel('信用违约')  # 使用中文标签
plt.ylabel('月度债务')  # 使用中文标签
plt.show()

#核密度估计直方图
plt.figure(figsize=(10, 6))
sns.histplot(x='Monthly Debt',hue='Credit Default', data=data, kde=True, element='step')
plt.title('信用违约与月度债务的核密度估计直方图')  # 使用中文标题
plt.xlabel('月度债务')  # 使用中文标签
plt.ylabel('数量')  # 使用中文标签
plt.show()
#其中hue参数用于根据“信用违约”列的值对数据进行分组,从而在同一图中绘制不同组的核密度估计。
#element='step'参数用于将直方图的边缘设置为阶梯形状,使其更易于区分不同组之间的重叠部分。

其中hue参数用于根据“信用违约”列的值对数据进行分组,从而在同一图中绘制不同组的核密度估计。

element='step'参数用于将直方图的边缘设置为阶梯形状,使其更易于区分不同组之间的重叠部分。

(2)标签离散,特征离散

#绘制 Home Ownership 和 Credit Default 的关系图
plt.figure(figsize=(10, 6))
sns.countplot(x='Home Ownership', hue='Credit Default', data=data)
plt.title('房屋所有权与信用违约的关系图')  # 使用中文标题
plt.xlabel('房屋所有权')  # 使用中文标签
plt.ylabel('数量')  # 使用中文标签
plt.legend(title='信用违约')  # 添加图例标题
plt.show()

#绘制Years in current job 和 Credit Default 的关系图   
plt.figure(figsize=(10, 6))
sns.countplot(x='Years in current job', hue='Credit Default', data=data)    
plt.title('当前工作年限与信用违约的关系图')  # 使用中文标题
plt.xlabel('当前工作年限')  # 使用中文标签
plt.ylabel('数量')  # 使用中文标签
plt.legend(title='信用违约')  # 添加图例标题
plt.show()

# 绘制 Number of Open Accounts 和 Credit Default 的关系图
plt.figure(figsize=(10, 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" 分组
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()

今日疑问:

在进行离散数据分组的时候出现了报错,ai提示需要进行数值化处理,那么该如何处理呢?

采用ai的处理方式,结果代码结果是空白。询问学长后发现,看来要进一步学习有关映射的知识。

作者:宸汐Fish_Heart

物联沃分享整理
物联沃-IOTWORD物联网 » Python训练营第六天学习打卡记录

发表回复