用姓名字段统计人数_美国婴儿姓名分析

本文基于美国社会保障总署的婴儿名字数据,分析了姓名统计、命名趋势、命名多样性的增长以及名字性别转变的现象。通过数据预处理,发现男孩和女孩名字的多样性增加,特别是以'n'结尾的男孩名字比例显著增长。同时,一些传统男孩名字逐渐成为女孩名字。
摘要由CSDN通过智能技术生成

研究背景

美国社会保障总署(SSA)提供了一份从1880年到2010年的婴儿名字频率数据。我们可以用这个数据集做很多事,例如:

  • 计算指定名字(可以是你自己的,也可以是别人的)的年度比例。
  • 计算某个名字的相对排名。
  • 计算各年度最流行的名字,以及增长或减少最快的名字。
  • 分析名字趋势:元音、辅音、长度、总体多样性、拼写变化、首尾字母等。
  • 分析外源性趋势:圣经中的名字、名人、人口结构变化等。

数据预处理

#查看数据
import numpy as np
import pandas as pd 
pd.options.display.max_rows=10
names1880 = pd.read_csv(r'G:pydata-book-2nd-editiondatasetsbabynamesyob1880.txt',
                       names=['name','sex','births'])
names1880

e56a5d4a59876d1af3c8ffbae3e31cd4.png
这些数据中仅含有当年出现超过5次的名字

我们可以用pandas.groupby()函数对births列的sex进行分组小计表示该年度的births总计:

names1880.groupby('sex')['births'].sum()

dcbfe2e9d845f4225e0a83f9dee95eb9.png
可以看出出生的男孩比女孩多

由于该数据集按年度被分隔成了多个文件,所以第一件事情就是要将所有数据都组装到一个DataFrame里面,并加上一个year字段。使用pandas.concat()即可达到这个目的:

years=range(1880,2011)

pieces=[]
columns = ['name','sex','births']
for year in years:
    path=r'G:pydata-book-2nd-editiondatasetsbabynamesyob%d.txt' % year
    frame=pd.read_csv(path,names=columns)
    frame['year']=year
    pieces.append(frame)

names=pd.concat(pieces,ignore_index=True)
names

这里需要注意几件事情。第一,concat默认是按行将多个DataFrame组合到一起的;第二,必须指定ignore_index=True,因为我们不希望保留read_csv所返回的原始行号。现在我们得到了一个非常大的DataFrame,它含有全部的名字数据:

df7cbd377890a417adb59cd77ab52b06.png

有了这些数据之后,我们就可以利用groupby或pivot_table在year和sex级别上对其进

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值