资产负债表及其数据获取

资产负债表及其数据获取

cover

资产负债表

资产负债表(Balance Sheet)是反映企业在某一特定日期财务状况的会计报表。它主要展示企业的资产、负债和所有者权益三大部分,通过“资产 = 负债 + 所有者权益”的基本会计等式,揭示企业的财务结构和偿债能力。

资产负债表在股票投资中的意义

资产负债表能够帮助投资者了解企业的财务健康状况,包括资产规模、负债水平和资本结构。通过分析资产负债表,投资者可以评估企业的偿债能力、流动性风险以及长期发展潜力,从而为投资决策提供重要依据。例如,较高的流动比率和较低的负债率通常意味着企业财务稳健,风险较低,更值得投资者关注。

AKShare中的资产负债表数据接口(深沪为例)

stock_zcfz_em 是 AKShare 提供的用于获取沪深 A 股上市公司资产负债表数据的接口。该接口支持按股票代码和报告期查询,返回包括资产、负债、所有者权益等详细财务数据,适用于财务分析和量化研究。

接口描述

目标地址: https://data.eastmoney.com/bbsj/202003/zcfz.html

  • 描述: 东方财富-数据中心-年报季报-业绩快报-资产负债表

  • 限量: 单次获取指定 date 的资产负债表数据

  • 输入参数

名称类型描述
datestrdate=“20240331”; 取值范围 {“XXXX0331”, “XXXX0630”, “XXXX0930”, “XXXX1231”}; 从 20081231 开始
  • 输出参数
名称类型描述
序号int64-
股票代码object-
股票简称object-
资产-货币资金float64注意单位: 元
资产-应收账款float64注意单位: 元
资产-存货float64注意单位: 元
资产-总资产float64注意单位: 元
资产-总资产同比float64注意单位: %
负债-应付账款float64注意单位: 元
负债-总负债float64注意单位: 元
负债-预收账款float64注意单位: 元
负债-总负债同比float64注意单位: %
资产负债率float64注意单位: %
股东权益合计float64注意单位: 元
公告日期object-

调用示例

以调用2025年第一季报表为例:

import akshare as ak

# 获取2025年第一季报的资产负债表数据
df_zcfz = ak.stock_zcfz_em(date="20250331")
df_zcfz.head()
  0%|          | 0/11 [00:00<?, ?it/s]
序号股票代码股票简称资产-货币资金资产-应收账款资产-存货资产-总资产资产-总资产同比负债-应付账款负债-预收账款负债-总负债负债-总负债同比资产负债率股东权益合计公告日期
01301632广东建科5.853390e+087.279953e+083.872676e+072.688044e+09NaN2.303785e+08NaN6.605951e+08NaN24.5753082.027449e+092025-07-24
12300500启迪设计6.393385e+089.971594e+084.786633e+062.879578e+09-14.0450957.592979e+08NaN1.728767e+09-17.05277260.0354251.150811e+092025-07-22
23603406天富龙7.582228e+082.491199e+086.981773e+083.929401e+09NaN1.171285e+08314133.663.359125e+08NaN8.5486953.593489e+092025-07-18
34301491汉桑科技9.616578e+081.253828e+082.673562e+081.533640e+09NaN1.570890e+08NaN4.311737e+08NaN28.1144091.102466e+092025-07-17
45001221悍高集团9.714730e+081.589946e+081.441201e+082.658762e+0933.7599273.053996e+089298620.967.967950e+08NaN29.9686471.861967e+092025-07-11
# 货币资金比总负债计算
df_zcfz["货币资金比总负债"] = df_zcfz["资产-货币资金"] / df_zcfz["负债-总负债"]
df_zcfz.head()
序号股票代码股票简称资产-货币资金资产-应收账款资产-存货资产-总资产资产-总资产同比负债-应付账款负债-预收账款负债-总负债负债-总负债同比资产负债率股东权益合计公告日期货币资金比总负债
01301632广东建科5.853390e+087.279953e+083.872676e+072.688044e+09NaN2.303785e+08NaN6.605951e+08NaN24.5753082.027449e+092025-07-240.886078
12300500启迪设计6.393385e+089.971594e+084.786633e+062.879578e+09-14.0450957.592979e+08NaN1.728767e+09-17.05277260.0354251.150811e+092025-07-220.369823
23603406天富龙7.582228e+082.491199e+086.981773e+083.929401e+09NaN1.171285e+08314133.663.359125e+08NaN8.5486953.593489e+092025-07-182.257203
34301491汉桑科技9.616578e+081.253828e+082.673562e+081.533640e+09NaN1.570890e+08NaN4.311737e+08NaN28.1144091.102466e+092025-07-172.230326
45001221悍高集团9.714730e+081.589946e+081.441201e+082.658762e+0933.7599273.053996e+089298620.967.967950e+08NaN29.9686471.861967e+092025-07-111.219226

# 根据当前日期保存资产负债数据df_zcfz
import pandas as pd
df_zcfz.to_excel(f"资产负债_{pd.Timestamp.now().strftime('%Y%m%d')}.xlsx", index=False)

总结

本笔记介绍了资产负债表的基本概念及其在股票投资分析中的重要性,详细说明了如何使用 AKShare 获取沪深 A 股上市公司的资产负债表数据,并通过 pandas 进行数据处理和分析。我们以 2025 年第一季度为例,获取了全市场资产负债表数据,计算了“货币资金比总负债”等关键财务指标,并将结果保存为 Excel 文件,便于后续分析。通过本流程,投资者可以高效获取和分析上市公司财务健康状况,为投资决策提供数据支持。

