🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

【数据可视化-22】脱发因素探索的可视化分析
-
- 一、项目背景
- 二、数据说明
- 三、代码实现与分析
-
- [1. 导入Python库并读取数据](#1. 导入Python库并读取数据)
- [2. 数据预览与统计](#2. 数据预览与统计)
- [3. 分类变量的唯一值](#3. 分类变量的唯一值)
- [4. 可视化分析](#4. 可视化分析)
- [4.1 特征字段可视化](#4.1 特征字段可视化)
- [4.2 脱发因素的探究](#4.2 脱发因素的探究)
-
- [4.2.1 家族遗传与脱发关系](#4.2.1 家族遗传与脱发关系)
- [4.2.2 荷尔蒙变化与脱发关系](#4.2.2 荷尔蒙变化与脱发关系)
- [4.2.3 压力水平与脱发关系](#4.2.3 压力水平与脱发关系)
- [4.2.4 不良护发习惯与脱发关系](#4.2.4 不良护发习惯与脱发关系)
- [4.2.5 营养不足与脱发关系](#4.2.5 营养不足与脱发关系)
- [4.2.6 年龄与脱发关系](#4.2.6 年龄与脱发关系)
- 四、总结
一、项目背景
脱发是许多人关心的问题,它不仅影响外貌,还可能反映健康状况。本文将通过可视化分析,探索多种因素与脱发之间的关系,帮助大家更好地了解脱发的原因。本项目旨在通过数据探索分析,挖掘遗传、荷尔蒙变化、医疗状况等因素与脱发之间的潜在关联,为个体健康管理提供参考。
二、数据说明
数据集包含以下字段:
- Id:标识符
- Genetics:是否有秃头家族史
- Hormonal Changes:是否经历了荷尔蒙变化
- Medical Conditions:可能导致秃头的病史
- Medications & Treatments:可能导致脱发的药物治疗史
- Nutritional Deficiencies:营养不足情况
- Stress:压力水平
- Age:年龄
- Poor Hair Care Habits:是否存在不良的护发习惯
- Environmental Factors:是否暴露于可能导致脱发的环境
- Smoking:是否吸烟
- Weight Loss:是否经历了显著的体重减轻
- Hair Loss:是否脱发
三、代码实现与分析
1. 导入Python库并读取数据
python
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 数据路径
data_path = "/home/mw/input/hair2961/Predict Hair Fall.csv"
# 读取数据
data = pd.read_csv(data_path)
2. 数据预览与统计
python
# 查看数据维度
print(f"数据维度:{data.shape}")
# 查看数据信息
print(data.info())
# 查看缺失值
print(data.isna().sum())
# 查看重复值
print(f"重复值数量:{data.duplicated().sum()}")
# 基本统计量
print(data.describe())


从数据信息可以看出,数据集包含999条记录和13个字段,没有缺失值和重复值,数据质量较好
3. 分类变量的唯一值
python
categorical_columns = data.select_dtypes(include=['object']).columns.tolist()
for col in categorical_columns:
print(f"{col}:")
print(data[col].unique())
print('-'*50)

4. 可视化分析
4.1 特征字段可视化
python
plt.figure(figsize=(40,20))
plt.subplot(3,4,1)
sns.countplot(x=data['Genetics'])
plt.title('秃头家族史分布')
plt.xlabel('是否有秃头家族史')
plt.ylabel('频数')
......
plt.subplot(3,4,(11,12))
sns.countplot(x=data['Nutritional Deficiencies '])
plt.title('是营养不足情况分布')
plt.xlabel('营养不足情况')
plt.ylabel('频数')
plt.tight_layout()
plt.show()

在此数据集中,我们可以发现有秃头家族史的人数大于没有秃头家族史的人数,经历了荷尔蒙变化的人数大于未经历荷尔蒙变化的人数,在压力水平中,显示了压力水平为"Low"、"Moderate"和"High"的比例,其中每一部分都占了相近的比例,显示受访者在压力水平上的分布较为均匀,秃头病史中,无数据和斑秃的人比较多,湿疹和癣的人比较少等等;
4.2 脱发因素的探究
4.2.1 家族遗传与脱发关系
python
# 是否有秃头家族史与脱发的关系
genetics_and_hair_loss = pd.crosstab(data['Genetics'], data['Hair Loss'])
genetics_and_hair_loss_percent = genetics_and_hair_loss.div(genetics_and_hair_loss.sum(axis=1), axis=0) * 100
plt.figure(figsize=(10, 6))
genetics_and_hair_loss_percent[1].plot(kind='bar')
plt.title('是否有秃头家族史与脱发的关系')
plt.xlabel('是否有秃头家族史')
plt.ylabel('脱发占比')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()

从图中可以看出,有秃头家族史的人群中,脱发占比略高于没有家族史的人群。
4.2.2 荷尔蒙变化与脱发关系
python
# 是否经历了荷尔蒙变化与脱发的关系
hormonal_changes_and_hair_loss = pd.crosstab(data['Hormonal Changes'], data['Hair Loss'])
hormonal_changes_and_hair_loss_percent = hormonal_changes_and_hair_loss.div(hormonal_changes_and_hair_loss.sum(axis=1), axis=0) * 100
plt.figure(figsize=(10, 6))
hormonal_changes_and_hair_loss_percent[1].plot(kind='bar')
plt.title('是否经历了荷尔蒙变化与脱发的关系')
plt.xlabel('是否经历了荷尔蒙变化')
plt.ylabel('脱发占比')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()

从图中可以看出,经历荷尔蒙变化的人群与未经历的人群在脱发占比上差异不大。
4.2.3 压力水平与脱发关系
python
# 压力水平与脱发的关系
stress_and_hair_loss = pd.crosstab(data['Stress'], data['Hair Loss'])
stress_and_hair_loss_percent = stress_and_hair_loss.div(stress_and_hair_loss.sum(axis=1), axis=0) * 100
plt.figure(figsize=(10, 6))
stress_and_hair_loss_percent[1].plot(kind='bar')
plt.title('压力水平与脱发的关系')
plt.xlabel('压力水平')
plt.ylabel('脱发占比')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()

从图中可以看出,中等压力水平的人群脱发占比略高于其他压力水平。
4.2.4 不良护发习惯与脱发关系
python
# 不良的护发习惯与脱发的关系
poor_hair_care_and_hair_loss = pd.crosstab(data['Poor Hair Care Habits '], data['Hair Loss'])
poor_hair_care_and_hair_loss_percent = poor_hair_care_and_hair_loss.div(poor_hair_care_and_hair_loss.sum(axis=1), axis=0) * 100
plt.figure(figsize=(10, 6))
poor_hair_care_and_hair_loss_percent[1].plot(kind='bar')
plt.title('不良的护发习惯与脱发的关系')
plt.xlabel('是否存在不良的护发习惯')
plt.ylabel('脱发占比')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()

从图中可以看出,存在不良护发习惯的人群中,脱发占比略低于无不良习惯的人群。
4.2.5 营养不足与脱发关系
python
# 营养不足情况与脱发的关系
nutrition_and_hair_loss = pd.crosstab(data['Nutritional Deficiencies '], data['Hair Loss'])
nutrition_and_hair_loss_percent = nutrition_and_hair_loss.div(nutrition_and_hair_loss.sum(axis=1), axis=0) * 100
plt.figure(figsize=(15, 8))
nutrition_and_hair_loss_percent[1].plot(kind='bar')
plt.title('营养不足情况与脱发的关系')
plt.xlabel('营养不足情况')
plt.ylabel('脱发占比')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

从图中可以看出,缺乏锌、维生素D、生物素等营养素的人群中,脱发占比相对较高。
4.2.6 年龄与脱发关系
python
plt.figure(figsize=(15, 8))
# 年龄与脱发的关系
sns.boxplot(x=data['Hair Loss'],y=data['Age'])
plt.title('年龄与脱发的关系')
plt.xlabel('是否脱发')
plt.ylabel('年龄')

从图中可以看出,不脱发的人比脱发的人年龄要大(中位数更高一点),后续还可以探索其它因素对于脱发的影响,
四、总结
通过本次可视化分析,我们发现以下因素与脱发有较强关联:
- 家族遗传:有秃头家族史的人群脱发风险较高。
- 营养状况:缺乏锌、维生素D等营养素的人群更容易脱发。
- 年龄和压力:年龄增长和中等压力水平可能增加脱发风险。
需要注意的是,部分因素如不良护发习惯与脱发的关系并不显著,这可能需要进一步的分析和研究来验证。希望本篇博客能为读者提供有价值的参考!