数据分析实战(三):美国1800~2010年婴儿名字

美国社会保障局提供了从 1880 年至现在的婴儿姓名频率的数据. 其中数据集按
照年份分为多个文件.
1. 查看出生总数的变化(按照性别)
2. 增添新列: 每个名字相对于出生总数的比例.(按照年份和性别分组)
3. 分析名字趋势, 指定名字的数量变化
4. 分析名字的多样性,并且进一步探究是什么导致了男女多样性差异
5. 分析 男孩名字最后一个字母的分布在过去的 100 年里发生了重大的变化.
6. 男孩名字变成女孩名字以及反向.

任务1:查看出生总数的变化(按照性别)

import pandas as pd
import matplotlib.pyplot as plt
# 数据准备
years = range(1880, 2011)

pieces = []
columns = ['name', 'sex', 'births']  # 用作结果的列名列表

for year in years:
    path = 'datasets/babynames/yob%d.txt' % year
    frame = pd.read_csv(path, header=None, names=columns)

    frame['year'] = year
    pieces.append(frame)

# Concatenate everything into a single DataFrame
names = pd.concat(pieces, ignore_index=True)


#%%
total_births = names.pivot_table('births', index='year',
                                 columns='sex', aggfunc=sum)

total_births.plot(title='Total births by sex and year')
plt.show()

在这里插入图片描述
数据规整

# 增加新列:分组内的百分比
def add_prop(group):
    group['prop'] = group.births / group.births.sum()
    return group
names = names.groupby(['year', 'sex']).apply
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值