python可视化--实战案例1各州各种族人口数分布

数据来源

设置画板

import warnings
import matplotlib.pyplot as plt
%matplotlib inline

# 屏蔽代码运行过程中出现的警告信息,主要是屏蔽 pandas 的 .loc 警告问题
warnings.filterwarnings("ignore")

fontsize = 20
plt.rcParams['xtick.labelsize'] = fontsize
plt.rcParams['ytick.labelsize'] = fontsize
plt.rcParams['axes.labelsize'] = fontsize
plt.rcParams['axes.titlesize'] = fontsize
plt.rcParams['legend.fontsize'] = fontsize
plt.rcParams['legend.frameon'] = False  # 去除图例边框
plt.rcParams['axes.unicode_minus'] = False  # 显示负数
plt.rcParams['axes.spines.right'] = False  # 去除右侧坐标轴
plt.rcParams['axes.spines.top'] = False  # 去除顶部坐标轴

数据准备

#数据导入
import pandas as pd
df = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/3023/American_Race_Gender_Population.csv')
df.head()
#认识数据:本数据集来源于美国人口普查局与美国国家卫生统计中心,该数据集统计了美国自 1990 至 2019 年期间,各年度全美 51 州各年度性别(Gender)、种族(Race)、年龄段(Age Group)的人口数(Population),数据集中的 Mean Age 字段根据 Age Group 求算术平均得到。

各州各种族人口数分布

目标:想做一个在不同州不同种族上人口数的散点图分布。步骤:

  1. 将数据集按照州(State)、种族(Race)进行人口数(Population)聚合并按照人口数升序排序。
  2. 聚合后,将聚合数据集中的 State、Race 特征分别映射至散点图 x、y 坐标,将 Population 人口数特征映射至点的颜色(c)和大小(s)。
  3. 还有年份这一特征,选择最大最小两个年份(1990 和 2019 )作图。
plt.rcParams['figure.figsize'] = (20, 5)

for year in [1990, 2019]:
    data = df.loc[df['Year'] == year]

    # 各州按照总人口数升序排序
    state_order = data.groupby(['State'])[
        'Population'].sum().sort_values().index
    # 将 State 字段设置为有序字段,astype:转换数组的数据类型。
    data['State'] = data['State'].astype(
        pd.api.types.CategoricalDtype(state_order, ordered=True))

    # 获取州、种族的聚合结果,并按州升序排序
    data = data.groupby(['State', 'Race'], as_index=False)[
        'Population'].sum().sort_values(['State'])

    plt.scatter(
        x=data['State'],
        y=data['Race'],
        c=data['Population'],
        s=data['Population']*0.0001,
        ec='tab:blue',
        cmap=plt.cm.Accent,
        alpha=0.8)
	#c指colors颜色,s表示点的大小,cmap指定某个colormap值
	#plt.gca可以通过这个改图标的边框属性
    ax = plt.gca()

    # 将x轴刻度标签旋转90度,刻度字太多
    ax.tick_params(axis='x', rotation=90)
    # 调节y轴显示范围
    ax.set_ylim(-0.5, 3.5)
    plt.title('Population Distribution of States of American in Year %d' % year)
    plt.show()  # 关闭当前图层以绘制下一幅图

做出图了最好给出一些结论。
例如,州对比:在2019年,人口数最多的州是哪些,最少的州是哪些。
种族对比:不同种类的人口数是怎么排名的
各州人口变迁:1990年与2019年,有哪些变化趋势

人口与人口增长率

通过数据透视计算1990到2019的各州人口增长率(Pupulation Changed %),通过数据聚合计算各州 2019 年总人口数(Population)

data = df.loc[(df['Year'] == 1990) | (df['Year'] == 2019)]
# 计算美国各州人口增长率
#pivot_table数据透视表,可以查询每个参数含义
pop_change = data.pivot_table(
    index='State'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值