本篇介绍使用数据分析进行人口分析。
- 需求:
- 导入文件,查看原始数据
- 将人口数据和各州简称数据进行合并
- 将合并的数据中重复的abbreviation列进行删除
- 查看存在缺失数据的列
- 找到有哪些state/region使得state的值为NaN,进行去重操作
- 为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN
- 合并各州面积数据areas
- 我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行
- 去除含有缺失数据的行
- 找出2010年的全民人口数据
- 计算各州的人口密度
- 排序,并找出人口密度最高的五个州 df.sort_values()
1 | import numpy as np |
1 | abb = pd.read_csv('./data/state-abbrevs.csv') |
打印:
state | abbreviation | |
---|---|---|
0 | Alabama | AL |
1 | Alaska | AK |
1 | pop = pd.read_csv('./data/state-population.csv') |
打印:
state/region | ages | year | population | |
---|---|---|---|---|
0 | AL | under18 | 2012 | 1117489.0 |
1 | AL | total | 2012 | 4817528.0 |
1 | area = pd.read_csv('./data/state-areas.csv') |
打印:
state | area (sq. mi) | |
---|---|---|
0 | Alabama | 52423 |
1 | Alaska | 656425 |
1 | # 将人口数据和各州简称数据进行合并 |
打印:
state | abbreviation | state/region | ages | year | population | |
---|---|---|---|---|---|---|
0 | Alabama | AL | AL | under18 | 2012 | 1117489.0 |
1 | Alabama | AL | AL | total | 2012 | 4817528.0 |
1 | # 将合并的数据中重复的abbreviation列进行删除 |
打印:
state | state/region | ages | year | population | |
---|---|---|---|---|---|
0 | Alabama | AL | under18 | 2012 | 1117489.0 |
1 | Alabama | AL | total | 2012 | 4817528.0 |
1 | # 查看存在缺失数据的列 |
打印:
1 | state True |
1 | # 找到有哪些state/region使得state的值为NaN,进行去重操作 |
打印:
1 | 0 False |
1 | # 2.可以将step1中空对应的行数据取出(state中的空值对应的行数据) |
打印:
state | state/region | ages | year | population | |
---|---|---|---|---|---|
2448 | NaN | PR | under18 | 1990 | NaN |
... | ... | ... | ... | ... | ... |
2543 | NaN | USA | total | 2012 | 313873685.0 |
96 rows × 5 columns
1 | # 3.将对应的行数据中指定的简称列取出 |
打印:
1 | array(['PR', 'USA'], dtype=object) |
1 | # 为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN |
打印:
1 | 0 False |
1 | # 2,将布尔值作为原数据的行索引,取出USA简称对应的行数据 |
打印:
state | state/region | ages | year | population | |
---|---|---|---|---|---|
2496 | NaN | USA | under18 | 1990 | 64218512.0 |
... | ... | ... | ... | ... | ... |
2542 | NaN | USA | under18 | 2012 | 73708179.0 |
2543 | NaN | USA | total | 2012 | 313873685.0 |
1 | # 3.获取符合要求行数据的行索引 |
1 | # 4.将indexs这些行中的state列的值批量赋值成united states |
1 | # 将PR对应的state列中的空批量赋值成 PUERTO RICO |
1 | # 合并各州面积数据areas |
打印:
state | state/region | ages | year | population | area (sq. mi) | |
---|---|---|---|---|---|---|
0 | Alabama | AL | under18 | 2012.0 | 1117489.0 | 52423.0 |
1 | Alabama | AL | total | 2012.0 | 4817528.0 | 52423.0 |
2 | Alabama | AL | under18 | 2010.0 | 1130966.0 | 52423.0 |
1 | # 我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行 |
打印:
1 | Int64Index([2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, |
1 | # 去除含有缺失数据的行 |
1 | # 找出2010年的全民人口数据 条件查询 |
打印:
state | state/region | ages | year | population | area (sq. mi) | |
---|---|---|---|---|---|---|
3 | Alabama | AL | total | 2010.0 | 4785570.0 | 52423.0 |
91 | Alaska | AK | total | 2010.0 | 713868.0 | 656425.0 |
101 | Arizona | AZ | total | 2010.0 | 6408790.0 | 114006.0 |
189 | Arkansas | AR | total | 2010.0 | 2922280.0 | 53182.0 |
197 | California | CA | total | 2010.0 | 37333601.0 | 163707.0 |
2405 | Wyoming | WY | total | 2010.0 | 564222.0 | 97818.0 |
1 | # 计算各州的人口密度 |
打印:
state | state/region | ages | year | population | area (sq. mi) | midu | |
---|---|---|---|---|---|---|---|
0 | Alabama | AL | under18 | 2012.0 | 1117489.0 | 52423.0 | 21.316769 |
1 | Alabama | AL | total | 2012.0 | 4817528.0 | 52423.0 | 91.897221 |
1 | # 排序,并找出人口密度最高的五个州 df.sort_values() |
打印:
state | state/region | ages | year | population | area (sq. mi) | midu | |
---|---|---|---|---|---|---|---|
391 | District of Columbia | DC | total | 2013.0 | 646449.0 | 68.0 | 9506.602941 |
385 | District of Columbia | DC | total | 2012.0 | 633427.0 | 68.0 | 9315.102941 |
387 | District of Columbia | DC | total | 2011.0 | 619624.0 | 68.0 | 9112.117647 |
431 | District of Columbia | DC | total | 1990.0 | 605321.0 | 68.0 | 8901.779412 |
389 | District of Columbia | DC | total | 2010.0 | 605125.0 | 68.0 | 8898.897059 |
1 | abb_pop_area.groupby(by='state')['area (sq. mi)'].max().sort_values(ascending=False).head(5) |
打印:
1 | state |