当前位置: 首页 > backend >正文

【数据可视化-26】基于人口统计与社会经济数据的多维度可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【数据可视化-26】基于人口统计与社会经济数据的多维度可视化分析

    • 一、引言
    • 二、数据探索
      • 2.1 数据集介绍
      • 2.2 数据清洗探索
    • 三、单维度特征可视化
      • 3.1 特征关系图
      • 3.2 年龄和收入分布
      • 3.3 婚姻状况柱状图
      • 3.4 各职业平均收入
      • 3.5 收入分布箱线图
      • 33.6 性别与年龄的小提琴图
    • 四、各个特征与收入关系的可视化
      • 4.1 年龄与收入的散点图
      • 4.2 教育水平与收入的散点图
      • 4.3 性别与收入的箱线图
      • 4.4 定居点规模与收入的关系
      • 4.5 教育程度与收入的关系图
      • 4.6 性别和教育与收入的关系
      • 4.7 职业和婚姻与收入的关系
      • 4.8 定居点规模和性别与收入的关系
      • 4.9 年龄组和职业与收入的关系
      • 4.10 教育和职业与收入的关系
      • 4.11 性别、婚姻状况和教育与收入的关系
      • 4.12 定居点规模和职业与收入的关系
      • 4.13 年龄组和性别与收入的关系

一、引言

  在社会经济研究中,数据可视化是揭示变量间关系、探索数据模式的强大工具。本文将利用包含2000个人口统计和社会经济信息的数据集,从多个维度进行可视化分析,深入探讨影响收入分配的因素以及各变量之间的关系。以下分析包括完整的Python代码实现,可供读者参考和复现。

二、数据探索

2.1 数据集介绍

  该数据集包含以下变量:

  • ID:唯一标识符
  • 性别:0(女性)和1(男性)
  • 婚姻状况:单身或非单身
  • 年龄:个人年龄
  • 教育程度:最高学历
  • 收入:年收入
  • 职业:工作分类
  • 定居点规模:居住区域类型

2.2 数据清洗探索

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 加载数据
df = pd.read_csv('population_data.csv')  # 请替换为实际文件路径
df['Marital status'] = df['Marital status'].apply(lambda x:x.replace(" (divorced / separated / married / widowed)",""))
df.info()


  从上图我们可以发现:

  • 数据有8个维度;
  • 婚姻状况、教育程度、职业为类别型变量,其它的特征为数字型变量;
  • 数据中一共有2000个样本,且缺失值的存在

三、单维度特征可视化

3.1 特征关系图

sns.pairplot(df,hue='Sex')

3.2 年龄和收入分布

plt.figure(figsize=(12, 5))plt.subplot(1, 2, 1)
sns.histplot(df['Age'], kde=True, color='teal', bins=40)
plt.title('Age Distribution')
plt.xlabel('Age')plt.subplot(1, 2, 2)
sns.histplot(df['Income'], kde=True, color='coral', bins=40)
plt.title('Income Distribution')
plt.xlabel('Income')plt.tight_layout()
plt.show()

3.3 婚姻状况柱状图

plt.figure(figsize=(8, 5))
sns.countplot(x='Marital status', data=df)
plt.title('Marital Status Distribution')
plt.xlabel('Marital Status')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

3.4 各职业平均收入

plt.figure(figsize=(10, 6))
order = df.groupby('Occupation')['Income'].mean().sort_values().index
sns.barplot(x='Income', y='Occupation', data=eda_df)
plt.title('Average Income by Occupation')
plt.xlabel('Average Income')
plt.ylabel('Occupation')
plt.tight_layout()
plt.show()

3.5 收入分布箱线图

plt.figure(figsize=(8, 6))
sns.boxplot(y='Income', data=df)
plt.title('Income Distribution Box Plot')
plt.ylabel('Income')
plt.tight_layout()
plt.show()

33.6 性别与年龄的小提琴图

plt.figure(figsize=(8, 6))
sns.violinplot(x='Gender', y='Age', data=df)
plt.title('Age Distribution by Gender')
plt.xlabel('Gender')
plt.ylabel('Age')
plt.tight_layout()
plt.show()

四、各个特征与收入关系的可视化

4.1 年龄与收入的散点图

# 11. 年龄与收入的散点图
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Age', y='Income', data=df, hue='Sex')
plt.title('Age vs Income Relationship')
plt.xlabel('Age')
plt.ylabel('Income')
plt.legend(title='Gender')
plt.tight_layout()
plt.show()

4.2 教育水平与收入的散点图

