【Python基础】案例分析:GDP分析

news2024/11/15 8:45:53

GDP分析

文章目录

  • GDP分析
    • 1 分析过程与目标
      • 1.1 数据来源
      • 1.2 熟悉数据
    • 2 各国与地区GDP数据分析关系多源组成
      • 2.2 清洗数据
      • 2.3 设定分析目标
    • 3 主要国家DGP分析
      • 3.1 主要国家GDP趋势
      • 3.2 1990年开始GDP对比
    • 4 中国GDP分析
      • 4.1 从1990年开始GDP变化化
      • 4.2 中国GDP分析增长超过10%的年份
        • 4.2.1 计算每年增长率思路
        • 4.2.2 获取增长大于10%的年份
      • 4.3 5年连续累加增长率最高年份
        • 4.3.1 rolling:移动窗口方法

1 分析过程与目标

  • 数据来源
  • 熟悉数据
  • 分析过程
  • 分析结果呈现
  • 使用知识点与代码实现

1.1 数据来源

  • 企业内部采集数据:web端,小程序,Android或者IOS应用,智能设备(智能电表,温度传感器等)
  • 开方数据平台:国家数据统计局,世界银行数据等
  • 第三方数据集:kaagle等竞赛平台
  • 爬虫抓取第三方数据
  • 数据可能由多源组成

1.2 熟悉数据

  • 通过工具展示数据
  • 查看数据字段
  • 多个数据源观察,数据源关系

2 各国与地区GDP数据分析关系多源组成

import pandas as pd
import numpy as np
%matplotlib inline
#读取excel文件
fpath = r'data\GDP.csv'
f = open(fpath)
pdata = pd.read_csv(f)
pdata
Country NameCountry CodeIndicator NameIndicator Code196019611962196319641965...2008200920102011201220132014201520162017
0ArubaABWGDP (current US$)NY.GDP.MKTP.CDNaNNaNNaNNaNNaNNaN...2.791961e+092.498933e+092.467704e+092.584464e+09NaNNaNNaNNaNNaNNaN
1AfghanistanAFGGDP (current US$)NY.GDP.MKTP.CD5.377778e+085.488889e+085.466667e+087.511112e+088.000000e+081.006667e+09...1.019053e+101.248694e+101.593680e+101.793024e+102.053654e+102.004633e+102.005019e+101.921556e+101.946902e+10NaN
2AngolaAGOGDP (current US$)NY.GDP.MKTP.CDNaNNaNNaNNaNNaNNaN...8.417803e+107.549238e+108.247091e+101.041160e+111.153980e+111.249120e+111.267770e+111.029620e+119.533511e+10NaN
3AlbaniaALBGDP (current US$)NY.GDP.MKTP.CDNaNNaNNaNNaNNaNNaN...1.288135e+101.204421e+101.192695e+101.289087e+101.231978e+101.277628e+101.322824e+101.133526e+101.186387e+10NaN
4AndorraANDGDP (current US$)NY.GDP.MKTP.CDNaNNaNNaNNaNNaNNaN...4.007353e+093.660531e+093.355695e+093.442063e+093.164615e+093.281585e+093.350736e+092.811489e+092.858518e+09NaN
..................................................................
259KosovoXKXGDP (current US$)NY.GDP.MKTP.CDNaNNaNNaNNaNNaNNaN...5.687488e+095.653793e+095.829934e+096.649291e+096.473725e+097.072092e+097.386891e+096.440501e+096.649889e+09NaN
260Yemen, Rep.YEMGDP (current US$)NY.GDP.MKTP.CDNaNNaNNaNNaNNaNNaN...2.691085e+102.513027e+103.090675e+103.272642e+103.539315e+104.041523e+104.322858e+103.773392e+102.731761e+10NaN
261South AfricaZAFGDP (current US$)NY.GDP.MKTP.CD7.575248e+097.972841e+098.497830e+099.423212e+091.037379e+101.133417e+10...2.871000e+112.972170e+113.752980e+114.168780e+113.963330e+113.668100e+113.511190e+113.176110e+112.954560e+11NaN
262ZambiaZMBGDP (current US$)NY.GDP.MKTP.CD7.130000e+086.962857e+086.931429e+087.187143e+088.394286e+081.082857e+09...1.791086e+101.532834e+102.026556e+102.346010e+102.550337e+102.804546e+102.715063e+102.115439e+102.106399e+10NaN
263ZimbabweZWEGDP (current US$)NY.GDP.MKTP.CD1.052990e+091.096647e+091.117602e+091.159512e+091.217138e+091.311436e+09...4.415703e+098.621574e+091.014186e+101.209845e+101.424249e+101.545177e+101.589105e+101.630467e+101.661996e+10NaN

