写在前面的话:

实例中的所有数据都是在GitHub上下载的,打包下载即可。

地址是:http://github.com/pydata/pydata-book

还有一定要说明的:

我使用的是Python2.7,书中的代码有一些有错误,我使用自己的2.7版本调通。

  1. # coding: utf-8
  2. import pandas as pd
  3. import numpy as np
  4. names1880 = pd.read_csv('D:\Source Code\pydata-book-master\ch02\\names\yob1880.txt', names=['name','sex','births'])
  5. names1880
  6. names1880.groupby('sex').births.sum()
  7. years = range(1880, 2011)
  8. pieces = []
  9. columns = ['name','sex','births']
  10. for year in years:
  11. path = 'D:\Source Code\pydata-book-master\ch02\\names\yob%d.txt' %year
  12. frame = pd.read_csv(path, names=columns)
  13. frame['year'] = year
  14. pieces.append(frame)
  15. names = pd.concat(pieces,ignore_index=True)
  16. names
  17. total_births = names.pivot_table('births', index='year', columns='sex', aggfunc=sum)
  18. total_births.tail()
  19. total_births.plot(title='Total births by sex and year')
  20. def add_group(group):
  21. births = group.births.astype(float)
  22. group['prop'] = births / births.sum()
  23. return group
  24. names = names.groupby(['year','sex']).apply(add_group)
  25. names
  26. np.allclose(names.groupby(['year','sex']).prop.sum(),1)
  27. def get_top1000(group):
  28. return group.sort_index(by='births',ascending=False)[:1000]
  29. grouped = names.groupby(['year','sex'])
  30. top1000 = grouped.apply(get_top1000)
  31. top1000
  32. boys = top1000[top1000.sex == 'M']
  33. girls = top1000[top1000.sex == 'F']
  34. total_births = top1000.pivot_table('births', index='year', columns='name', aggfunc=sum)
  35. total_births
  36. subset = total_births[['John','Harry','Mary','Marilyn']]
  37. subset.plot(subplots=True,figsize=(12,10),grid=False,title="Number of births per year")
  38. table = top1000.pivot_table('prop',index='year',columns='sex',aggfunc=sum)
  39. table.plot(title='sum of table1000.prop by year and sex',yticks=np.linspace(0,1.2,13),xticks=range(1880,2020,10))
  40. df = boys[boys.year == 2010]
  41. df
  42. prop_cumsum = df.sort_index(by='prop', ascending=False).prop.cumsum()
  43. prop_cumsum[:10]
  44. prop_cumsum.searchsorted(0.5)
  45. df = boys[boys.year == 1900]
  46. in1900 = df.sort_index(by='prop', ascending=False).prop.cumsum()
  47. in1900.searchsorted(0.5)+1
  48. def get_quantile_count(group, q=0.5):
  49. group = group.sort_index(by='prop',ascending=False)
  50. return group.prop.cumsum().searchsorted(q)+1
  51. diversity = top1000.groupby(['year','sex']).apply(get_quantile_count)
  52. diversity = diversity.unstack('sex')
  53. diversity.head()
  54. get_last_letter = lambda x:x[-1]
  55. last_letter = names.name.map(get_last_letter)
  56. last_letter.name = 'last_letter'
  57. table = names.pivot_table('births', index=last_letter, columns=['sex','year'], aggfunc=sum)
  58. subtable = table.reindex(columns=[1910,1960,2010], level='year')
  59. subtable.head()
  60. subtable.sum()
  61. letter_prop = subtable / subtable.sum().astype(float)
  62. import matplotlib.pyplot as plt
  63. fig,axex = plt.subplots(2,1,figsize=(10,8))
  64. letter_prop['M'].plot(kind='bar',rot=0,ax=axex[0],title='Male')
  65. letter_prop['F'].plot(kind='bar',rot=0,ax=axex[1],title='Female',legend=False)
  66. letter_prop = table / table.sum().astype(float)
  67. dny_ts = letter_prop.ix[['d','n','y'],'M'].T
  68. dny_ts.head()
  69. dny_ts.plot()
  70. all_names = top1000.name.unique()
  71. mask = np.array(['lesl' in x.lower() for x in all_names])
  72. lesley_like = all_names[mask]
  73. lesley_like
  74. filtered = top1000[top1000.name.isin(lesley_like)]
  75. filtered.groupby('name').births.sum()
  76. table = filtered.pivot_table('births', index='year', columns='sex', aggfunc = 'sum')
  77. table = table.div(table.sum(1), axis = 0)
  78. table.tail()
  79. table.plot(style={'M':'k-','F':'k--'})