plt.figure(figsize=(10, 6))
sns.stripplot(x='Education', y='Income', data=df)
plt.title('Income Distribution Across Education Levels')
plt.xlabel('Education Level')
plt.ylabel('Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.3 性别与收入的箱线图

plt.figure(figsize=(8, 6))
sns.boxplot(x='Sex', y='Income', data=df)
plt.title('Income Distribution by Gender')
plt.xlabel('Gender')
plt.ylabel('Income')
plt.tight_layout()
plt.show()

4.4 定居点规模与收入的关系

plt.figure(figsize=(10, 6))
sns.boxplot(x='Settlement size', y='Income', data=df)
plt.title('Income Distribution by Settlement Size')
plt.xlabel('Settlement Size')
plt.ylabel('Income')
plt.tight_layout()
plt.show()

4.5 教育程度与收入的关系图

education_income_corr = df.groupby('Education')['Income'].mean().reset_index()
plt.figure(figsize=(8, 6))
sns.barplot(x='Education', y='Income', data=education_income_corr)
plt.title('Average Income by Education Level')
plt.xlabel('Education Level')
plt.ylabel('Average Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.6 性别和教育与收入的关系

plt.figure(figsize=(12, 6))
sns.boxplot(x='Education', y='Income', hue='Gender', data=df)
plt.title('Income Variation with Education and Gender')
plt.xlabel('Education Level')
plt.ylabel('Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.7 职业和婚姻与收入的关系

plt.figure(figsize=(12, 6))
sns.boxplot(x='Occupation', y='Income', hue='Marital status', data=df)
plt.title('Income Variation with Occupation and Marital Status')
plt.xlabel('Occupation')
plt.ylabel('Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.8 定居点规模和性别与收入的关系

plt.figure(figsize=(10, 6))
sns.barplot(x='Settlement size', y='Income', hue='Gender', data=df)
plt.title('Income Variation with Settlement Size and Gender')
plt.xlabel('Settlement Size')
plt.ylabel('Average Income')
plt.tight_layout()
plt.show()

4.9 年龄组和职业与收入的关系

# 创建年龄组
eda_df['Age Group'] = pd.cut(eda_df['Age'], bins=[0, 20, 30, 40, 50, 60, np.inf], labels=['0-20', '21-30', '31-40', '41-50', '51-60', '60+'])
plt.figure(figsize=(12, 6))
sns.boxplot(x='Occupation', y='Income', hue='Age Group', data=df, palette='viridis')
plt.title('Income Variation with Occupation and Age Group')
plt.xlabel('Occupation')
plt.ylabel('Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.10 教育和职业与收入的关系

plt.figure(figsize=(12, 6))
sns.barplot(x='Education', y='Income', hue='Occupation', data=df, palette='tab20')
plt.title('Income Variation with Education and Occupation')
plt.xlabel('Education Level')
plt.ylabel('Average Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.11 性别、婚姻状况和教育与收入的关系

plt.figure(figsize=(12, 6))
sns.boxplot(x='Education', y='Income', hue='Gender', data=df[eda_df['Marital status'] == 'Married'], palette='Set2')
plt.title('Income Variation with Education and Gender (Married Individuals)')
plt.xlabel('Education Level')
plt.ylabel('Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.12 定居点规模和职业与收入的关系

plt.figure(figsize=(12, 6))
sns.boxplot(x='Occupation', y='Income', hue='Settlement size', data=df, palette='coolwarm')
plt.title('Income Variation with Occupation and Settlement Size')
plt.xlabel('Occupation')
plt.ylabel('Income')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.13 年龄组和性别与收入的关系

plt.figure(figsize=(10, 6))
sns.barplot(x='Age Group', y='Income', hue='Sex', data=df, palette='pastel')
plt.title('Income Variation with Age Group and Gender')
plt.xlabel('Age Group')
plt.ylabel('Average Income')
plt.tight_layout()
plt.show()

  从以上可视化结果可以看出:

  • 年龄与收入:通常存在一定的正相关关系,但也会因职业和教育水平而异。
  • 性别与收入:可能存在差异,帮助识别性别收入差距。
  • 婚姻状况:不同婚姻状况对收入的影响可能反映出社会经济模式。
  • 教育水平:与收入显著相关,较高教育水平通常对应较高收入。
  • 职业与收入:不同职业的收入水平差异明显。
  • 定居点规模:反映城乡收入差异,城市地区通常收入更高。

  以上分析为理解影响收入分配的关键因素提供了多维度视角,并揭示了各变量之间的潜在关系,为进一步的社会经济研究和政策制定提供了数据支持。


http://www.xdnf.cn/news/1576.html

相关文章:

  • 【LLM+Code】Windsurf Agent 模式PromptTools详细解读
  • JAVA---面向对象(上)
  • 5.3.1 MvvmLight以及CommunityToolkit.Mvvm介绍
  • Redis安装及入门应用
  • 第53.5讲 | 小项目实战:用 SHAP 值解释农作物产量预测模型 [特殊字符][特殊字符]
  • SpringBoot整合AOP
  • Tomcat:从零理解Java Web应用的“心脏”
  • 健康养生小窍门
  • 微高压氧舱VS高压氧舱:氧气疗法的“双生花”如何重塑健康?
  • 【前端】基于 Promise 的 HTTP 客户端工具Axios 详解
  • MVCC详解
  • 【前端】【业务场景】【面试】在前端开发中,如何实现文件的上传与下载功能,并且处理可能出现的错误情况?
  • 机械手排列定位设备 PLC梯形图流程
  • 乐聚机器人与地瓜机器人达成战略合作,联合发布Aelos Embodied具身智能
  • UE5 Assimp 自用
  • ragflow部署以及api调用整理
  • java—13 RocketMQ
  • 拥抱健康生活,解锁养生之道
  • 某城乡老旧房屋试点自动化监测服务项目
  • 关于边缘计算盒子的外部接口保护
  • Python 的 datetime 模块使用详解
  • Redisson实战:分布式系统中的五大典型应用场景
  • 来访登记二维码生成
  • 数据一致性问题剖析与实践(二)——单机事务的一致性问题
  • MySQL的日志--Redo Log【学习笔记】
  • OpenCV 图形API(60)颜色空间转换-----将图像从 YUV 色彩空间转换为 RGB 色彩空间函数YUV2RGB()
  • PyQt6实例_A股财报数据维护工具_使用
  • 【TeamFlow】4.3.4 长度单位
  • 【大数据技术-联邦集群RBF】DFSRouter日志一直打印修改Membership为EXPIRED状态的日志分析
  • UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025