5.1.0 要点

  • Python基本操作

    • print()函数
  • Pandas程序包

    • 数据序列的基本运算

      .add()     # 加
      .sub()     # 减
      .mul()     # 乘
      .div()     # 除
      .pow()     # 指数
    • 数据序列的差分与平移:一阶差分.diff(1) ,数据平移.shift(1)

  • Matplotlib程序包

    • 绘制折线图:plt.plot()

5.1.1 题目

根据国家统计局公布的《中国统计年鉴2021》点击打开),查询中国1978-2020年(按当年价格计算)国内生产总值(GDP),以及国内生产总值指数(1978年=100),然后计算并画图展示:

  • 1978-2020年实际国内生产总值(1978年=100);
  • 1979-2020年每年实际国内生产总值的增长率;
  • 中国1979-2020年实际国内生产总值的平均增长率,以及对应的标准差。

操作提示

1.收集数据:《中国统计年鉴2021》表3-1,表3-5,手动输入excel文件

2.计算实际GDP公式:(按当年价格计算的)国内生产总值/国内生产总值指数(1978=100)*100

3.计算实际GDP增长率公式:(当年实际GDP-上年实际GDP)/上年实际GDP*100

5.1.2 代码

# 导入程序包
import pandas as pd
import matplotlib.pyplot as plt
import ssl

# 禁用SSL证书校验
ssl._create_default_https_context = ssl._create_unverified_context

# 导入数据(在线数据)
df = pd.read_excel(r'https://cdn.seit2019.xyz/data/econometrics/GDP.xlsx')

# 展示数据
print(df, "\n")

# 定义数据序列
gdp = df["国内生产总值(当年价格,亿元)"]
gdp_index = df["GDP指数(1978=100)"]

# 计算实际GDP
# .div()序列相除
real_gdp = gdp.div(gdp_index.div(100))
print("实际GDP序列:")
print(real_gdp, "\n")

# 计算实际GDP增长率
# .diff(1)一阶差分
# .shift(1)行数据向下平移一格,滞后一阶
real_gdp_added = real_gdp.diff(1)
real_gdp_shift = real_gdp.shift(1)
growth = real_gdp_added.div(real_gdp_shift)
print("实际GDP增长率:")
print(growth, "\n")

# 计算平均增长率和标准差
growth_mean = growth.mean()
growth_std = growth.std()
print("平均增长率为:")
print(growth_mean.round(5), "\n")
print("平均增长率的标准差为:")
print(growth_std.round(5), "\n")

# 绘图:设置绘图格式,支持汉字
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 绘图:定义变量
x = df["年度"]
y1 = gdp.div(10000)
y2 = real_gdp.div(10000)
y3 = growth

# 绘图:名义GDP
plt.plot(x, y1, c='blue')
plt.title('中国1978-2021年名义GDP(单位:万亿元)', fontsize='xx-large', fontweight='bold')
plt.show()

# 绘图:实际GDP
plt.plot(x, y2, c='green')
plt.title('中国1978-2021实际GDP(1978=100,单位:万亿元)', fontsize='xx-large', fontweight='bold')
plt.show()

# 绘图:实际GDP增长率
plt.plot(x, y3, c='black')
plt.title('中国1978-2021年实际GDP增长率', fontsize='xx-large', fontweight='bold')
plt.show()

5.1.3 代码解析

导入程序包

import pandas as pd
import matplotlib.pyplot as plt

说明:

  • pandas:Python数据处理最常用的程序包
  • matplotlib:Python绘图常用程序包
  • import pandas as pd:表示将pandas程序包导入,并简化命名为:pd
  • import matplotlib.pyplot as plt:表示将matplotlib程序包中的pyplot模块导入,并简化命名为:plt
  • 上述程序包导入和简化命名方式,是Python编程通用的方式。为了便于代码阅读和分享,建议保持不变。

导入数据

df = pd.read_excel(r'https://cdn.seit2019.xyz/data/econometrics/GDP.xlsx')

说明:

  • 功能:调用pandas程序包中的read_excel()函数,将链接中数据导入,并命名为变量df
  • 变量df中,数据以DataFrame格式存储数据。
  • DataFrame是pandas支持的表格型数据格式,类似excel。
  • 关于DataFrame,详情参考:Pandas 数据结构 – DataFrame
  • 为了便于教程分享,这里采用在线数据。
  • 详细的数据导入与导出,请参考:2.2 Python数据导入与导出

