python打卡 DAY 6 描述性统计

目录

一.单特征可视化

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-56-10, ..., 20+五个区间

      • float('inf')表示无穷大,捕获所有大于20的值

    • labels:自定义分组标签

  • 意义:将连续的开户数量转换为有序分类变量

3.2. 计数柱状图绘制

sns.countplot(
    x='Open Accounts Group',
    hue='Credit Default',
    data=data
)
  • 可视化特性

    • X轴:开户数量分组(离散有序)

    • Y轴:计数(频数)

    • 颜色区分:信用违约状态(hue参数)

  • 图表类型选择

    • countplot适合展示分类变量的频数分布

    • 堆叠效果直观显示组内构成比例

  • @浙大疏锦行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值