《利用Python进行数据分析》笔记---第2章--1880-2010年间全美婴儿姓名
写在前面的话:
实例中的所有数据都是在GitHub上下载的,打包下载即可。
地址是:http://github.com/pydata/pydata-book
还有一定要说明的:
我使用的是Python2.7,书中的代码有一些有错误,我使用自己的2.7版本调通。
# coding: utf-8
import pandas as pd
import numpy as np
names1880 = pd.read_csv('D:\Source Code\pydata-book-master\ch02\\names\yob1880.txt', names=['name','sex','births'])
names1880
names1880.groupby('sex').births.sum()
years = range(1880, 2011)
pieces = []
columns = ['name','sex','births']
for year in years:
path = 'D:\Source Code\pydata-book-master\ch02\\names\yob%d.txt' %year
frame = pd.read_csv(path, names=columns)
frame['year'] = year
pieces.append(frame)
names = pd.concat(pieces,ignore_index=True)
names
total_births = names.pivot_table('births', index='year', columns='sex', aggfunc=sum)
total_births.tail()
total_births.plot(title='Total births by sex and year')
def add_group(group):
births = group.births.astype(float)
group['prop'] = births / births.sum()
return group
names = names.groupby(['year','sex']).apply(add_group)
names
np.allclose(names.groupby(['year','sex']).prop.sum(),1)
def get_top1000(group):
return group.sort_index(by='births',ascending=False)[:1000]
grouped = names.groupby(['year','sex'])
top1000 = grouped.apply(get_top1000)
top1000
boys = top1000[top1000.sex == 'M']
girls = top1000[top1000.sex == 'F']
total_births = top1000.pivot_table('births', index='year', columns='name', aggfunc=sum)
total_births
subset = total_births[['John','Harry','Mary','Marilyn']]
subset.plot(subplots=True,figsize=(12,10),grid=False,title="Number of births per year")
table = top1000.pivot_table('prop',index='year',columns='sex',aggfunc=sum)
table.plot(title='sum of table1000.prop by year and sex',yticks=np.linspace(0,1.2,13),xticks=range(1880,2020,10))
df = boys[boys.year == 2010]
df
prop_cumsum = df.sort_index(by='prop', ascending=False).prop.cumsum()
prop_cumsum[:10]
prop_cumsum.searchsorted(0.5)
df = boys[boys.year == 1900]
in1900 = df.sort_index(by='prop', ascending=False).prop.cumsum()
in1900.searchsorted(0.5)+1
def get_quantile_count(group, q=0.5):
group = group.sort_index(by='prop',ascending=False)
return group.prop.cumsum().searchsorted(q)+1
diversity = top1000.groupby(['year','sex']).apply(get_quantile_count)
diversity = diversity.unstack('sex')
diversity.head()
get_last_letter = lambda x:x[-1]
last_letter = names.name.map(get_last_letter)
last_letter.name = 'last_letter'
table = names.pivot_table('births', index=last_letter, columns=['sex','year'], aggfunc=sum)
subtable = table.reindex(columns=[1910,1960,2010], level='year')
subtable.head()
subtable.sum()
letter_prop = subtable / subtable.sum().astype(float)
import matplotlib.pyplot as plt
fig,axex = plt.subplots(2,1,figsize=(10,8))
letter_prop['M'].plot(kind='bar',rot=0,ax=axex[0],title='Male')
letter_prop['F'].plot(kind='bar',rot=0,ax=axex[1],title='Female',legend=False)
letter_prop = table / table.sum().astype(float)
dny_ts = letter_prop.ix[['d','n','y'],'M'].T
dny_ts.head()
dny_ts.plot()
all_names = top1000.name.unique()
mask = np.array(['lesl' in x.lower() for x in all_names])
lesley_like = all_names[mask]
lesley_like
filtered = top1000[top1000.name.isin(lesley_like)]
filtered.groupby('name').births.sum()
table = filtered.pivot_table('births', index='year', columns='sex', aggfunc = 'sum')
table = table.div(table.sum(1), axis = 0)
table.tail()
table.plot(style={'M':'k-','F':'k--'})
《利用Python进行数据分析》笔记---第2章--1880-2010年间全美婴儿姓名的更多相关文章
- 《利用Python进行数据分析》第8章学习笔记
绘图和可视化 matplotlib入门 创建窗口和画布 fig = plt.figure() ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2, ...
- 《利用Python进行数据分析》第6章学习笔记
数据加载.存储与文件格式 读写文本格式的数据 逐块读取文本文件 read_xsv参数nrows=x 要逐块读取文件,需要设置chunksize(行数),返回一个TextParser对象. 还有一个ge ...
- 《利用Python进行数据分析》第4章学习笔记
NumPy基础:数组和矢量计算 NumPy的ndarray:一种多维数组对象 该对象是一个快速灵活的大数据集容器.你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样 列表转换 ...
- 《利用Python进行数据分析》第7章学习笔记
数据规整化:清理.转换.合并.重塑 合并数据集 pandas.merge pandas.concat combine_first 数据库风格的DataFrame合并 索引上的合并 join()实例方法 ...
- 《利用Python进行数据分析》第123章学习笔记
引言 1 列表推导式 records = [json.loads(line) for line in open(path)] 这是一种在一组字符串(或一组别的对象)上执行一条相同操作(如json.lo ...
- 《利用Python进行数据分析》第5章学习笔记
pandas入门 数据结构 Series Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成.仅由一组数据即可产生最简单的Serie ...
- 利用Python进行数据分析笔记-时间序列(时区、周期、频率)
此文对Python中时期.时间戳.时区处理等阐述十分清楚,特别值得推荐学习. 原文链接:https://blog.csdn.net/wuzlun/article/details/80287517
- 利用python进行数据分析PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:hi2j 内容简介 [名人推荐] "科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法.本书在未来几年里肯定会成为Python领域中技术计 ...
- 利用python进行数据分析--(阅读笔记一)
以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分 ...
随机推荐
- python之subprocess
官网介绍:https://docs.python.org/3/library/subprocess.html Popen(): [root@oracle scripts]# cat sub_popen ...
- 20145309《Java程序设计》第八周学习总结
日志 •java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类 ...
- SaltStack部署服务及配置管理apache+php-第二篇
实验目标 1.使用SaltStack部署apache和php, 2.使用salt管理httpd.conf配置文件配置访问info.php使用账户密码 3.在salt里面增加对conf.d目录进行配置管 ...
- OAuth中client id的处理
http://www.tugberkugurlu.com/archive/simple-oauth-server-implementing-a-simple-oauth-server-with-kat ...
- Mybatis中使用自定义的类型处理器处理枚举enum类型
知识点:在使用Mybatis的框架中,使用自定义的类型处理器处理枚举enum类型 应用:利用枚举类,处理字段有限,可以用状态码,代替的字段,本实例,给员工状态字段设置了一个枚举类 状态码,直接赋值给对 ...
- webservice用cxf发布REST
1.新建一个java项目 2.导入cxf相关的jar包,并部署到项目中 3.bean类 package com.xiaostudy; import javax.xml.bind.annotation. ...
- 配置spring boot 内置tomcat的accessLog日志
#配置内置tomcat的访问日志server.tomcat.accesslog.buffered=trueserver.tomcat.accesslog.directory=/home/hygw/lo ...
- LDA学习之beta分布和Dirichlet分布
---恢复内容开始--- 今天学习LDA主题模型,看到Beta分布和Dirichlet分布一脸的茫然,这俩玩意怎么来的,再网上查阅了很多资料,当做读书笔记记下来: 先来几个名词: 共轭先验: 在贝叶斯 ...
- 关于Gulp
Gulp & webpack 配置详解http://www.jianshu.com/p/2d9ed1fe3e8c 使用 Gulphttp://hwaphon.site/?p=439 前端构建工 ...
- [spring]<context:component-scan/>使用
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...