**一:介绍**
该案例来自《利用Python进行数据分析·第2版》,主要对1880-2010年间全美婴儿姓名进行分析。
二:分析流程
1:读取数据:因为一个年份有一张表,将所有的表信息合成一张以便后续分析。
years = range(1880,2011)
piece = []
columns = ['name','sex', 'births']
将每年的文件转为DataFrame
for year in years:
path = 'C:/Users/17322/Desktop/datasets/babynames/yob%d.txt' %year
frame = pd.read_csv(path, names=columns)
frame['year']= year
piece.append(frame)
合成一张
names = pd.concat(piece, ignore_index=True)
2:利用映射表进行聚合作图
total_births = names.pivot_table('birth',index = 'year', columns = 'sex',aggfunc='sum')
total_births.plot(title = 'Total births per year')
3:分析放指定名字的婴儿数相对于总出生数的比例
- 添加proportion列
def add_prop(group):
group['prop'] = group.birth / group.birth.sum()
return group
names = names.groupby(['year','sex']).apply(add_prop)
4:取子集:取出每个group前n列
def get_n(group,n):
return group.