精华内容
下载资源
问答
  • 2015年美国各州人口数量,来源美国统计局公开网站,可用于数据库基础数据。 来源data.world/uscensusbureau。供研究、学习用。
  • 2018-2019中国养宠人口数量.xls
  • 全国各街道、乡镇人口数据,可下载,最新数据啊啊啊啊啊啊啊啊啊
  • 空间可视化的全国人口和GDP矢量数据,可用于多行业多学科可视化分析。
  • 2000年第五次全国人口普查数据(各地级市人口数据) 包含了各省人口数据、各地级市人口数据
  • 第六次人口普查全国各街道(乡镇)人口数据,数据是excel格式,数据字段有总人口、家庭户、家庭户总人口、分年龄人口、男性人口、女性人口、0-14岁人口、15-64岁人口、65岁以上人口
  • 世界各国人口数据.zip

    2020-09-16 10:13:51
    世界各国人口数据.zip
  • 链接:https://pan.baidu.com/s/1e_fC0gtTQSpbthGJ6_Y01A
  • 详细的中国人口数据分布,1KM的精度。 懂的下,别嫌贵。
  • 安徽省第七次人口普查数据,精确到各区(其余省份数据详见本人主页) 数据源于第七次人口普查公报
  • 文件中包括全国六普人口具体到乡镇、街道的人口数据,也有不同年龄层的统计人口数据。欢迎大家使用。
  • 全国1KM精度的人口数量数据2010年.zip
  • 第六次人口普查分地级行政区数据excel版(包括各地级市人口数据
  • 五年人口数据(1970~2010)间隔10年 格式:tif 解压大小:17.2GB 高精度
  • 2020年10月份采集的全国各地区(省市区)人口数量,包含上下级关系,来源于百度百科,上下级人口数量没有汇总关系,数量完全采集于百科,仅限研究学习,请勿传播
  • 第六次人口普查全国行政乡镇人口数据-已清洗 划分好省份和城市乡镇等级别归属,数据完整,可以直接使用 其中部分县级或者乡镇级别直接统一归属到直辖县自治区等
  • 美国各州人口数据分析csv
  • 1995-2035年中国深圳人口数量统计及预测.xls
  • 全国1KM精度的人口数量数据(2005年、2010年),是栅格数据,精准度还是可以的,有需要的可以共享下载使用
  • 本资源为全国第六次人口普查各省市常住人口数量,共统计各省市数据量677条,其中包含各省的统计以及其下辖的区县的人口数据 。用于统计分析和数据处理
  • 数据包括: 1950年-2020年数据; 2020年-2100年为低、中、高生育率,恒定生育率等预测数据数据来源:联合国经济和社会事务部人口
  • 数据为千锋教育数据分析与人工智能教学视频中涉及的美国人口案例数据CSV文件。可以根据此数据进行实验,帮助大家更好的掌握python中pandas库的使用情况
  • 空间分辨率接近1Km*1Km
  • 厦门市、漳州市、泉州市近10年 GDP、人口数据
  • 文件中包括全国第六次人口普查具体到乡镇、街道的人口数据,也有不同年龄层的统计人口数据
  • 截至2019年中国各大城市GDP,人口数统计数据整理;数据来源于百度百科,国家统计局等公开数据,个别城市上报的比较慢,只能采用距离2019年更近的年份数据,作为城市GDP,人工的统计标签。
  • china population choropleth Choropleth Stack Barchart 数据来源: 人口数据 License MIT
  • 爬取人口数据

    千次阅读 2021-01-11 22:14:08
    主题式网络爬虫名称:爬取人口数据及数据可视化2.主题式网络爬虫爬取的内容与数据特征分析:爬取国家统计局人口数据3.主题式网络爬虫设计方案概述(包括实现思路与技术难点):首先找到爬取页面的源代码,找到所需要...

    一、主题式网络爬虫设计方案(15分)

    1.主题式网络爬虫名称:爬取人口数据及数据可视化

    2.主题式网络爬虫爬取的内容与数据特征分析:爬取国家统计局人口数据

    3.主题式网络爬虫设计方案概述(包括实现思路与技术难点):首先找到爬取页面的源代码,找到所需要爬取的数据在源代码中的位置,接下来进行数据爬取,并将数据持久化,接下来对数据进行清洗处理,并进行数据分析和可视化

    首先是页面如下

    按f12

    找到人口数据

    1.数据爬取与采集(20)

    import requests

    import time

    import json

    import matplotlib.pyplot as plt

    import pandas as pd

    #用来获得 时间戳

    def gettime():

    return int(round(time.time()*1000))

    if __name__=='__main__':

    "一,请求数据"

    #用来定义头部

    headers={}

    #用来传递参数

    keyvalue={}

    #目标网址

    url='http://data.stats.gov.cn/easyquery.htm'

    #头部填充

    headers['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64) '\

    'AppleWebKit/537.36 (KHTML, like Gecko)'\

    'Chrome/70.0.3538.102 Safari/537.36'

    #参数填充

    keyvalue['m'] = 'QueryData'

    keyvalue['dbcode'] = 'hgnd'

    keyvalue['rowcode'] = 'zb'

    keyvalue['colcode'] = 'sj'

    keyvalue['wds'] = '[]'

    keyvalue['dfwds'] = '[{"wdcode":"zb","valuecode":"A0301"}]'

    keyvalue['k1'] = str(gettime())

    # 发出请求,使用get方法,这里使用我们自定义的头部和参数

    r = requests.get(url, headers=headers, params=keyvalue)

    "二,解析数据"

    year=[]

    population=[]

    data=json.loads(r.text)

    data_one = data['returndata']['datanodes']

    for value in data_one:

    if('A030101_sj' in value['code']):

    year.append(value['code'][-4:])

    population.append(int(value['data']['strdata']))

    print(year)

    print(population)

    2.对数据进行清洗和处理(10)

    #检查重复

    print(df.duplicated())

    4.数据分析与可视化(例如:数据柱形图、直方图、散点图、盒图、分布图)(15分)

    plt.figure()

    plt.plot()

    plt.rcParams['font.sans-serif']=['SimHei']

    plt.rcParams['axes.unicode_minus'] = False

    plt.bar(year,population)

    plt.xlabel('年份')

    plt.ylabel('万人')

    plt.title('年末总人口')

    plt.show()

    5.根据数据之间的关系,分析两个变量之间的相关系数,画出散点图,并建立变量之间的回归方程(一元或多元)(10分)。

    6.数据持久化(5分)

    将爬取的数据保存在111.csv中

    df = pd.DataFrame({'year' : year, 'population' : population})

    df.to_csv("C:/Users/lenovo/111.csv", index=False, sep=',')

    7.将以上各部分的代码汇总,附上完整程序代码

    import requests

    import time

    import json

    import matplotlib.pyplot as plt

    import pandas as pd

    #用来获得 时间戳

    def gettime():

    return int(round(time.time()*1000))

    if __name__=='__main__':

    "一,请求数据"

    #用来定义头部

    headers={}

    #用来传递参数

    keyvalue={}

    #目标网址

    url='http://data.stats.gov.cn/easyquery.htm'

    #头部填充

    headers['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64) '\

    'AppleWebKit/537.36 (KHTML, like Gecko)'\

    'Chrome/70.0.3538.102 Safari/537.36'

    #参数填充

    keyvalue['m'] = 'QueryData'

    keyvalue['dbcode'] = 'hgnd'

    keyvalue['rowcode'] = 'zb'

    keyvalue['colcode'] = 'sj'

    keyvalue['wds'] = '[]'

    keyvalue['dfwds'] = '[{"wdcode":"zb","valuecode":"A0301"}]'

    keyvalue['k1'] = str(gettime())

    # 发出请求,使用get方法,这里使用我们自定义的头部和参数

    r = requests.get(url, headers=headers, params=keyvalue)

    "二,解析数据"

    year=[]

    population=[]

    data=json.loads(r.text)

    data_one = data['returndata']['datanodes']

    for value in data_one:

    if('A030101_sj' in value['code']):

    year.append(value['code'][-4:])

    population.append(int(value['data']['strdata']))

    print(year)

    print(population)

    #检查重复

    print(df.duplicated())

    df = pd.DataFrame({'year' : year, 'population' : population})

    df.to_csv("C:/Users/lenovo/111.csv", index=False, sep=',')

    "三,绘制数据"

    plt.figure()

    plt.plot()

    plt.rcParams['font.sans-serif']=['SimHei']

    plt.rcParams['axes.unicode_minus'] = False

    plt.bar(year,population)

    plt.xlabel('年份')

    plt.ylabel('万人')

    plt.title('年末总人口')

    plt.show()

    四、结论(10分)

    1.经过对主题数据的分析与可视化,可以得到哪些结论?

    经过对主题数据的分析与可视化,可以得到中国人口数据增长情况

    逐年在上涨

    2.对本次程序设计任务完成的情况做一个简单的小结。

    经过这次的学习与作业实践,学到了很多爬虫的知识,不过还是远远不够的。

    自己还有很多不懂的地方,还需要继续学习

    展开全文
  • 这篇文章用pandas对全球的人口数据做个简单分析。我收集全球各国1960-2019年人口数据,包含男女和不同年龄段,共6个文件。pop_total.csv: 各国每年总人口pop_female.csv:各国每年女性人口pop_male.csv: 各国每年...

    这篇文章用pandas对全球的人口数据做个简单分析。我收集全球各国1960-2019年人口数据,包含男女和不同年龄段,共6个文件。

    pop_total.csv: 各国每年总人口

    pop_female.csv:各国每年女性人口

    pop_male.csv: 各国每年男性人口

    pop_0_14.csv: 各国每年0-14岁人口

    pop_15_64.csv: 各国每年15-64岁人口

    pop_65up.csv:各国每年65岁以上人口

    先用pandas读取文件数据import pandas as pd

    pop_total = pd.read_csv('./data/pop_total.csv', skiprows=4)

    pop_total.info()

    pop_total.csv文件存放各国每年总人口数据,格式如下pop_total.head(2)

    同样的方式,我们读取剩下的5个文件,对应的DataFrame分别是pop_female、pop_male、pop_0_14、pop_15_64、pop_65up。

    为了直观观察全球人口分布,我们用pyecharts绘制2019年全球人口分布地图from pyecharts import options as opts

    from pyecharts.charts import Timeline, Map

    pop_total_2019 = pop_total[['Country Name', '2019']]

    # 修改俄罗斯的英文名以便pyecharts能识别

    pop_total_2019.loc[200, 'Country Name'] = 'Russia'

    pop_world_map = (

    Map()

    .add("2019年", pop_total_2019.values, "world", is_map_symbol_show=False)

    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))

    .set_global_opts(

    title_opts=opts.TitleOpts(title="全球人口"),

    visualmap_opts=opts.VisualMapOpts(max_=100000000), # 超过1亿人口颜色最深(红色)

    )

    )

    pop_world_map.render_notebook()

    因为我们有50年的数据,所以我们还可以绘制一个全球人口分布变化的动图,类似之前写的全球疫情变化趋势图。因为代码跟上面类似,这里就不贴,源码包里能找到。

    上面的图里我们只能定性的看到人口分布,下面我们定量地看看2019年全球人口top10的国家。# 2019年人口top10的国家

    pop_total_2019_ordered = pop_total_2019.sort_values(by="2019" , ascending=False)

    pop_total_2019_ordered.head()

    排序后发现Country Name这列不只是单个国家,还包括了地区概念,这并不是我们想要的。记得之前做疫情地图的时候有一份国家中英文对应关系的名单,拿到这里用一下。from countries_ch_to_en import countries_dict

    pop_top10 = pop_total_2019_ordered[pop_total_2019_ordered['Country Name']\

    .isin(countries_dict.keys())][:10]

    pop_top10

    这样看起来就正常了,用seaborn将其绘制出来import seaborn as sns

    sns.barplot(y=pop_top10['Country Name'], x=pop_top10['2019'])

    可以看到,中国人口仍然位居全球第一,紧随其后的是印度,三哥也是拼了。令我惊讶的是巴基斯坦那么小的国土,人口超2亿,全球排第五,真是方方面面都要跟三哥死磕。

    看完人口绝对值的排行,我们再来看看从2000年值2019年近20年时间各国人口增长率pop_tmp = pop_total[pop_total['Country Name']\

    .isin(pop_top10['Country Name'])][['Country Name', '2000', '2019']]

    pop_tmp['growth(%)'] = (pop_tmp['2019'] / pop_tmp['2000'] - 1) * 100

    pop_tmp.sort_values(by="growth(%)" , ascending=False)

    可以看到,中国虽然人口基数比较大,但近20年人口增长率确比较低,增加最快的top3分别是尼日利亚、巴基斯坦和印度。

    看完总人口数据后,我们再看看性别分布,还是以2019年为例columns = ['Country Name', '2019']

    # 抽数据,关联

    pop_sex_2019 = pop_total[columns].merge(pop_male[columns], on = 'Country Name')

    # 列名重命名

    pop_sex_2019.rename(columns={'2019_x': 'total', '2019_y': 'male'}, inplace=True)

    # 筛选出国家

    pop_sex_2019 = pop_sex_2019[pop_sex_2019['Country Name'].isin(countries_dict.keys())]

    # 计算女性人口

    pop_sex_2019['female'] = pop_sex_2019['total'] - pop_sex_2019['male']

    # 女性占比与男性占比的差值

    pop_sex_2019['diff'] = (pop_sex_2019['female'] - pop_sex_2019['male']) / pop_sex_2019['total'] * 100

    # 男性人口占比高于女性的 top15

    sex_diff_top15 = pop_sex_2019.sort_values(by='diff')[0:15]

    sns.barplot(y=sex_diff_top15['Country Name'], x=sex_diff_top15['diff'])

    第一名是卡塔尔,男性人口比女性高50%,咱们中国男女比例也是失衡的,男性人口占比比女性高2%。

    再来看看女性占比比男性高的国家sex_diff_top15 = pop_sex_2019.sort_values(by='diff', ascending=False)[0:15]

    sns.barplot(y=sex_diff_top15['Country Name'], x=sex_diff_top15['diff'])

    这个相差的幅度明显没那么大,top1也就差了8%,并且这些国家都不是人口大国。那我们来看看人口超过1亿的国家有哪些是女性占比超过男性pop_sex_2019[pop_sex_2019['total'] > 100000000].sort_values(by='diff', ascending=False)[0:5]

    可以看到日本、墨西哥、巴西和美国这四个人口大国女性占比超过了男性。

    性别也了解的差不多了,我们再来看看年龄分布。因为我比较关注各国年轻人群的占比,所以我们先对各国0-14岁人口占比进行排序。pop_0_14_2019 = pop_total[columns].merge(pop_0_14[columns], on = 'Country Name')

    pop_0_14_2019.rename(columns={'2019_x': 'total', '2019_y': '0_14'}, inplace=True)

    pop_0_14_2019['0_14_r(%)'] = pop_0_14_2019['0_14'] / pop_0_14_2019['total'] * 100

    # 我们仍然只看大于1亿人的国家

    pop_0_14_top = pop_0_14_2019[pop_0_14_2019['Country Name'].isin(countries_dict.keys())][pop_0_14_2019['total'] > 100000000]\

    .sort_values(by='0_14_r(%)', ascending=False)[:15]

    sns.barplot(y=pop_0_14_top['Country Name'], x=pop_0_14_top['0_14_r(%)'])

    可以看到菲律宾、孟加拉国、印尼和印度等东南亚国家0-14岁人口占比远超中国,甚至美国也比我们要高。我们只有17%,这也是近几年世界工厂在往东南亚迁移的原因。

    最后,我们再看看中国从1960年至2019年中国各年龄段人口占比的变化趋势# 筛选我们需要的列

    pop_0_14_ch = pop_0_14[pop_0_14['Country Name'] == 'China'].drop(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',\

    'Unnamed: 64'], axis=1)

    #列(年份)转行

    pop_0_14_ch_unstack = pop_0_14_ch.unstack()

    # 重新构造DateFrame

    pop_0_14_ch = pd.DataFrame(pop_0_14_ch_unstack.values, \

    index=[x[0] for x in pop_0_14_ch_unstack.index.values], columns=['0_14'])

    pop_0_14_ch.head()

    同样的方式,处理一下其他两个年龄段# 15-64岁

    pop_15_64_ch = pop_15_64[pop_15_64['Country Name'] == 'China'].drop(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',\

    'Unnamed: 64'], axis=1)

    pop_15_64_ch_unstack = pop_15_64_ch.unstack()

    pop_15_64_ch = pd.DataFrame(pop_15_64_ch_unstack.values,\

    index=[x[0] for x in pop_15_64_ch_unstack.index.values], columns=['15_64'])

    # 65岁以上

    pop_65up_ch = pop_65up[pop_65up['Country Name'] == 'China'].drop(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',\

    'Unnamed: 64'], axis=1)

    pop_65up_ch_unstack = pop_65up_ch.unstack()

    pop_65up_ch = pd.DataFrame(pop_65up_ch_unstack.values, \

    index=[x[0] for x in pop_65up_ch_unstack.index.values], columns=['65up'])

    将各年龄人口按照年份关联起来,然后计算总人口以及各年龄段人口占比pop_age_level = pop_0_14_ch.merge(pop_15_64_ch.merge(pop_65up_ch, left_index=True, right_index=True), left_index=True, right_index=True)

    pop_age_level['total'] = pop_age_level['0_14'] + pop_age_level['15_64'] + pop_age_level['65up']

    pop_age_level['0_14(%)'] = pop_age_level['0_14'] / pop_age_level['total'] * 100

    pop_age_level['15_64(%)'] = pop_age_level['15_64'] / pop_age_level['total'] * 100

    pop_age_level['65up(%)'] = pop_age_level['65up'] / pop_age_level['total'] * 100

    pop_age_level.head()

    最后我们来画一个堆叠柱状图展示pop_age_level['year'] = pop_age_level.index

    pop_age_level.plot.bar(x='year', y=['0_14(%)', '15_64(%)', '65up(%)'], stacked=True, figsize=(15,8), fontsize=10, rot=60)

    可以放大后看看,蓝色的是0-14岁人口,六七十年代,中国0-14岁人口占比40%多,算是挺高的了,随着80年代实行计划生育,0-14岁人口开始下降,一直降到现在的17%,少的有点可怜了。现在国家放开二胎,也是希望未来我们能有更多的年轻人,这样才能增强我们的国际竞争力。

    我的分析就到这里了,有兴趣的朋友可以自行探索,数据和源码已经打包,公众号回复关键字人口即可。

    欢迎公众号 「渡码」,输出别地儿看不到的干货。

    展开全文
  • 可以通过Arcgis打开,全国人口空间分布公里网格数据是在全国分县人口统计数据的基础上,考虑人口-自然要素的地理分异规律,通过空间插值生成的1km*1km栅格数据,每个栅格的值为该平方公里的人口数。 该数据集打破...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,279
精华内容 34,511
关键字:

人口数据