import pandas as pd import matplotlib.pyplot as plt from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.charts import Timeline # 性别数据爬取 url = 'http://www.stats.gov.cn/tjsj/zxfb/202105/t20210510_1817181.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'} cnagedf = pd.read_html(url)[1] cnagedf.columns = cnagedf.iloc[1].values cnagedf = cnagedf.drop([0, 1, 2, 6]).reset_index(drop=True) # matplotlib饼图绘制 explo = [0, 0, 0.1] plt.figure(figsize=(8, 6)) plt.rcParams.update({'font.family': 'Microsoft YaHei'}) plt.title('中国人口年龄分布饼图') plt.pie(cnagedf['人口数'], labels=cnagedf['年龄'], explode=explo, shadow=True, autopct='%1.2f%%') plt.tight_layout() plt.show() ###第七次不同省份总人口 def an1(): name = data['省份'].tolist()[1:] value = data['2020年第七次人口普查'].tolist()[1:] provinces = [i.replace("\u3000","") for i in name] #value = [int(int(i)/10000) for i in value] print(provinces) print(value) c = ( Map() .add("", [list(z) for z in zip(provinces, value)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第七次不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ).render(path="第七次不同省份总人口.html") ###1953~2021年不同省份总人口 def an2(): name = data['省份'].tolist()[1:] value1 = data['1953年第一次人口普查'].tolist()[1:] value2 = data['1964年第二次人口普查'].tolist()[1:] value3 = data['1982年第三次人口普查'].tolist()[1:] value4 = data['1990年第四次人口普查'].tolist()[1:] value5 = data['2000年第五次人口普查'].tolist()[1:] value6 = data['2010年第六次人口普查'].tolist()[1:] value7 = data['2020年第七次人口普查'].tolist()[1:] provinces = [i.replace("\u3000","") for i in name] #value = [int(int(i)/10000) for i in value] print(provinces) t = Timeline() c1 = ( Map() .add("", [list(z) for z in zip(provinces, value1)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第一次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c1, "第一次人口普查不同省份总人口") c2 = ( Map() .add("", [list(z) for z in zip(provinces, value2)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第二次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c2, "第二次人口普查不同省份总人口") c3 = ( Map() .add("", [list(z) for z in zip(provinces, value3)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第三次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c3, "第三次人口普查不同省份总人口") c4 = ( Map() .add("", [list(z) for z in zip(provinces, value4)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第四次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c4, "第四次人口普查不同省份总人口") c5 = ( Map() .add("", [list(z) for z in zip(provinces, value5)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第五次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c5, "第五次人口普查不同省份总人口") c6 = ( Map() .add("", [list(z) for z in zip(provinces, value6)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第六次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c6, "第六次人口普查不同省份总人口") c7 = ( Map() .add("", [list(z) for z in zip(provinces, value7)], "china") .set_global_opts( title_opts=opts.TitleOpts(title="第七次人口普查不同省份总人口"), visualmap_opts=opts.VisualMapOpts(max_=130000000, split_number=8, is_piecewise=True), ) ) t.add(c7,"第七次人口普查不同省份总人口") t.render(path="1953~2021年不同省份总人口.html") datafile = u'七次人口普查数据.xlsx' data = pd.read_excel(datafile) an1() an2()