264 rows × 62 columns

2.2 清洗数据

观察数据,删除无用数据;

pdata.columns
Index(['Country Name', 'Country Code', 'Indicator Name', 'Indicator Code',
       '1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968',
       '1969', '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977',
       '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986',
       '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995',
       '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004',
       '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013',
       '2014', '2015', '2016', '2017'],
      dtype='object')
#删除数据
pdata = pdata.drop(['Country Code','Indicator Name', 'Indicator Code'], axis=1)
#重置索引
pdata = pdata.set_index('Country Name')
pdata = pdata.stack()
pdata = pd.DataFrame(pdata)
pdata.columns = ['GDP']
pdata
GDP
Country Name
Aruba19941.330168e+09
19951.320670e+09
19961.379888e+09
19971.531844e+09
19981.665363e+09
.........
Zimbabwe20121.424249e+10
20131.545177e+10
20141.589105e+10
20151.630467e+10
20161.661996e+10

11507 rows × 1 columns

2.3 设定分析目标

  • 主要国家GDP数据变化
  • 从1990年开始主要国家GDP数据变化
  • 中国GDP1990年开始GDP增长与累积增长
  • 中国GDP1990年开始,增长超过10%年份
  • 中国GDP连续5年增长最高的年份

3 主要国家DGP分析

选择国家:['China', 'Japan','United States', 'Germany', 'France', 'United Kingdom']

3.1 主要国家GDP趋势

问题:选择合适图表代表数据趋势?折线图图]最高的年份

import matplotlib.pyplot as plt
import matplotlib
import matplotlib.pyplot as plt
#设置支持中文
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus']=False
#设置画布大小
plt.figure(1,figsize=(15, 4))
countrys = ['China', 'Japan','United States', 'Germany', 'France', 'United Kingdom']
for c in countrys:
    plt.plot(pdata.loc[c])
plt.title("主要国家GDP增长趋势")
plt.legend(countrys)
_ = plt.xticks(rotation=90)

请添加图片描述

3.2 1990年开始GDP对比

import matplotlib.pyplot as plt
plt.figure(1,figsize=(15, 4))
countrys = ['China', 'Japan','United States', 'Germany', 'France', 'United Kingdom']
for c in countrys:
    #取国家,切片,取年代
    plt.plot(pdata.loc[c]['1990':])
plt.title("1990年-2016年 主要国家GDP增长趋势")
plt.legend(countrys)
_ = plt.xticks(rotation=90)

请添加图片描述

4 中国GDP分析

4.1 从1990年开始GDP变化化

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
_ = plt.figure(1,figsize=(15, 4))
#国家
countrys = ['China']
base1 = 10000*10000*10
base2 = 10000*10000*10
for c in countrys: 
    #中国,年份1990-
    data = pdata.loc[c]['1990':]
    plt.plot(data/base1, label='每年值')
    #累计值
    plt.plot(data.cumsum()/base1,label='累积GDP', color='r')
plt.legend()
_ = plt.xticks(rotation=90)

请添加图片描述

4.2 中国GDP分析增长超过10%的年份

问题: 计算每一年增长率,使用什么知识点?

