加菲猫欢乐跑
65.99M · 2026-03-26
你想了解经济学领域中常用的Python库,核心需求是明确不同库的定位、用途和适用场景,方便针对性学习和使用。下面我会按“经济学核心工作流程”分类梳理,每个库都说明核心用途、典型应用场景和极简示例,确保你能快速对应到自己的研究/工作需求。
经济学研究的第一步是处理各类数据(面板数据、时间序列、调研数据),这类库是“刚需中的刚需”。
import pandas as pd
# 读取宏观经济数据(CSV格式)
df = pd.read_csv('macro_data.csv')
# 筛选2010年后中国的GDP数据,删除缺失值
china_gdp = df[(df['country']=='中国') & (df['year']>=2010)][['year', 'gdp']].dropna()
# 计算GDP同比增长率
china_gdp['gdp_growth'] = china_gdp['gdp'].pct_change() * 100
print(china_gdp.head())
import numpy as np
# 构建投入产出矩阵(简化版)
input_output = np.array([[0.2, 0.1], [0.3, 0.4]])
# 计算里昂惕夫逆矩阵(经济学投入产出分析核心)
leontief = np.linalg.inv(np.eye(2) - input_output)
print("里昂惕夫逆矩阵:n", leontief)
这是经济学区别于其他领域的核心模块,能完成回归、检验、时间序列分析等专业任务,替代Stata/EViews。
import statsmodels.api as sm
# 构建变量:y=消费支出,x=可支配收入(需加常数项)
y = china_gdp['gdp'] # 以GDP为被解释变量示例
x = sm.add_constant(np.arange(len(y))) # 时间趋势项为解释变量
# 拟合OLS模型并输出结果(系数、P值、R²)
model = sm.OLS(y, x).fit()
print(model.summary())
from linearmodels import PanelOLS
# 构造面板数据格式(设置个体和时间索引)
df_panel = df.set_index(['country', 'year'])
# 拟合固定效应面板回归
model = PanelOLS.from_formula('gdp ~ 1 + investment + EntityEffects', data=df_panel)
results = model.fit(cov_type='clustered', cluster_entity=True)
print(results.summary())
from arch import arch_model
# 构建GARCH(1,1)模型分析收益率波动率
returns = np.random.randn(1000) # 模拟收益率数据
model = arch_model(returns, vol='GARCH', p=1, q=1)
results = model.fit()
print(results.summary())
经济学研究需要将结果可视化,这类库能绘制专业的学术图表、动态交互图表。
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文显示(解决经济学图表中文乱码)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制GDP增长率折线图
plt.figure(figsize=(10, 6))
plt.plot(china_gdp['year'], china_gdp['gdp_growth'], marker='o', color='darkblue')
plt.title('2010-2023年中国GDP增长率')
plt.xlabel('年份')
plt.ylabel('增长率(%)')
plt.grid(alpha=0.3)
plt.show()
# 绘制变量相关性热力图(seaborn)
sns.heatmap(df[['gdp', 'investment', 'consumption']].corr(), annot=True, cmap='Blues')
import plotly.express as px
# 绘制动态GDP增长率折线图(可交互)
fig = px.line(china_gdp, x='year', y='gdp_growth', title='中国GDP增长率(可交互)')
fig.update_layout(xaxis_title='年份', yaxis_title='增长率(%)')
fig.show()
经济学研究常需要爬取/调取公开数据,这类库能高效获取数据,替代手动下载。
import requests
from bs4 import BeautifulSoup
# 爬取世界银行公开数据(简化版)
url = 'http://api.worldbank.org/v2/country/chn/indicator/NY.GDP.MKTP.CD?format=json'
response = requests.get(url)
data = response.json()[1] # 解析JSON数据
gdp_data = [(item['date'], item['value']) for item in data if item['value']]
print('中国GDP数据前5条:', gdp_data[:5])
import pandas_datareader as pdr
# 调取世界银行的中国人均GDP数据(1960-2023)
data = pdr.wb.download(indicator='NY.GDP.PCAP.CD', country='CN', start=1960, end=2023)
print(data.head())
适合需要做量化分析、机器学习预测的经济学方向(如计量经济学进阶、量化金融)。
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
# 用随机森林预测GDP(模拟数据)
X = df[['investment', 'consumption', 'export']] # 特征变量
y = df['gdp'] # 目标变量
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = RandomForestRegressor(n_estimators=100)
model.fit(X_train, y_train)
print('GDP预测准确率:', model.score(X_test, y_test))
from numba import jit
# 用numba加速GDP增长率计算(大规模数据)
@jit(nopython=True) # 编译加速
def calc_gdp_growth(gdp_array):
growth = np.zeros_like(gdp_array)
for i in range(1, len(gdp_array)):
growth[i] = (gdp_array[i] - gdp_array[i-1]) / gdp_array[i-1] * 100
return growth
gdp_array = np.array(china_gdp['gdp'])
growth = calc_gdp_growth(gdp_array)
print('加速后的增长率计算结果:', growth[:5])