你想了解经济学领域中常用的Python库,核心需求是明确不同库的定位、用途和适用场景,方便针对性学习和使用。下面我会按“经济学核心工作流程”分类梳理,每个库都说明核心用途、典型应用场景和极简示例,确保你能快速对应到自己的研究/工作需求。
一、数据处理与清洗(经济学基础环节)
经济学研究的第一步是处理各类数据(面板数据、时间序列、调研数据),这类库是“刚需中的刚需”。
1. pandas(核心中的核心)
- 核心用途:结构化数据的清洗、合并、筛选、分组、时间序列处理,替代Excel/Stata的核心数据处理功能;
- 典型场景:处理国家统计局面板数据、计算GDP增长率/通胀率、筛选特定年份/地区的经济数据;
- 极简示例:
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())
2. numpy(数值计算底层库)
- 核心用途:矩阵运算、数值求解、数组操作,是pandas/statsmodels等库的底层支撑;
- 典型场景:经济模型的矩阵求解(如投入产出模型)、生成模拟数据(如随机效用模型);
- 极简示例:
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。
1. statsmodels(计量分析首选)
- 核心用途:经典计量模型估计与检验,覆盖OLS、面板回归、ARIMA、VAR、格兰杰因果、协整检验等;
- 典型场景:消费函数回归(凯恩斯模型)、通胀率时间序列预测、政策效应面板分析;
- 极简示例(OLS回归):
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())
2. linearmodels(面板数据专用)
- 核心用途:弥补statsmodels面板分析的不足,支持固定效应、随机效应、动态面板(GMM)等;
- 典型场景:省级面板数据的政策效应分析、企业面板数据的生产率研究;
- 极简示例:
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())
3. arch(金融计量专用)
- 核心用途:波动率建模,支持GARCH、EGARCH等模型;
- 典型场景:股票收益率波动率分析、通胀波动率预测(宏观金融);
- 极简示例:
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())
三、数据可视化(论文/报告必备)
经济学研究需要将结果可视化,这类库能绘制专业的学术图表、动态交互图表。
1. matplotlib/seaborn(基础可视化)
- 核心用途:绘制静态图表(折线图、散点图、柱状图、热力图),适配学术论文格式;
- 典型场景:GDP增长率时间序列图、不同国家通胀率对比图、变量相关性热力图;
- 极简示例:
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')
2. plotly(动态交互可视化)
- 核心用途:绘制动态交互图表,支持缩放、悬停查看数值,适合报告/演示;
- 典型场景:省级GDP动态地图、时间序列交互图、多维度经济指标仪表盘;
- 极简示例:
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()
四、经济数据获取(一手数据来源)
经济学研究常需要爬取/调取公开数据,这类库能高效获取数据,替代手动下载。
1. requests/BeautifulSoup(网络爬虫)
- 核心用途:爬取网页上的公开经济数据(如国家统计局、Wind、世界银行);
- 典型场景:爬取月度CPI数据、各省市财政收支数据;
- 极简示例:
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])
2. pandas-datareader(金融/宏观数据调取)
- 核心用途:直接调取权威数据源(世界银行、IMF、美联储、雅虎财经);
- 典型场景:调取美联储利率数据、世界银行人均GDP数据、股票市场数据;
- 极简示例:
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())
五、进阶:经济模型与预测
适合需要做量化分析、机器学习预测的经济学方向(如计量经济学进阶、量化金融)。
1. scikit-learn(机器学习预测)
- 核心用途:经济指标预测、分类分析,支持回归、随机森林、梯度提升等;
- 典型场景:GDP增速预测、消费行为分类、信用风险评估;
- 极简示例:
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))
2. numba(加速数值计算)
- 核心用途:加速自定义经济模型的计算(如DSGE模型、Agent-Based模型);
- 典型场景:大规模数值模拟、复杂经济模型求解;
- 极简示例:
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])