利用python进入数据分析之全美婴儿姓名分析
导入相关库
from __future__ import division from numpy.random import randn import numpy as np import matplotlib.pyplot as plt %matplotlib inline plt.rc('figure', figsize=(12, 5)) np.set_printoptions(precision=4) %pwd
u'D:\\ipython'
加载数据
import pandas as pd names1880 = pd.read_csv('ch02/names/yob1880.txt', names=['name', 'sex', 'births']) names1880
name | sex | births | |
---|---|---|---|
0 | Mary | F | 7065 |
1 | Anna | F | 2604 |
2 | Emma | F | 2003 |
3 | Elizabeth | F | 1939 |
4 | Minnie | F | 1746 |
5 | Margaret | F | 1578 |
6 | Ida | F | 1472 |
7 | Alice | F | 1414 |
8 | Bertha | F | 1320 |
9 | Sarah | F | 1288 |
10 | Annie | F | 1258 |
11 | Clara | F | 1226 |
12 | Ella | F | 1156 |
13 | Florence | F | 1063 |
14 | Cora | F | 1045 |
15 | Martha | F | 1040 |
16 | Laura | F | 1012 |
17 | Nellie | F | 995 |
18 | Grace | F | 982 |
19 | Carrie | F | 949 |
20 | Maude | F | 858 |
21 | Mabel | F | 808 |
22 | Bessie | F | 794 |
23 | Jennie | F | 793 |
24 | Gertrude | F | 787 |
25 | Julia | F | 783 |
26 | Hattie | F | 769 |
27 | Edith | F | 768 |
28 | Mattie | F | 704 |
29 | Rose | F | 700 |
... | ... | ... | ... |
1970 | Philo | M | 5 |
1971 | Phineas | M | 5 |
1972 | Presley | M | 5 |
1973 | Ransom | M | 5 |
1974 | Reece | M | 5 |
1975 | Rene | M | 5 |
1976 | Roswell | M | 5 |
1977 | Rowland | M | 5 |
1978 | Sampson | M | 5 |
1979 | Samual | M | 5 |
1980 | Santos | M | 5 |
1981 | Schuyler | M | 5 |
1982 | Sheppard | M | 5 |
1983 | Spurgeon | M | 5 |
1984 | Starling | M | 5 |
1985 | Sylvanus | M | 5 |
1986 | Theadore | M | 5 |
1987 | Theophile | M | 5 |
1988 | Tilmon | M | 5 |
1989 | Tommy | M | 5 |
1990 | Unknown | M | 5 |
1991 | Vann | M | 5 |
1992 | Wes | M | 5 |
1993 | Winston | M | 5 |
1994 | Wood | M | 5 |
1995 | Woodie | M | 5 |
1996 | Worthy | M | 5 |
1997 | Wright | M | 5 |
1998 | York | M | 5 |
1999 | Zachariah | M | 5 |
2000 rows × 3 columns
names1880.groupby('sex').births.sum()
sex F 90993 M 110493 Name: births, dtype: int64
数据聚合(将所有文本呢数据整合成一个DF)
# 2010 is the last available year right now years = range(1880, 2011)pieces = [] columns = ['name', 'sex', 'births']for year in years:path = 'ch02/names/yob%d.txt' % yearframe = pd.read_csv(path, names=columns)frame['year'] = yearpieces.append(frame)# Concatenate everything into a single DataFrame names = pd.concat(pieces, ignore_index=True)
names
name | sex | births | year | |
---|---|---|---|---|
0 | Mary | F | 7065 | 1880 |
1 | Anna | F | 2604 | 1880 |
2 | Emma | F | 2003 | 1880 |
3 | Elizabeth | F | 1939 | 1880 |
4 | Minnie | F | 1746 | 1880 |
5 | Margaret | F | 1578 | 1880 |
6 | Ida | F | 1472 | 1880 |
7 | Alice | F | 1414 | 1880 |
8 | Bertha | F | 1320 | 1880 |
9 | Sarah | F | 1288 | 1880 |
10 | Annie | F | 1258 | 1880 |
11 | Clara | F | 1226 | 1880 |
12 | Ella | F | 1156 | 1880 |
13 | Florence | F | 1063 | 1880 |
14 | Cora | F | 1045 | 1880 |
15 | Martha | F | 1040 | 1880 |
16 | Laura | F | 1012 | 1880 |
17 | Nellie | F | 995 | 1880 |
18 | Grace | F | 982 | 1880 |
19 | Carrie | F | 949 | 1880 |
20 | Maude | F | 858 | 1880 |
21 | Mabel | F | 808 | 1880 |
22 | Bessie | F | 794 | 1880 |
23 | Jennie | F | 793 | 1880 |
24 | Gertrude | F | 787 | 1880 |
25 | Julia | F | 783 | 1880 |
26 | Hattie | F | 769 | 1880 |
27 | Edith | F | 768 | 1880 |
28 | Mattie | F | 704 | 1880 |
29 | Rose | F | 700 | 1880 |
... | ... | ... | ... | ... |
1690754 | Zaviyon | M | 5 | 2010 |
1690755 | Zaybrien | M | 5 | 2010 |
1690756 | Zayshawn | M | 5 | 2010 |
1690757 | Zayyan | M | 5 | 2010 |
1690758 | Zeal | M | 5 | 2010 |
1690759 | Zealan | M | 5 | 2010 |
1690760 | Zecharia | M | 5 | 2010 |
1690761 | Zeferino | M | 5 | 2010 |
1690762 | Zekariah | M | 5 | 2010 |
1690763 | Zeki | M | 5 | 2010 |
1690764 | Zeriah | M | 5 | 2010 |
1690765 | Zeshan | M | 5 | 2010 |
1690766 | Zhyier | M | 5 | 2010 |
1690767 | Zildjian | M | 5 | 2010 |
1690768 | Zinn | M | 5 | 2010 |
1690769 | Zishan | M | 5 | 2010 |
1690770 | Ziven | M | 5 | 2010 |
1690771 | Zmari | M | 5 | 2010 |
1690772 | Zoren | M | 5 | 2010 |
1690773 | Zuhaib | M | 5 | 2010 |
1690774 | Zyeire | M | 5 | 2010 |
1690775 | Zygmunt | M | 5 | 2010 |
1690776 | Zykerion | M | 5 | 2010 |
1690777 | Zylar | M | 5 | 2010 |
1690778 | Zylin | M | 5 | 2010 |
1690779 | Zymaire | M | 5 | 2010 |
1690780 | Zyonne | M | 5 | 2010 |
1690781 | Zyquarius | M | 5 | 2010 |
1690782 | Zyran | M | 5 | 2010 |
1690783 | Zzyzx | M | 5 | 2010 |
1690784 rows × 4 columns
统计出生日期和性别
total_births = names.pivot_table('births', index='year',columns='sex', aggfunc=sum)
total_births.tail()
sex | F | M |
---|---|---|
year | ||
2006 | 1896468 | 2050234 |
2007 | 1916888 | 2069242 |
2008 | 1883645 | 2032310 |
2009 | 1827643 | 1973359 |
2010 | 1759010 | 1898382 |
total_births.plot(title='Total births by sex and year')
<matplotlib.axes._subplots.AxesSubplot at 0xdb1a870>
新建数据子集,为后续分析
def get_top1000(group):return group.sort_index(by='births', ascending=False)[:1000] grouped = names.groupby(['year', 'sex']) top1000 = grouped.apply(get_top1000)
D:\python2713\lib\anaconda_install\lib\site-packages\ipykernel_launcher.py:2: FutureWarning: by argument to sort_index is deprecated, pls use .sort_values(by=...)
top1000.index = np.arange(len(top1000))
top1000
name | sex | births | year | |
---|---|---|---|---|
0 | Mary | F | 7065 | 1880 |
1 | Anna | F | 2604 | 1880 |
2 | Emma | F | 2003 | 1880 |
3 | Elizabeth | F | 1939 | 1880 |
4 | Minnie | F | 1746 | 1880 |
5 | Margaret | F | 1578 | 1880 |
6 | Ida | F | 1472 | 1880 |
7 | Alice | F | 1414 | 1880 |
8 | Bertha | F | 1320 | 1880 |
9 | Sarah | F | 1288 | 1880 |
10 | Annie | F | 1258 | 1880 |
11 | Clara | F | 1226 | 1880 |
12 | Ella | F | 1156 | 1880 |
13 | Florence | F | 1063 | 1880 |
14 | Cora | F | 1045 | 1880 |
15 | Martha | F | 1040 | 1880 |
16 | Laura | F | 1012 | 1880 |
17 | Nellie | F | 995 | 1880 |
18 | Grace | F | 982 | 1880 |
19 | Carrie | F | 949 | 1880 |
20 | Maude | F | 858 | 1880 |
21 | Mabel | F | 808 | 1880 |
22 | Bessie | F | 794 | 1880 |
23 | Jennie | F | 793 | 1880 |
24 | Gertrude | F | 787 | 1880 |
25 | Julia | F | 783 | 1880 |
26 | Hattie | F | 769 | 1880 |
27 | Edith | F | 768 | 1880 |
28 | Mattie | F | 704 | 1880 |
29 | Rose | F | 700 | 1880 |
... | ... | ... | ... | ... |
261847 | Yair | M | 201 | 2010 |
261848 | Talan | M | 201 | 2010 |
261849 | Keyon | M | 201 | 2010 |
261850 | Kael | M | 201 | 2010 |
261851 | Demarion | M | 200 | 2010 |
261852 | Gibson | M | 200 | 2010 |
261853 | Reagan | M | 200 | 2010 |
261854 | Cristofer | M | 199 | 2010 |
261855 | Daylen | M | 199 | 2010 |
261856 | Jordon | M | 199 | 2010 |
261857 | Dashawn | M | 198 | 2010 |
261858 | Masen | M | 198 | 2010 |
261859 | Rowen | M | 197 | 2010 |
261860 | Yousef | M | 197 | 2010 |
261861 | Thaddeus | M | 197 | 2010 |
261862 | Kadin | M | 197 | 2010 |
261863 | Dillan | M | 197 | 2010 |
261864 | Clarence | M | 197 | 2010 |
261865 | Slade | M | 196 | 2010 |
261866 | Clinton | M | 196 | 2010 |
261867 | Sheldon | M | 196 | 2010 |
261868 | Keshawn | M | 195 | 2010 |
261869 | Menachem | M | 195 | 2010 |
261870 | Joziah | M | 195 | 2010 |
261871 | Bailey | M | 194 | 2010 |
261872 | Camilo | M | 194 | 2010 |
261873 | Destin | M | 194 | 2010 |
261874 | Jaquan | M | 194 | 2010 |
261875 | Jaydan | M | 194 | 2010 |
261876 | Maxton | M | 193 | 2010 |
261877 rows × 4 columns
分析命名趋势
boys = top1000[top1000.sex == 'M'] girls = top1000[top1000.sex == 'F']
total_births = top1000.pivot_table('births', index='year', columns='name',aggfunc=sum) total_births
name | Aaden | Aaliyah | Aarav | Aaron | Aarush | Ab | Abagail | Abb | Abbey | Abbie | ... | Zoa | Zoe | Zoey | Zoie | Zola | Zollie | Zona | Zora | Zula | Zuri |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
year | |||||||||||||||||||||
1880 | NaN | NaN | NaN | 102.0 | NaN | NaN | NaN | NaN | NaN | 71.0 | ... | 8.0 | 23.0 | NaN | NaN | 7.0 | NaN | 8.0 | 28.0 | 27.0 | NaN |
1881 | NaN | NaN | NaN | 94.0 | NaN | NaN | NaN | NaN | NaN | 81.0 | ... | NaN | 22.0 | NaN | NaN | 10.0 | NaN | 9.0 | 21.0 | 27.0 | NaN |
1882 | NaN | NaN | NaN | 85.0 | NaN | NaN | NaN | NaN | NaN | 80.0 | ... | 8.0 | 25.0 | NaN | NaN | 9.0 | NaN | 17.0 | 32.0 | 21.0 | NaN |
1883 | NaN | NaN | NaN | 105.0 | NaN | NaN | NaN | NaN | NaN | 79.0 | ... | NaN | 23.0 | NaN | NaN | 10.0 | NaN | 11.0 | 35.0 | 25.0 | NaN |
1884 | NaN | NaN | NaN | 97.0 | NaN | NaN | NaN | NaN | NaN | 98.0 | ... | 13.0 | 31.0 | NaN | NaN | 14.0 | 6.0 | 8.0 | 58.0 | 27.0 | NaN |
1885 | NaN | NaN | NaN | 88.0 | NaN | 6.0 | NaN | NaN | NaN | 88.0 | ... | 6.0 | 27.0 | NaN | NaN | 12.0 | 6.0 | 14.0 | 48.0 | 38.0 | NaN |
1886 | NaN | NaN | NaN | 86.0 | NaN | NaN | NaN | NaN | NaN | 84.0 | ... | 13.0 | 25.0 | NaN | NaN | 8.0 | NaN | 20.0 | 52.0 | 43.0 | NaN |
1887 | NaN | NaN | NaN | 78.0 | NaN | NaN | NaN | NaN | NaN | 104.0 | ... | 9.0 | 34.0 | NaN | NaN | 23.0 | NaN | 28.0 | 46.0 | 33.0 | NaN |
1888 | NaN | NaN | NaN | 90.0 | NaN | NaN | NaN | NaN | NaN | 137.0 | ... | 11.0 | 42.0 | NaN | NaN | 23.0 | 7.0 | 30.0 | 42.0 | 45.0 | NaN |
1889 | NaN | NaN | NaN | 85.0 | NaN | NaN | NaN | NaN | NaN | 107.0 | ... | 14.0 | 29.0 | NaN | NaN | 22.0 | NaN | 29.0 | 53.0 | 55.0 | NaN |
1890 | NaN | NaN | NaN | 96.0 | NaN | NaN | NaN | 6.0 | NaN | 140.0 | ... | NaN | 42.0 | NaN | NaN | 32.0 | 7.0 | 27.0 | 60.0 | 65.0 | NaN |
1891 | NaN | NaN | NaN | 69.0 | NaN | NaN | NaN | NaN | NaN | 124.0 | ... | NaN | 34.0 | NaN | NaN | 29.0 | 6.0 | 14.0 | 52.0 | 45.0 | NaN |
1892 | NaN | NaN | NaN | 95.0 | NaN | NaN | NaN | NaN | NaN | 119.0 | ... | NaN | 34.0 | NaN | NaN | 27.0 | NaN | 25.0 | 66.0 | 53.0 | NaN |
1893 | NaN | NaN | NaN | 81.0 | NaN | NaN | NaN | NaN | NaN | 115.0 | ... | NaN | 23.0 | NaN | NaN | 34.0 | 6.0 | 15.0 | 67.0 | 70.0 | NaN |
1894 | NaN | NaN | NaN | 79.0 | NaN | NaN | NaN | NaN | NaN | 118.0 | ... | NaN | 28.0 | NaN | NaN | 51.0 | NaN | 23.0 | 66.0 | 64.0 | NaN |
1895 | NaN | NaN | NaN | 94.0 | NaN | NaN | NaN | NaN | NaN | 92.0 | ... | NaN | 34.0 | NaN | NaN | 60.0 | 11.0 | 38.0 | 55.0 | 55.0 | NaN |
1896 | NaN | NaN | NaN | 69.0 | NaN | NaN | NaN | NaN | NaN | 121.0 | ... | NaN | 36.0 | NaN | NaN | 47.0 | NaN | 38.0 | 72.0 | 65.0 | NaN |
1897 | NaN | NaN | NaN | 87.0 | NaN | NaN | NaN | NaN | NaN | 97.0 | ... | NaN | 35.0 | NaN | NaN | 51.0 | NaN | 28.0 | 67.0 | 79.0 | NaN |
1898 | NaN | NaN | NaN | 89.0 | NaN | NaN | NaN | NaN | NaN | 120.0 | ... | NaN | 30.0 | NaN | NaN | 62.0 | NaN | 28.0 | 65.0 | 83.0 | NaN |
1899 | NaN | NaN | NaN | 71.0 | NaN | NaN | NaN | NaN | NaN | 87.0 | ... | NaN | 27.0 | NaN | NaN | 49.0 | 6.0 | 31.0 | 56.0 | 60.0 | NaN |
1900 | NaN | NaN | NaN | 104.0 | NaN | NaN | NaN | NaN | NaN | 112.0 | ... | NaN | 26.0 | NaN | NaN | 48.0 | 9.0 | 44.0 | 99.0 | 71.0 | NaN |
1901 | NaN | NaN | NaN | 80.0 | NaN | NaN | NaN | NaN | NaN | 87.0 | ... | NaN | 26.0 | NaN | NaN | 56.0 | NaN | 31.0 | 58.0 | 57.0 | NaN |
1902 | NaN | NaN | NaN | 78.0 | NaN | NaN | NaN | NaN | NaN | 91.0 | ... | NaN | 34.0 | NaN | NaN | 58.0 | NaN | 23.0 | 58.0 | 66.0 | NaN |
1903 | NaN | NaN | NaN | 93.0 | NaN | NaN | NaN | NaN | NaN | 91.0 | ... | NaN | 19.0 | NaN | NaN | 64.0 | NaN | 41.0 | 83.0 | 74.0 | NaN |
1904 | NaN | NaN | NaN | 117.0 | NaN | NaN | NaN | NaN | NaN | 80.0 | ... | NaN | 27.0 | NaN | NaN | 46.0 | NaN | 35.0 | 54.0 | 74.0 | NaN |
1905 | NaN | NaN | NaN | 96.0 | NaN | NaN | NaN | NaN | NaN | 73.0 | ... | NaN | 24.0 | NaN | NaN | 66.0 | 8.0 | 24.0 | 55.0 | 61.0 | NaN |
1906 | NaN | NaN | NaN | 96.0 | NaN | NaN | NaN | NaN | NaN | 72.0 | ... | NaN | 19.0 | NaN | NaN | 59.0 | NaN | 37.0 | 64.0 | 58.0 | NaN |
1907 | NaN | NaN | NaN | 130.0 | NaN | NaN | NaN | NaN | NaN | 79.0 | ... | NaN | 19.0 | NaN | NaN | 53.0 | 11.0 | 39.0 | 92.0 | 72.0 | NaN |
1908 | NaN | NaN | NaN | 114.0 | NaN | NaN | NaN | NaN | NaN | 84.0 | ... | NaN | 23.0 | NaN | NaN | 70.0 | NaN | 31.0 | 59.0 | 53.0 | NaN |
1909 | NaN | NaN | NaN | 142.0 | NaN | NaN | NaN | NaN | NaN | 57.0 | ... | NaN | 22.0 | NaN | NaN | 59.0 | NaN | 39.0 | 57.0 | 76.0 | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1981 | NaN | NaN | NaN | 14832.0 | NaN | NaN | NaN | NaN | 383.0 | 292.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1982 | NaN | NaN | NaN | 14538.0 | NaN | NaN | NaN | NaN | 372.0 | 275.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1983 | NaN | NaN | NaN | 14627.0 | NaN | NaN | NaN | NaN | 419.0 | 223.0 | ... | NaN | 174.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1984 | NaN | NaN | NaN | 13387.0 | NaN | NaN | NaN | NaN | 357.0 | 249.0 | ... | NaN | 200.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1985 | NaN | NaN | NaN | 13123.0 | NaN | NaN | NaN | NaN | 314.0 | 233.0 | ... | NaN | 193.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1986 | NaN | NaN | NaN | 12685.0 | NaN | NaN | NaN | NaN | 369.0 | 228.0 | ... | NaN | 213.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1987 | NaN | NaN | NaN | 12676.0 | NaN | NaN | NaN | NaN | 327.0 | 228.0 | ... | NaN | 248.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1988 | NaN | NaN | NaN | 14393.0 | NaN | NaN | NaN | NaN | 404.0 | 226.0 | ... | NaN | 238.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1989 | NaN | NaN | NaN | 15312.0 | NaN | NaN | NaN | NaN | 470.0 | 265.0 | ... | NaN | 376.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1990 | NaN | NaN | NaN | 14545.0 | NaN | NaN | NaN | NaN | 507.0 | 311.0 | ... | NaN | 478.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1991 | NaN | NaN | NaN | 14240.0 | NaN | NaN | NaN | NaN | 451.0 | 278.0 | ... | NaN | 722.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1992 | NaN | NaN | NaN | 14494.0 | NaN | NaN | NaN | NaN | 430.0 | 260.0 | ... | NaN | 978.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1993 | NaN | NaN | NaN | 13819.0 | NaN | NaN | NaN | NaN | 503.0 | 291.0 | ... | NaN | 1194.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1994 | NaN | 1451.0 | NaN | 14379.0 | NaN | NaN | NaN | NaN | 597.0 | 351.0 | ... | NaN | 1332.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1995 | NaN | 1254.0 | NaN | 13277.0 | NaN | NaN | NaN | NaN | 549.0 | 351.0 | ... | NaN | 1726.0 | 219.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1996 | NaN | 831.0 | NaN | 11956.0 | NaN | NaN | NaN | NaN | 552.0 | 349.0 | ... | NaN | 2063.0 | 339.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1997 | NaN | 1737.0 | NaN | 11156.0 | NaN | NaN | NaN | NaN | 645.0 | 386.0 | ... | NaN | 2363.0 | 407.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1998 | NaN | 1399.0 | NaN | 10539.0 | NaN | NaN | NaN | NaN | 661.0 | 398.0 | ... | NaN | 2690.0 | 478.0 | 225.0 | NaN | NaN | NaN | NaN | NaN | NaN |
1999 | NaN | 1088.0 | NaN | 9846.0 | NaN | NaN | 211.0 | NaN | 710.0 | 430.0 | ... | NaN | 3238.0 | 561.0 | 257.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2000 | NaN | 1494.0 | NaN | 9548.0 | NaN | NaN | 222.0 | NaN | 660.0 | 432.0 | ... | NaN | 3783.0 | 691.0 | 320.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2001 | NaN | 3351.0 | NaN | 9529.0 | NaN | NaN | 244.0 | NaN | 687.0 | 526.0 | ... | NaN | 4642.0 | 822.0 | 439.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2002 | NaN | 4775.0 | NaN | 8993.0 | NaN | NaN | 256.0 | NaN | 600.0 | 514.0 | ... | NaN | 4883.0 | 1182.0 | 438.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2003 | NaN | 3670.0 | NaN | 8851.0 | NaN | NaN | 276.0 | NaN | 625.0 | 536.0 | ... | NaN | 5080.0 | 1465.0 | 448.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2004 | NaN | 3482.0 | NaN | 8381.0 | NaN | NaN | 258.0 | NaN | 504.0 | 500.0 | ... | NaN | 5359.0 | 1621.0 | 515.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2005 | NaN | 3452.0 | NaN | 7796.0 | NaN | NaN | 287.0 | NaN | 451.0 | 445.0 | ... | NaN | 4953.0 | 2266.0 | 502.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2006 | NaN | 3737.0 | NaN | 8279.0 | NaN | NaN | 297.0 | NaN | 404.0 | 440.0 | ... | NaN | 5145.0 | 2839.0 | 530.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2007 | NaN | 3941.0 | NaN | 8914.0 | NaN | NaN | 313.0 | NaN | 349.0 | 468.0 | ... | NaN | 4925.0 | 3028.0 | 526.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2008 | 955.0 | 4028.0 | 219.0 | 8511.0 | NaN | NaN | 317.0 | NaN | 344.0 | 400.0 | ... | NaN | 4764.0 | 3438.0 | 492.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2009 | 1265.0 | 4352.0 | 270.0 | 7936.0 | NaN | NaN | 296.0 | NaN | 307.0 | 369.0 | ... | NaN | 5120.0 | 3981.0 | 496.0 | NaN | NaN | NaN | NaN | NaN | NaN |
2010 | 448.0 | 4628.0 | 438.0 | 7374.0 | 226.0 | NaN | 277.0 | NaN | 295.0 | 324.0 | ... | NaN | 6200.0 | 5164.0 | 504.0 | NaN | NaN | NaN | NaN | NaN | 258.0 |
131 rows × 6868 columns
subset = total_births[['John', 'Harry', 'Mary', 'Marilyn']] # 分析这四个名字的趋势 subset.plot(subplots=True, figsize=(12, 10), grid=False,title="Number of births per year")
array([<matplotlib.axes._subplots.AxesSubplot object at 0x0C7B1510>,<matplotlib.axes._subplots.AxesSubplot object at 0x0C04F0D0>,<matplotlib.axes._subplots.AxesSubplot object at 0x0B5F1D70>,<matplotlib.axes._subplots.AxesSubplot object at 0x0B45D150>], dtype=object)
D:\python2713\lib\anaconda_install\lib\site-packages\matplotlib\transforms.py:661: RuntimeWarning: invalid value encountered in absoluteinside = ((abs(dx0 + dx1) + abs(dy0 + dy1)) == 0)
评估命名的多样性
plt.figure()
<matplotlib.figure.Figure at 0xaa8dfd0>
<matplotlib.figure.Figure at 0xaa8dfd0>
table = top1000.pivot_table( 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))
<matplotlib.axes._subplots.AxesSubplot at 0xa64add0>
姓名中最后一个字母的变革
# extract last letter from name column get_last_letter = lambda x: x[-1] last_letters = names.name.map(get_last_letter) last_letters.name = 'last_letter'table = names.pivot_table('births', index=last_letters,columns=['sex', 'year'], aggfunc=sum)
subtable = table.reindex(columns=[1910, 1960, 2010], level='year') subtable.head() subtable.sum()
sex year F 1910 396416.01960 2022062.02010 1759010.0 M 1910 194198.01960 2132588.02010 1898382.0 dtype: float64
letter_prop = subtable / subtable.sum().astype(float)
import matplotlib.pyplot as pltfig, axes = plt.subplots(2, 1, figsize=(10, 8)) letter_prop['M'].plot(kind='bar', rot=0, ax=axes[0], title='Male') letter_prop['F'].plot(kind='bar', rot=0, ax=axes[1], title='Female',legend=False)
<matplotlib.axes._subplots.AxesSubplot at 0x9d4e3d0>
plt.subplots_adjust(hspace=0.25)
<matplotlib.figure.Figure at 0xa054a50>
letter_prop = table / table.sum().astype(float)dny_ts = letter_prop.ix[['d', 'n', 'y'], 'M'].T dny_ts.head()
D:\python2713\lib\anaconda_install\lib\site-packages\ipykernel_launcher.py:3: DeprecationWarning: .ix is deprecated. Please use .loc for label based indexing or .iloc for positional indexingSee the documentation here: http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate_ixThis is separate from the ipykernel package so we can avoid doing imports until
last_letter | d | n | y |
---|---|---|---|
year | |||
1880 | 0.083055 | 0.153213 | 0.075760 |
1881 | 0.083247 | 0.153214 | 0.077451 |
1882 | 0.085340 | 0.149560 | 0.077537 |
1883 | 0.084066 | 0.151646 | 0.079144 |
1884 | 0.086120 | 0.149915 | 0.080405 |
plt.close('all')
dny_ts.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x9751630>
男女孩名字互换
all_names = top1000.name.unique() mask = np.array(['lesl' in x.lower() for x in all_names]) lesley_like = all_names[mask] lesley_like
array(['Leslie', 'Lesley', 'Leslee', 'Lesli', 'Lesly'], dtype=object)
filtered = top1000[top1000.name.isin(lesley_like)] filtered.groupby('name').births.sum()
name Leslee 1082 Lesley 35022 Lesli 929 Leslie 370429 Lesly 10067 Name: births, dtype: int64
table = filtered.pivot_table('births', index='year',columns='sex', aggfunc='sum') table = table.div(table.sum(1), axis=0) table.tail()
sex | F | M |
---|---|---|
year | ||
2006 | 1.0 | NaN |
2007 | 1.0 | NaN |
2008 | 1.0 | NaN |
2009 | 1.0 | NaN |
2010 | 1.0 | NaN |
plt.close('all')
table.plot(style={'M': 'k-', 'F': 'k--'})
<matplotlib.axes._subplots.AxesSubplot at 0x9fd5510>
利用python进入数据分析之全美婴儿姓名分析相关推荐
- 《利用Python进行数据分析·第2版》第14章 数据分析案例
第 1 章 准备工作第 2 章 Python 语法基础,IPython 和 Jupyter 第 3 章 Python 的数据结构.函数和文件 第 4 章 NumPy 基础:数组和矢量计算 第 5 章 ...
- 利用python进行数据分析第三版 mobi_利用python进行数据分析 pdf下载
利用Python进行数据分析pdf电子版是一本广受好评的Python实战指导参考图书,该书以大量案例分析为基本,全面系统地教你如何解决各类数据分析问题,有兴趣的朋友快来下载吧! 利用Python进行数 ...
- 利用python进行数据分析(第二版)_第十四章
本书正文的最后一章,我们来看一些真实世界的数据集.对于每个数据集,我们会用之前介绍的方法,从原始数据中提取有意义的内容.展示的方法适用于其它数据集,也包括你的.本章包含了一些各种各样的案例数据集,可以 ...
- 利用python进行数据分析——第十四章_数据分析案例
文章目录 本章中的数据文件可从下面的github仓库中下载 利用python进行数据分析(第二版) 一.从Bitli获取 1.USA.gov数据 1.1纯python时区计数 1.2使用pandas进 ...
- python输入一组数据、进行简单的统计_《利用Python进行数据分析》学习笔记——第二章(3)...
1880-2010年间全美婴儿姓名 用pandas.read_csv加载.txt文件 图2.1 用read_csv加载.txt文件 DataFrame.names1880中只有births这一列是in ...
- 【Python】利用python进行数据分析——以新型冠状病毒疫情为例
[Python]利用python进行数据分析--以新型冠状病毒疫情为例 重要说明 只提交该文档这一个文件,做完后提交到学习通"结课大作业"中. 1. 文件命名: 必须以学号-姓名- ...
- 利用Python进行数据分析(学习笔记)
第壹章 准备工作 1.1 本书内容 1.1.1 什么类型的数据 1.2 为何利用Python进行数据分析 1.2.1 Python作为胶水 1.2.2 解决"双语言"难题 1.2. ...
- ch02-1880-2010年间全美婴儿姓名
ch02-1880-2010年间全美婴儿姓名 美国社会保障总署(SSA)提供了一份从1880年到2010年的婴儿姓名频率数据.Hadley Wickham(许多流行R包的作者)经常用这份数据来演示R的 ...
- 《利用Python进行数据分析》学习笔记ch02-3(3)
索引: pandas.read_csv pandas.concat ignore_index=True groupby或pivot_table进行聚合 np.allclose 计算prop的累计和cu ...
最新文章
- python代码大全p-python处理写入数据代码讲解
- 23. which命令
- bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题
- fastreport 横向分栏_FastReport开发指南
- Cray:XC50提供了最高密度的性能
- 一个基本的spring+mybatis所需要的包
- 作业帮电脑版在线使用_应届生应聘作业帮的在线辅导老师
- Spring mybatis thymeleaf 基础操作,实现数据展示,修改,删除,查询
- shell错位_shell脚本出错!来大神指出错误出处!!!!
- 连续系统离散化_连续系统转化为离散系统之 z 变换
- TCP安全测试指南-魔兽3找联机0day
- 微信小程序 — 生成二维码功能
- F28335的ADC模块
- 甲骨文裁员,这是一个危险信号
- PS 批处理切图去空白
- 知道一点怎么设直线方程_两点直线方程怎么求
- Endless无限循环·数字化趋势
- python 统计英语文档词汇出现频率,以六级真题为例
- Edge浏览器自动翻译按钮不见?
- 《中国集成电路产业人才白皮书(2017-2018)》在京发布