展示数据

print(df, "\n")

运行结果:

原始数据

说明:

  • 功能:显示名称为df的变量,然后回车,换行。
  • print()是python显示输出函数,可以将变量,数据,运行结果等以文本的方式显示在程序运行窗口。
  • ”\n":表示回车、换行,其功能是:将前后两次显示的结果以空行隔开。

定义数据序列

gdp = df["国内生产总值(当年价格,亿元)"]
gdp_index = df["GDP指数(1978=100)"]

说明:

  • 将变量df中名称为“国内生产总值(当年价格,亿元)”的列,赋值给变量gdp
  • 将变量df中名称为“GDP指数(1978=100)”的列,赋值给变量gdp_index

计算实际GDP

real_gdp = gdp.div(gdp_index.div(100))
print("实际GDP序列:")
print(real_gdp, "\n")

运行结果:

实际GDP序列

说明:

  • .div():序列除以()中的变量或数值。
  • pandas中常用序列计算:加.add(),减.sub(),乘 .mul() ,除 .div(),指数幂.pow()
  • 更多序列计算,请参考:pandas 求值计算
  • gdp_index.div(100)gdp_index序列除以100

计算实际GDP增长率

real_gdp_added = real_gdp.diff(1)
real_gdp_shift = real_gdp.shift(1)
growth = real_gdp_added.div(real_gdp_shift)
print("实际GDP增长率:")
print(growth, "\n")

运行结果:

实际GDP增长率

说明:

  • .diff(1):对序列进行一阶差分
  • .shift(1):将行数据向下平移一格,即滞后一阶

计算平均增长率和标准差

growth_mean = growth.mean()
growth_std = growth.std()
print("平均增长率为:")
print(growth_mean.round(5), "\n")
print("平均增长率的标准差为:")
print(growth_std.round(5), "\n")

运行结果:

实际GDP增长率和标准差

说明:

  • .mean():计算序列的均值
  • .std():计算序列的标准差
  • .round(5):变量取值保留小数点后5位

绘图:设置绘图格式,支持汉字

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

说明:

  • Matplotlib默认不支持中文。
  • 如果需要在图形中显示中文字符,请在绘图前加入上述代码。

绘图:定义变量

x = df["年度"]
y1 = gdp.div(10000)
y2 = real_gdp.div(10000)
y3 = growth

说明:名义GDP和实际GDP除以10000,将原单位“亿元”转换为“万亿元”。

绘图:名义GDP

plt.plot(x, y1, c='blue')
plt.title('中国1978-2021年名义GDP(单位:万亿元)', fontsize='xx-large', fontweight='bold')
plt.show()

运行结果:

名义GDP

说明:

  • plt.plot():调用pltplot()函数,绘制折线图
  • c='blue':设置折线颜色为蓝色
  • plt.title():调用plttitle()函数,设置图形的标题
  • fontsize='xx-large':设置标题字号。其他字号:'large', 'x-large'
  • fontweight='bold':设置标题字号加粗

绘图:实际GDP

plt.plot(x, y2, c='green')
plt.title('中国1978-2021实际GDP(1978=100,单位:万亿元)', fontsize='xx-large', fontweight='bold')
plt.show()

运行结果:

实际GDP

说明:

  • plt.plot():调用pltplot()函数,绘制折线图
  • c='green':设置折线颜色为绿色
  • plt.title():调用plttitle()函数,设置图形的标题
  • fontsize='xx-large':设置标题字号。其他字号:'large', 'x-large'
  • fontweight='bold':设置标题字号加粗

绘图:实际GDP增长率

plt.plot(x, y3, c='black')
plt.title('中国1978-2021年实际GDP增长率', fontsize='xx-large', fontweight='bold')
plt.show()

运行结果:

实际GDP增长率

说明:

  • plt.plot():调用pltplot()函数,绘制折线图
  • c='black':设置折线颜色为黑色
  • plt.title():调用plttitle()函数,设置图形的标题
  • fontsize='xx-large':设置标题字号。其他字号:'large', 'x-large'
  • fontweight='bold':设置标题字号加粗

参考

分类: 教程笔记

管理员

管理员

SEIT资源站