暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据分析案例-人口分析

Skill数据分析 2021-04-13
471

需求:

  • 导入文件,查看原始数据

  • 将人口数据和各州简称数据进行合并

  • 将合并的数据中重复的abbreviation列进行删除

  • 查看存在缺失数据的列

  • 找到有哪些state/region使得state的值为NaN,进行去重操作

  • 为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN

  • 合并各州面积数据areas

  • 我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行

  • 去除含有缺失数据的行

  • 找出2010年的全民人口数据

  • 计算各州的人口密度

  • 排序,并找出人口密度最高的州

    import numpy as np
    import pandas as pd
    from pandas import DataFrame
      abb = pd.read_csv('./anaconda3/课件/data/state-abbrevs.csv')
      area = pd.read_csv('./anaconda3/课件/data/state-areas.csv')
      pop = pd.read_csv('./anaconda3/课件/data/state-population.csv')
        abb.head()

          area.head()

            pop.head()

              # 1.将人口数据和各州简称数据进行合并
              df = pd.merge(abb,pop,left_on='abbreviation',right_on='state/region',how='outer')
              df

                # 2.将合并的数据中重复的abbreviation列进行删除
                df.drop(labels='abbreviation',axis=1,inplace=True)
                df

                  # 3.查看存在缺失数据的列
                  df.isnull().any(axis=0)
                  # 获取state 和 population 存在缺失数据

                    # 4.找到有哪些state/region使得state的值为NaN,进行去重操作
                    df.loc[df.loc[df['state'].isnull()].index]['state/region'].unique()

                      # 5.为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN
                      # 分两步补充,先补PR,在补充USA
                      indexs = df.loc[df['state/region']=='PR'].index
                      df.loc[indexs,'state']='PUERTO RICO'
                        # 在补充USA
                        indexs = df.loc[df['state/region']=='USA'].index
                        df.loc[indexs,'state']='United States'

                          # 6.合并各州面积数据areas
                          dd = pd.merge(df,area,on = 'state',how='outer')
                          dd

                            # 7.我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行
                            dd[dd['area (sq. mi)'].isnull()].index

                              # 8.去除含有缺失数据的行
                              dd.drop(labels=dd[dd['area (sq. mi)'].isnull()].index,axis=0,inplace=True)

                                # 9.找出2010年的全民人口数据
                                dd.query('ages=="total" & year==2010')

                                  # 10.计算各州的人口密度
                                  dd['midu']=dd['population']/dd['area (sq. mi)']

                                    # 11.排序,并找出人口密度最高的州
                                    dd.sort_values('midu',ascending=False,na_position='last')

                                      dd.sort_values('midu',ascending=False,na_position='last').iloc[1]['state']


                                      后台回复「人口分析」可获取本文的数据集及源码。

                                      文章转载自Skill数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                      评论