gdp = pdata.loc['China']['1990':]
gdp
GDP
19903.608580e+11
19913.833730e+11
19924.269160e+11
19934.447310e+11
19945.643250e+11
19957.345480e+11
19968.637470e+11
19979.616040e+11
19981.029040e+12
19991.094000e+12
20001.211350e+12
20011.339400e+12
20021.470550e+12
20031.660290e+12
20041.955350e+12
20052.285970e+12
20062.752130e+12
20073.552180e+12
20084.598210e+12
20095.109950e+12
20106.100620e+12
20117.572550e+12
20128.560550e+12
20139.607220e+12
20141.048240e+13
20151.106470e+13
20161.119910e+13
4.2.1 计算每年增长率思路

思路1:循环迭代 :第二年-第一年/第一年

思路2:利用numpy计算

  • 第一年数据tmp1:[开始:结束-1]
  • 第二年数据tmp2:[第二年:结束]
  • 结果:tmp2-tmp1/tmp1 * 10000算
#获取第一年与第二年数据
tmp1 = gdp.loc[:'2015']['GDP']/1000000
tmp2 = gdp.loc['1991':]['GDP']/1000000
#转换成整数
tmp1 = tmp1.astype('i')
tmp2 = tmp2.astype('i')
#计算增长率
index = (tmp2.values-tmp1.values)/tmp1.values*100
#第一年插入0
grow = np.insert(index, 0, 0)
#插入新的列
gdp['grow'] = grow
gdp
GDPgrow
19903.608580e+110.000000
19913.833730e+116.239296
19924.269160e+1111.357868
19934.447310e+114.172952
19945.643250e+1126.891312
19957.345480e+1130.164001
19968.637470e+1117.588912
19979.616040e+1111.329359
19981.029040e+127.012866
19991.094000e+126.312680
20001.211350e+1210.726691
20011.339400e+1210.570851
20021.470550e+129.791698
20031.660290e+1212.902655
20041.955350e+1217.771594
20052.285970e+1216.908482
20062.752130e+1220.392219
20073.552180e+1229.070211
20084.598210e+1229.447551
20095.109950e+1211.129113
20106.100620e+1219.387078
20117.572550e+1224.127548
20128.560550e+1213.047124
20139.607220e+1212.226668
20141.048240e+139.109607
20151.106470e+135.555026
20161.119910e+131.214674
4.2.2 获取增长大于10%的年份
vals = gdp[gdp.grow > 10]
vals
GDPgrow
19924.269160e+1111.357868
19945.643250e+1126.891312
19957.345480e+1130.164001
19968.637470e+1117.588912
19979.616040e+1111.329359
20001.211350e+1210.726691
20011.339400e+1210.570851
20031.660290e+1212.902655
20041.955350e+1217.771594
20052.285970e+1216.908482
20062.752130e+1220.392219
20073.552180e+1229.070211
20084.598210e+1229.447551
20095.109950e+1211.129113
20106.100620e+1219.387078
20117.572550e+1224.127548
20128.560550e+1213.047124
20139.607220e+1212.226668

4.3 5年连续累加增长率最高年份

分析问题:5年连续增长:第一年+第二年+第三年…+第五年

如何计算并获取最

4.3.1 rolling:移动窗口方法

应用场景:金融,股票,统计等大?