《利用Python进行数据分析》笔记---第2章--1880-2010年间全美婴儿姓名的更多相关文章

  1. 《利用Python进行数据分析》第8章学习笔记

    绘图和可视化 matplotlib入门 创建窗口和画布 fig = plt.figure() ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2, ...

  2. 《利用Python进行数据分析》第6章学习笔记

    数据加载.存储与文件格式 读写文本格式的数据 逐块读取文本文件 read_xsv参数nrows=x 要逐块读取文件,需要设置chunksize(行数),返回一个TextParser对象. 还有一个ge ...

  3. 《利用Python进行数据分析》第4章学习笔记

    NumPy基础:数组和矢量计算 NumPy的ndarray:一种多维数组对象 该对象是一个快速灵活的大数据集容器.你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样 列表转换 ...

  4. 《利用Python进行数据分析》第7章学习笔记

    数据规整化:清理.转换.合并.重塑 合并数据集 pandas.merge pandas.concat combine_first 数据库风格的DataFrame合并 索引上的合并 join()实例方法 ...

  5. 《利用Python进行数据分析》第123章学习笔记

    引言 1 列表推导式 records = [json.loads(line) for line in open(path)] 这是一种在一组字符串(或一组别的对象)上执行一条相同操作(如json.lo ...

  6. 《利用Python进行数据分析》第5章学习笔记

    pandas入门 数据结构 Series Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成.仅由一组数据即可产生最简单的Serie ...

  7. 利用Python进行数据分析笔记-时间序列(时区、周期、频率)

    此文对Python中时期.时间戳.时区处理等阐述十分清楚,特别值得推荐学习. 原文链接:https://blog.csdn.net/wuzlun/article/details/80287517

  8. 利用python进行数据分析PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:hi2j 内容简介 [名人推荐] "科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法.本书在未来几年里肯定会成为Python领域中技术计 ...

  9. 利用python进行数据分析--(阅读笔记一)

    以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分 ...

随机推荐

  1. https nginx配置

    cd /saas/conf/nginx/ mkdir key cd key 创建key: openssl req -nodes -newkey rsa:2048 -keyout server.key ...

  2. C teaching

    L1 Preparation 1. environment codeblocks 2.variable, const 3. data type int "%d" char &quo ...

  3. Linux下的Nginx安装

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有g ...

  4. Java -D命令对应的代码中获取-D后面的参数 和 多个参数时-D命令的使用

    1. Java代码: public class TestDPara { public static void main(String[] args) { String flag = System.ge ...

  5. GridView绑定数据源 绑定DataReader /DataSet /DataTable

    有一个GridView1 <asp:GridView ID="GridView1" runat="server"></asp:GridView ...

  6. python print和strip

    在使用这两个模块时犯过错误,总结如下: 1.print print在打印时会自动加上换行,例如: >>> for i in xrange(1,5): ... print i ... ...

  7. 01_Storm体系概要

    1. Storm发展历史 Storm历史 1. 2010年12月,backtype公司Nathan,提出Storm的核心概念2. backtype, 提供数据分析,数据处理服务的一个公司3. 2011 ...

  8. Memcache课程

    这套Memcache课程今天正式上线,http://www.yzmedu.com/course/53,总计6集,包括Memcache缓存技术和Memcache用户跨域技术,后面即将发布网上最全的微信小 ...

  9. python脚本9_打印斐波那契数列

    #打印斐波那契数列 f0 = 0 f1 = 1 for n in range(2,101): fn = f1 + f0 if fn <= 100: print(fn) f0 = f1 f1 = ...

  10. Android Studio 3.0 及个版本下载和 gradle 各版本下载

    Android Studio 3.0 下载地址: 链接:http://pan.baidu.com/s/1jHVuOQi 密码:3pd0 Android Studio 3.0 包含了三大主要功能: 一套 ...