利用Python进行数据分析—美国1880-2010年的婴儿名字

美国1880-2010年的婴儿名字

美国社会保障局(SSA)提供了从1880年至现在的婴儿姓名频率的数据。可以使用这些数据做很多事情:
根据给定的名字对婴儿名字随时间的比例进行可视化
确定一个名字的相对排位
确定每年最受欢迎的名字,或者流行程度最高或最低的名字

我们对美国1880-2010年的婴儿名字进行了一些分析。以下是分析的主要结果:

每年男性和女性婴儿的总出生人数:

total_births = names.pivot_table("births", index="year", columns="sex", aggfunc=sum)
total_births.plot(title="Total births by sex and year")

在这里插入图片描述

每个名字在每年中的占比:

names = names.groupby(["year", "sex"], group_keys=False).apply(add_prop)

在这里插入图片描述

获取每年最受欢迎的1000个名字:

def get_top1000(group):
    return group.sort_values("births", ascending=False)[:1000]
grouped = names.groupby(["year", "sex"])
top1000 = grouped.apply(get_top1000)

在这里插入图片描述

统计特定名字(如John、Harry、Mary、Marilyn)随时间的变化:

subset = total_births[["John", "Harry", "Mary", "Marilyn"]]
subset.plot(subplots=True, figsize=(12, 10), title="Number of births per year")

在这里插入图片描述

分析名字多样性,即每年受欢迎的名字的数量:

diversity = top1000.groupby(["year", "sex"]).apply(get_quantile_count)
diversity = diversity.unstack()
diversity.plot(title="Number of popular names in top 50%")

在这里插入图片描述

分析每个年代结尾字母在男性名字中的变化趋势:

last_letters = names["name"].map(get_last_letter)
table = names.pivot_table("births", index=last_letters, columns=["sex", "year"], aggfunc=sum)
subtable = table.reindex(columns=[1910, 1960, 2010], level="year")
subtable.plot(kind="bar", figsize=(10, 8))

在这里插入图片描述

分析特定名字(如Leslie)在不同性别中的变化趋势:

lesley_like = all_names[all_names.str.contains("Lesl")]
filtered = top1000[top1000["name"].isin(lesley_like)]
table = filtered.pivot_table("births", index="year", columns="sex", aggfunc="sum")
table = table.div(table.sum(axis="columns"), axis="index")
table.plot(style={"M": "k-", "F": "k--"})

在这里插入图片描述

以上是对美国1880-2010年婴儿名字数据集的一些分析。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值