#求连续2个数据中最大值
tmp = pd.Series([1,2,3,1,1,0])
tmp.rolling(2).max()
0    NaN
1    2.0
2    3.0
3    3.0
4    1.0
5    1.0
dtype: float64
tmp = pd.Series([1,2,3,1,1,0])
print(tmp.rolling(2).min_periods)
None
tmp = gdp.rolling(5).sum()
tmp
GDPgrow
1990NaNNaN
1991NaNNaN
1992NaNNaN
1993NaNNaN
19942.180203e+1248.661428
19952.553893e+1278.825430
19963.034267e+1290.175045
19973.568955e+1290.146536
19984.153264e+1292.986450
19994.682939e+1272.407818
20005.159741e+1252.970508
20015.635394e+1245.952447
20026.144340e+1244.414785
20036.775590e+1250.304575
20047.636940e+1261.763489
20058.711560e+1267.945280
20061.012429e+1377.766648
20071.220592e+1397.045161
20081.514384e+13113.590056
20091.829844e+13106.947575
20102.211309e+13109.426172
20112.693351e+13113.161501
20123.194188e+1397.138414
20133.695089e+1379.917531
20144.232334e+1377.898025
20154.728742e+1364.065972
20165.091397e+1341.153098
tmp[tmp['grow']==tmp.grow.max()]
GDPgrow
20081.514384e+13113.590056

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1440063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 使用 MailKit 发送邮件(附demo)

C# 使用 MailKit 发送邮件(附demo) 介绍安装包(依赖)案例简单代码属性介绍:MailboxAddress属性介绍:BodyBuilderSMTP 服务器端口SSL的案例:非SSL: 介绍一下SMTP 介绍 MailKit 是一…

【力扣】盛最多水的容器,双指针法

盛最多水的容器原题地址 方法一:双指针 如果使用暴力枚举,时间复杂度为 ,效率太低,会超时。 考虑使用双指针,利用单调性求解。用 left 和 right 作为数组 height 的下标,分别初始化为 0 和 size-1 。考…

容器库(6)-std::set

std::set是以key为元素的关联容器&#xff0c;容器中的key是唯一的且按顺序排列的。搜索、移除和插入的时间复杂度是 。底层通常是以红黑树实现的。 template<class Key,class Compare std::less<Key>,class Allocator std::allocator<Key> > class set; …

华为配置内部人员接入WLAN网络示例(802.1X认证)

配置内部人员接入WLAN网络示例&#xff08;802.1X认证&#xff09; 组网图形 图1 配置802.1X认证组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 用户接入WLAN网络&#xff0c;使用802.1X客户端进行认证&#xff0c;输入正确的用户名和密…

背包问题(01背包、完全背包、多重背包)详解(超详细!!!),及题目代码和题意,包含6个例题。

第一题&#xff1a;01背包问题 01背包问题 时间限制&#xff1a;1秒 内存限制&#xff1a;128M 题目描述 一个旅行者有一个最多能装 M 公斤的背包&#xff0c;现在有 n 件物品&#xff0c;它们的重量分别是 W1&#xff0c;W2&#xff0c;...,Wn ,它们的价值分别为 C1…

Netty的常用组件及线程模型设计(一)

Netty常用组件 Bootstrap Bootstrap是Netty框架的启动类和主入口类&#xff0c;发呢为客户端类Bootstrap和服务器类ServerBootstrap两种 Channel Channel是JavaNIO的一个基本构造&#xff0c;它代表一个到实体(如一个硬件设备、一个文件、一个网络套接字或者一个能够执行一…

电缆线的阻抗50Ω,真正含义是什么?

当我们提到电缆线的阻抗时&#xff0c;它到底是什么意思&#xff1f;RG58电缆通常指的是50Ω的电缆线。它的真正含义是什么&#xff1f;假如取一段3英尺(0.9144米)长的RG58电缆线&#xff0c;并且在前端测量信号路径与返回路径之间的阻抗。那么测得的阻抗是多少&#xff1f;当然…

探索C语言中的联合体与枚举:数据多面手的完美组合!

​ ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 联合体的定义 联合体又叫共用体&#xff0c;它是一种特殊的数据类型&…

Flomesh 发布 Pipy 0.99.1

值此新春佳节来临之际 &#xff0c;我们很高兴地宣布 Pipy 0.99.1 版本 的发布&#xff0c;此次更新带来了多项重要特性和改进&#xff0c;进一步增强了 Pipy 的功能性和灵活性。 新特性与改进&#xff1a; 增加了对 BPF (Berkeley Packet Filter) 的支持&#xff0c;包括加载…