### 如何使用Tushare获取比亚迪(002594.SZ)和长城汽车(601633.SH)的财务数据 以下是实现目标的具体方法,包括如何通过 `tushare` 获取两家公司的资产负债表、利润表以及现金流量表,并进一步计算所需的财务指标(如营业毛利率和研发费用率),最后将结果保存到 Excel 文件中。 #### 安装依赖库 首先需要安装必要的 Python 库: ```bash pip install tushare openpyxl pandas ``` --- #### 编写代码逻辑 以下是一个完整的脚本: ```python import tushare as ts import pandas as pd # 设置 Token 并初始化接口 ts.set_token('your_tushare_token_here') pro = ts.pro_api() def fetch_financial_data(stock_code, start_year=2019, end_year=2023): """ 获取指定股票代码的时间范围内的财务报表数据。 参数: stock_code (str): 股票代码 start_year (int): 开始年份 end_year (int): 结束年份 返回: dict: 各类财务数据字典 """ financial_data = {} # 遍历年份构建时间区间 dates = [(f"{year}0101", f"{year}1231") for year in range(start_year, end_year + 1)] # 获取资产负债表 balance_sheets = [] for start_date, end_date in dates: df_bs = pro.balancesheet(ts_code=stock_code, start_date=start_date, end_date=end_date) balance_sheets.append(df_bs) financial_data['balancesheet'] = pd.concat(balance_sheets).reset_index(drop=True) # 获取利润表 income_statements = [] for start_date, end_date in dates: df_is = pro.income(ts_code=stock_code, start_date=start_date, end_date=end_date) income_statements.append(df_is) financial_data['income'] = pd.concat(income_statements).reset_index(drop=True) # 获取现金流量表 cash_flows = [] for start_date, end_date in dates: df_cf = pro.cashflow(ts_code=stock_code, start_date=start_date, end_date=end_date) cash_flows.append(df_cf) financial_data['cashflow'] = pd.concat(cash_flows).reset_index(drop=True) return financial_data def calculate_metrics(financial_data): """ 计算所需财务指标:营业毛利率、研发费用率等。 参数: financial_data (dict): 包含各类财务数据的字典 返回: DataFrame: 添加了新列的收入表数据框 """ income_df = financial_data.get('income') if income_df is not None and 'revenue' in income_df.columns and 'oper_cost' in income_df.columns: # 计算营业毛利率 gross_profit_margin = ((income_df['revenue'] - income_df['oper_cost']) / income_df['revenue']).fillna(0) income_df['gross_profit_margin'] = gross_profit_margin * 100 # 百分比形式 if income_df is not None and 'rd_expense' in income_df.columns and 'revenue' in income_df.columns: # 计算研发费用率 rd_expense_ratio = (income_df['rd_expense'] / income_df['revenue']).fillna(0) income_df['rd_expense_ratio'] = rd_expense_ratio * 100 # 百分比形式 return income_df[['end_date', 'gross_profit_margin', 'rd_expense_ratio']] if income_df is not None else None def save_to_excel(stock_name, financial_data, metrics_df): """ 将财务数据和计算后的指标保存为 Excel 文件。 参数: stock_name (str): 股票名称 financial_data (dict): 财务数据字典 metrics_df (DataFrame): 指标数据框 """ with pd.ExcelWriter(f'{stock_name}_financials.xlsx') as writer: if 'balancesheet' in financial_data: financial_data['balancesheet'].to_excel(writer, sheet_name='Balance Sheet', index=False) if 'income' in financial_data: financial_data['income'].to_excel(writer, sheet_name='Income Statement', index=False) if 'cashflow' in financial_data: financial_data['cashflow'].to_excel(writer, sheet_name='Cash Flow Statement', index=False) if metrics_df is not None: metrics_df.to_excel(writer, sheet_name='Metrics', index=False) if __name__ == "__main__": stocks = { "BYD": "002594.SZ", "Great_Wall_Motor": "601633.SH" } for name, code in stocks.items(): print(f"Fetching data for {name} ({code})...") try: data = fetch_financial_data(code) metrics = calculate_metrics(data) save_to_excel(name, data, metrics) print(f"Data saved to '{name}_financials.xlsx'") except Exception as e: print(f"Error processing {name}: {e}") ``` --- #### 关键说明 1. **设置 Token**: 替换 `'your_tushare_token_here'` 为你自己的 Tushare Token[^1]。 2. **函数功能**: - `fetch_financial_data`: 提取给定股票代码的历史财务报表数据,支持跨年度的数据请求。 - `calculate_metrics`: 基于提取的利润表数据,计算营业毛利率 `(营业收入 - 营业成本)/营业收入` 和研发费用率 `研发支出/营业收入`[^2]。 - `save_to_excel`: 将所有提取的数据及其衍生指标保存到单独的 Excel 文件中,便于后续分析。 3. **错误处理**: 如果某项数据无法成功下载,则会跳过并记录错误消息。 --- #### 输出文件结构 对于每只股票,生成一个名为 `{股票名}_financials.xlsx` 的 Excel 文件,其中包含以下几个工作表: - Balance Sheet: 资产负债表数据。 - Income Statement: 利润表数据。 - Cash Flow Statement: 现金流量表数据。 - Metrics: 自定义计算的财务指标(如营业毛利率和研发费用率)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值