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

【数据可视化-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()

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

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

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


相关文章:

  • react-09React生命周期
  • wordpress学习笔记
  • AI与智能能源管理:如何通过AI优化能源分配和消耗?
  • Python----深度学习(基于深度学习Pytroch线性回归和曲线回归)
  • 【数据可视化-25】时尚零售销售数据集的机器学习可视化分析
  • vue3,element ui框架中为el-table表格实现自动滚动,并实现表头汇总数据
  • 从内核到应用层:深度剖析信号捕捉技术栈(含sigaction系统调用/SIGCHLD回收/volatile内存屏障)
  • ROS 快速入门教程03
  • 运维打铁:Centos 7使用yum安装 Redis 5
  • 【FAQ】PCoIP 会话后物理工作站本地显示器黑屏
  • centos挂载新的硬盘
  • Docker配置DNS方法详解及快速下载image方法
  • SpringBoot自定义拦截器以及多个拦截器执行顺序
  • 安卓adb shell串口基础指令
  • 【金仓数据库征文】加速数字化转型:金仓数据库在金融与能源领域强势崛起
  • 修改el-select背景颜色
  • 第9章 多模态大语言模型
  • vue element使用el-table时,切换tab,table表格列项发生错位问题
  • mysql快速在不同库中执行相同的sql
  • 金融机构典型欺诈场景
  • 报告:到2030年我国无人机产业将率先实现万亿规模
  • 多家媒体及网红走进云南曲靖沾益:感受珠江源头
  • 5145篇报道中的上海车展:40年,什么变了?
  • 准“90后”山西壶关县委常委、副县长高雅亭赴北京密云挂职
  • 交通枢纽、产业升级,上海松江新城有这些发展密码
  • 沈阳市委常委马原出任阜新市委副书记、市政府党组书记