Webstorm安装了vue脚手架后终端输入vue报错解决方法

当我们初学Vue的时候&#xff0c;刚安装完Vue脚手架之后&#xff0c;输入vue报错&#xff0c;是因为webstorm终端受限制了。 vue: 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本。 解决方案如下&#xff1a; 通过…

51单片机之数码管显示表白数字篇

朝菌不知晦朔 蟪蛄不知春秋 眼界决定境界 CSDN 请求进入专栏 是否进入《51单片机专栏》? 确定 目录 数码管的简介 数码管引脚定义 数码管的原理图 74HC245 代码实现 静态数码管的显示 动态数码管的显示 数码管实现表白画面 数码管的简介 L…

【Unity】重力场中的路径预测方法

前言 笔者前些天参加完了一场72小时的GameJam游戏开发比赛。这次比赛的主题是“探索”&#xff0c;笔者做了一个名为《探索者号》的探索宇宙的游戏&#xff08;游戏名一开始叫做《星际拾荒者》&#xff0c;但这不重要&#xff09;。 在开发过程中&#xff0c;笔者遇到了一些问…

2 月 7 日算法练习- 数据结构-并查集

并查集 并查集是一种图形数据结构&#xff0c;用于存储图中结点的连通关系。 每个结点有一个父亲&#xff0c;可以理解为“一只伸出去的手”&#xff0c;会指向另外一个点&#xff0c;初始时指向自己。 一个点的根节点是该点的父亲的父亲的的父亲&#xff0c;直到某个点的父亲…

探索NLP中的N-grams:理解,应用与优化

简介 n-gram[1] 是文本文档中 n 个连续项目的集合&#xff0c;其中可能包括单词、数字、符号和标点符号。 N-gram 模型在许多与单词序列相关的文本分析应用中非常有用&#xff0c;例如情感分析、文本分类和文本生成。 N-gram 建模是用于将文本从非结构化格式转换为结构化格式的…

Elasticsearch(四)

是这样的前面的几篇笔记&#xff0c;感觉对我没有形成知识体系&#xff0c;感觉乱糟糟的&#xff0c;只是大概的了解了一些基础知识&#xff0c;仅此而已&#xff0c;而且对于这技术栈的学习也是为了在后面的java开发使用&#xff0c;但是这里的API学的感觉有点乱&#xff01;然…

[VulnHub靶机渗透] dpwwn: 1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

接口测试--参数实现MD5加密签名规则

最近有个测试接口需求&#xff0c;接口有签名检查&#xff0c;签名规范为将所有请求参数按照key字典排序并连接起来进行md5加密&#xff0c;格式是&#xff1a;md5(bar2&baz3&foo1),得到签名&#xff0c;将签名追加到参数末尾。由于需要对参数进行动态加密并且做压力测…

有道ai写作,突破免费限制,无限制使用

预览效果 文末提供源码包及apk下载地址有道ai写作python版 import hashlib import time import json import ssl import base64 import uuidfrom urllib.parse import quote import requests from requests_toolbelt.multipart.encoder import MultipartEncoder from Crypto.C…

11 串口发送应用之使用状态机实现多字节数据发送

1. 使用串口发送5个字节数据到电脑 uart协议规定&#xff0c;发送的数据位只能是6&#xff0c;7&#xff0c;8位&#xff0c;如果数据位不符合&#xff0c;接收者接收不到数据。所以我们需要将40位数据data分为5个字节数据分别发送&#xff0c;那么接收者就能通过uart协议接收…

Mobile ALOHA 2: An Enhanced Low-Cost Hardware for Bimanual Teleoperation

文章目录 1. Mobile ALOHA 11.1 项目地址 2. Mobile ALOHA 22.1 相关链接2.2 Whats upgraded in II ? Reference Stanford 最新家务机器人 1. Mobile ALOHA 1 Mobile ALOHA: Learning Bimanual Mobile Manipulation with Low-Cost Whole-Body Teleoperation 1.1 项目地址 htt…