11、对国民经济核算季度数据.npz进行以下操作 (1)绘制2000年到2017年国内生产总值随时间变化的柱状图(把四个季度的生产值加和) (2)绘制农业、工业、建筑三个产业随不同季度时间变化的折线图 (3)绘制2015年所有产业值的饼图(用python 解决)
时间: 2024-09-20 10:05:08 浏览: 100
国民经济核算季度数据.rar
首先,你需要加载`.npz`文件中的数据,并提取出你需要的时间序列和产业数据。假设数据已经按年份和季度组织好。接下来,我们可以使用`pandas`, `matplotlib`等库来完成这三个任务。
1. **柱状图**:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.io import loadmat
# 加载数据
data = np.load('quarterly_data.npz')['data']
df = pd.DataFrame(data, columns=['year', 'quarter', 'gdp', 'agriculture', 'industry', 'construction'])
# 筛选2000年至2017年的数据
df_2000_2017 = df[(df['year'] >= 2000) & (df['year'] <= 2017)]
# 按季度求和
quarterly_sum = df_2000_2017.groupby(['year', 'quarter']).sum()
# 绘制柱状图
plt.figure(figsize=(10,5))
quarterly_sum['gdp'].plot(kind='bar', stacked=True)
plt.xlabel('Year')
plt.ylabel('GDP')
plt.title('2000-2017 GDP by Quarter')
plt.show()
```
2. **折线图**:
```python
# 按季度和产业分开
industries = ['agriculture', 'industry', 'construction']
industry_series = {i: quarterly_sum[i] for i in industries}
fig, ax = plt.subplots(len(industries), sharex=True, figsize=(10, len(industries)*5))
for i, industry in enumerate(industries):
industry_df = df_2000_2017.set_index(['year', 'quarter'])[industry]
industry_df.plot(ax=ax[i])
ax[i].set_ylabel(industry)
ax[-1].set_xlabel('Quarter')
plt.suptitle('Industry Growth over Quarters, 2000-2017')
plt.tight_layout()
plt.show()
```
3. **饼图(2015年产业值)**:
```python
# 切片2015年的数据
df_2015 = df[df['year'] == 2015]
# 计算2015各产业总值
total_2015 = df_2015[['agriculture', 'industry', 'construction']].sum().values
# 绘制饼图
plt.figure(figsize=(8,8))
plt.pie(total_2015, labels=[' Agriculture', ' Industry', ' Construction'], autopct='%1.1f%%')
plt.title('Industry Values in 2015')
plt.legend(title='Industry', loc="upper right")
plt.show()
```
记得替换上述代码中的文件路径(`quarterly_data.npz`),以及根据实际数据结构进行适当调整。
阅读全文