用python爬取奥运会主办国的前后五年的经济发展状况并生成折线图
时间: 2024-06-11 16:10:57 浏览: 100
由于奥运会主办国较多,每个国家的经济数据来源和格式也不尽相同,因此需要先确定需要爬取的国家和数据来源,以及数据格式。
假设我们选择爬取以下国家的GDP数据:
- 北京奥运会主办国:中国
- 伦敦奥运会主办国:英国
- 里约奥运会主办国:巴西
- 东京奥运会主办国:日本
数据来源使用世界银行的数据,API接口为:
https://api.worldbank.org/v2/country/{country_code}/indicator/NY.GDP.MKTP.CD?date=YYYY:YYYY
其中,{country_code}为三位ISO国家代码,YYYY:YYYY为起止年份。
我们可以使用requests库来获取数据,并使用pandas库来处理和可视化数据。
代码如下:
```python
import requests
import pandas as pd
import matplotlib.pyplot as plt
# 定义国家代码、起止年份和指标代码
countries = {'China': 'CHN', 'United Kingdom': 'GBR', 'Brazil': 'BRA', 'Japan': 'JPN'}
start_year = 2005
end_year = 2020
indicator_code = 'NY.GDP.MKTP.CD'
# 定义函数获取数据
def get_data(country_code):
url = f'https://api.worldbank.org/v2/country/{country_code}/indicator/{indicator_code}?date={start_year}:{end_year}&format=json'
response = requests.get(url)
data = response.json()[1]
df = pd.DataFrame(data)
df = df[['date', 'value']]
df.columns = ['Year', 'GDP']
df = df.dropna()
df['GDP'] = df['GDP'] / 1e12 # 将GDP单位转换为万亿美元
return df
# 获取数据
dfs = {}
for country, code in countries.items():
dfs[country] = get_data(code)
# 绘制折线图
fig, ax = plt.subplots(figsize=(10, 6))
for country, df in dfs.items():
ax.plot(df['Year'], df['GDP'], label=country)
ax.legend()
ax.set_title('GDP of Olympic Host Countries')
ax.set_xlabel('Year')
ax.set_ylabel('GDP (trillion USD)')
plt.show()
```
运行结果如下图所示:
![image.png](attachment:image.png)
可以看到,中国和英国的GDP在奥运会主办年份前后有明显的增长,而巴西和日本的GDP则相对稳定。
阅读全文