Tushare接口文档:利润表(income)

简介: `income`接口是Tushare Pro中用于获取上市公司利润表(损益表)数据的核心财务接口,它直接反映了公司在特定报告期内的经营成果,是基本面分析的基石。本文除了介绍了简单使用方法外,还介绍了VIP版`income_vip`的使用方法。本文还对`report_type`(报表类型)进行了着重介绍以保证使用时不会遗留数据。
  • 功能描述:获取上市公司财务利润表数据
  • 返回限量:单次请求最大返回500行
  • 接口权限:2000积分200次/分钟;5000积分500次/分钟
  • 说明:

   1. 财报披露当晚21点更新,最晚次日;

   2. 当某个报告期有多条记录时,可能是因为财报发生过修正,最新数据可用update_flag为1进行识别,为0则表示为修正前的数据;

   3. 当前接口只能按单支股票获取数据,如果需要获取某一报告期全部上市公司数据,可使用income_vip接口,需5000积分;

   4. 上市公司披露财务三大报表的时候并非简单披露三张表,会依据是否包含子公司、是否累计以及是否发生数据修正披露更多报表。详细请见文末说明1;


输入参数:

名称

类型

必选

描述

ts_code

str

Y

股票代码

ann_date

str

N

公告日期

f_ann_date

str

N

实际公告日期

start_date

str

N

公告日开始日期

end_date

str

N

公告日结束日期

period

str

N

报告期

report_type

str

N

报告类型

comp_type

str

N

公司类型(1-一般工商业;2-银行;3-保险;4-证券)

  1. 日期字段格式均为YYYYMMDD;
  2. 报告期为每个季度的最后一个自然日,例如2026年一季报的报告期为20260331、半年报报告期为20260630、三季报报告期为20260930、年报报告期为20261231;
  3. 报告类型请参考下文说明;
  4. start_date和end_date字段限定的是公告日期的范围,而非报告期的范围;
  5. 虽然report_type是可选参数,但该参数在本接口和VIP版本income_vip中均已默认为“1”,如果想要获取全部数据,则需要对该字段进行遍历。对报表类型的说明请见文末“说明”章节;


输出参数:

名称

类型

默认显示

描述

ts_code

str

Y

TS代码

ann_date

str

Y

公告日期

f_ann_date

str

Y

实际公告日期

end_date

str

Y

报告期

report_type

str

Y

报告类型

comp_type

str

Y

公司类型

end_type

str

Y

报告期类型

basic_eps

float

Y

基本每股收益

diluted_eps

float

Y

稀释每股收益

total_revenue

float

Y

营业总收入

revenue

float

Y

营业收入

int_income

float

Y

利息收入

prem_earned

float

Y

已赚保费

comm_income

float

Y

手续费及佣金收入

n_commis_income

float

Y

手续费及佣金净收入

n_oth_income

float

Y

其他经营净收益

n_oth_b_income

float

Y

加:其他业务净收益

prem_income

float

Y

保险业务收入

out_prem

float

Y

减:分出保费

une_prem_reser

float

Y

提取未到期责任准备金

reins_income

float

Y

其中:分保费收入

n_sec_tb_income

float

Y

代理买卖证券业务净收入

n_sec_uw_income

float

Y

证券承销业务净收入

n_asset_mg_income

float

Y

受托客户资产管理业务净收入

oth_b_income

float

Y

其他业务收入

fv_value_chg_gain

float

Y

加:公允价值变动净收益

invest_income

float

Y

加:投资净收益

ass_invest_income

float

Y

其中:对联营企业和合营企业的投资收益

forex_gain

float

Y

加:汇兑净收益

total_cogs

float

Y

营业总成本

oper_cost

float

Y

减:营业成本

int_exp

float

Y

减:利息支出

comm_exp

float

Y

减:手续费及佣金支出

biz_tax_surchg

float

Y

减:营业税金及附加

sell_exp

float

Y

减:销售费用

admin_exp

float

Y

减:管理费用

fin_exp

float

Y

减:财务费用

assets_impair_loss

float

Y

减:资产减值损失

prem_refund

float

Y

退保金

compens_payout

float

Y

赔付总支出

reser_insur_liab

float

Y

提取保险责任准备金

div_payt

float

Y

保户红利支出

reins_exp

float

Y

分保费用

oper_exp

float

Y

营业支出

compens_payout_refu

float

Y

减:摊回赔付支出

insur_reser_refu

float

Y

减:摊回保险责任准备金

reins_cost_refund

float

Y

减:摊回分保费用

other_bus_cost

float

Y

其他业务成本

operate_profit

float

Y

营业利润

non_oper_income

float

Y

加:营业外收入

non_oper_exp

float

Y

减:营业外支出

nca_disploss

float

Y

其中:减:非流动资产处置净损失

total_profit

float

Y

利润总额

income_tax

float

Y

所得税费用

n_income

float

Y

净利润(含少数股东损益)

n_income_attr_p

float

Y

净利润(不含少数股东损益)

minority_gain

float

Y

少数股东损益

oth_compr_income

float

Y

其他综合收益

t_compr_income

float

Y

综合收益总额

compr_inc_attr_p

float

Y

归属于母公司(或股东)的综合收益总额

compr_inc_attr_m_s

float

Y

归属于少数股东的综合收益总额

ebit

float

Y

息税前利润

ebitda

float

Y

息税折旧摊销前利润

insurance_exp

float

Y

保险业务支出

undist_profit

float

Y

年初未分配利润

distable_profit

float

Y

可分配利润

rd_exp

float

Y

研发费用

fin_exp_int_exp

float

Y

财务费用:利息费用

fin_exp_int_inc

float

Y

财务费用:利息收入

transfer_surplus_rese

float

Y

盈余公积转入

transfer_housing_imprest

float

Y

住房周转金转入

transfer_oth

float

Y

其他转入

adj_lossgain

float

Y

调整以前年度损益

withdra_legal_surplus

float

Y

提取法定盈余公积

withdra_legal_pubfund

float

Y

提取法定公益金

withdra_biz_devfund

float

Y

提取企业发展基金

withdra_rese_fund

float

Y

提取储备基金

withdra_oth_ersu

float

Y

提取任意盈余公积金

workers_welfare

float

Y

职工奖金福利

distr_profit_shrhder

float

Y

可供股东分配的利润

prfshare_payable_dvd

float

Y

应付优先股股利

comshare_payable_dvd

float

Y

应付普通股股利

capit_comstock_div

float

Y

转作股本的普通股股利

net_after_nr_lp_correct

float

N

扣除非经常性损益后的净利润(更正前)

credit_impa_loss

float

N

信用减值损失

net_expo_hedging_benefits

float

N

净敞口套期收益

oth_impair_loss_assets

float

N

其他资产减值损失

total_opcost

float

N

营业总成本(二)

amodcost_fin_assets

float

N

以摊余成本计量的金融资产终止确认收益

oth_income

float

N

其他收益

asset_disp_income

float

N

资产处置收益

continued_net_profit

float

N

持续经营净利润

end_net_profit

float

N

终止经营净利润

update_flag

str

Y

更新标识


示例:

示例1:获取某支股票某段时间内公布的利润表数据

传入ts_code可指定需要获取数据的个股,传入start_date和end_date可限定财务报表公告的日期范围,fields参数可限定返回的字段。本示例演示获取贵州茅台在2025年公布的利润表数据,获取了2024年年报、2025年一季报到三季报,并未包含2025年年报。

import tushare as ts
pro = ts.pro_api()
df = pro.income(ts_code='600519.SH',  start_date='20250101',  end_date='20251231', fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,basic_eps,diluted_eps')
df

输出结果:

          ts_code        ann_date        f_ann_date        end_date        report_type        comp_type        basic_eps        diluted_eps
0        600519.SH        20251030        20251030        20250930        1        1        51.53        51.53
1        600519.SH        20250813        20250813        20250630        1        1        36.18        36.18
2        600519.SH        20250430        20250430        20250331        1        1        21.38        21.38
3        600519.SH        20250403        20250403        20241231        1        1        68.64        68.64

示例2:获取指定报告期的个股利润表数据

通过传入period可指定返回特定报告期的利润表数据。例如本示例传入ts_code为“600519.SH”、period为“20251231”可获得贵州茅台2025年年报利润表数据。

df = pro.income(ts_code='600519.SH', period='20251231', fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,revenue,basic_eps,diluted_eps')
df

输出结果:

          ts_code        end_date        report_type        revenue        basic_eps        diluted_eps
0        600519.SH        20251231        1        1.688381e+11        65.66        65.66

示例3:获取单季合并报表

通过传入report_type可获取指定报表类型的财务数据,值为“2”时得到的是“单季合并”报表。观察本示例贵州茅台20251231的营业收入revenue和示例二中相应的值,可发现report_type为“1”时是当年累计值,为“2”时则为单季度非累计值。更多报表类型请见下文说明章节。

注意,虽然report_type是可选参数,但该参数已经默认为“1”;

df = pro.income_vip(ts_code='600519.SH', period='20251231', report_type='2', fields='ts_code,end_date,report_type,revenue,basic_eps,diluted_eps')
df

输出结果:

          ts_code        end_date        report_type        revenue        basic_eps        diluted_eps
0        600519.SH        20251231        2        4.038439e+10        None        None

示例4:通过VIP版本获取某一报告期所有上市公司的利润表数据

VIP版本利润表数据接口可不必传入ts_code字段,单次返回的数据量上限为9000条记录。本示例演示利用VIP版本获取所有上市公司2025年年报利润表数据。从返回的记录数来看,部分公司拥有不止一条数据。从update_flag字段也可以看出这一点。可能是因为财报发生过修正,最新数据可用update_flag为1进行识别,为0则表示为修正前的数据。

df = pro.income_vip(period='20251231', fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,basic_eps,diluted_eps,update_flag')
df

输出结果:

          ts_code        ann_date        f_ann_date        end_date        report_type        comp_type        basic_eps        diluted_eps        update_flag
0        002107.SZ        20260120        20260120        20251231        1        1        0.170        0.170        1
1        874378.BJ        20260108        20260108        20251231        1        1        1.580        1.580        1
2        874391.BJ        20260122        20260122        20251231        1        1        0.935        0.935        1
3        874400.BJ        20260117        20260117        20251231        1        1        0.880        0.880        1
4        874538.BJ        20260122        20260122        20251231        1        1        1.640        1.640        0
...        ...        ...        ...        ...        ...        ...        ...        ...        ...
6849        920211.BJ        20260328        20260522        20251231        1        1        2.110        2.110        1
6850        874236.BJ        20260613        20260613        20251231        1        1        2.370        2.370        1
6851        001232.SZ        20260422        20260716        20251231        1        1        2.610        2.610        1
6852        002330.SZ        20260424        20260718        20251231        1        1        -0.016        -0.016        1
6853        A25080.SZ        20260320        20260320        20251231        1        1        2.370        2.370        0
6854 rows × 9 columns

示例5:获取某一报告期所有上市公司所有报表类型的利润表数据

通过对report_type字段进行遍历来获取所有报表类型的数据。

import pandas as pd
lst_dfs = []
for t in range(1, 13):
    data = pro.income_vip(period='20251231', report_type=str(t), fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,basic_eps,diluted_eps,update_flag')
    if not data.empty:
        lst_dfs.append(data)
df = pd.concat(lst_dfs, ignore_index=True)
df

输出结果:

          ts_code        ann_date        f_ann_date        end_date        report_type        comp_type        basic_eps        diluted_eps        update_flag
0        002107.SZ        20260120        20260120        20251231        1        1        0.170        0.170        1
1        874378.BJ        20260108        20260108        20251231        1        1        1.580        1.580        1
2        874391.BJ        20260122        20260122        20251231        1        1        0.935        0.935        1
3        874400.BJ        20260117        20260117        20251231        1        1        0.880        0.880        1
4        874538.BJ        20260122        20260122        20251231        1        1        1.640        1.640        0
...        ...        ...        ...        ...        ...        ...        ...        ...        ...
20356        301666.SZ        20260326        20260326        20251231        10        1        NaN        NaN        0
20357        301696.SZ        20260319        20260319        20251231        10        1        NaN        NaN        0
20358        001235.SZ        20260421        20260421        20251231        10        1        NaN        NaN        0
20359        874774.BJ        20260421        20260421        20251231        10        1        NaN        NaN        0
20360        001232.SZ        20260422        20260422        20251231        10        1        NaN        NaN        1
20361 rows × 9 columns


说明:

说明1:对`report_type`(报表类型)的说明:

上市公司披露财务三大报表的时候并非简单披露三张表,会依据是否包含子公司、是否累计以及是否发生数据修正披露更多报表。本小节说明首先摘录Tushare官网上对report_type字段的说明表,然后围绕合并范围(是否包含子公司)、报告期(本季/累计/单季)以及数据状态(原始/调整/上年同期)三个维度划分进一步补充说明,最后提出一些使用建议。

注意,虽然report_type是可选参数,但该参数已经默认为“1”;

Tushare官网对主要报表类型说明

代码

类型

说明

1

合并报表

上市公司最新报表(默认)

2

单季合并

单一季度的合并报表

3

调整单季合并表

调整后的单季合并报表(如果有)

4

调整合并报表

本年度公布上年同期的财务报表数据,报告期为上年度

5

调整前合并报表

数据发生变更,将原数据进行保留,即调整前的原数据

6

母公司报表

该公司母公司的财务报表数据

7

母公司单季表

母公司的单季度表

8

母公司调整单季表

母公司调整后的单季表

9

母公司调整表

该公司母公司的本年度公布上年同期的财务报表数据

10

母公司调整前报表

母公司调整之前的原始财务报表数据

11

母公司调整前合并报表

母公司调整之前合并报表原数据

12

母公司调整前报表

母公司报表发生变更前保留的原数据

补充说明

report_type(报表类型)有12种类型主要围绕合并范围(是否包含子公司)、报告期(本季/累计/单季)以及数据状态(原始/调整/上年同期)三个维度划分。

a. 最常用报表 (默认)

代码

类型名称

简要说明

1

合并报表

默认报表。反映上市公司及其全部子公司作为一个整体的财务状况,是进行绝大多数财务分析(如估值、成长性)时使用的标准报表。

b. 按合并范围划分

代码

类型名称

简要说明

1

合并报表

如上所述,包含母公司和所有子公司。

6

母公司报表

仅反映上市公司(母公司)自身的财务状况,不含子公司。用于分析母公司本身的经营和资产情况。

c. 按数据状态/调整类型划分

代码

类型名称

简要说明

4

调整合并报表

本年度公布的上年同期的财务报表数据(即为了可比性,对上年数据按新准则或口径调整后的版本)。

5

调整前合并报表

当数据发生变更(更正)时,保留的原始旧数据。

9

母公司调整表

对应代码 4 的母公司版本。

10

母公司调整前报表

对应代码 5 的母公司版本。

d. 按报告期划分(单季/累计)

代码

类型名称

简要说明

2

单季合并

单独提取本报告期(一个季度)内的经营数据,而非年初至今的累计数据。

3

调整单季合并表

对应代码 2 的调整版本(如有)。

7

母公司单季表

对应代码 2 的母公司版本。

8

母公司调整单季表

对应代码 3 的母公司版本。

e. 其他

代码

类型名称

简要说明

11

母公司调整前合并报表

母公司报表发生变更前,所保留的原始合并报表数据。

12

母公司调整前报表

母公司报表发生变更前,所保留的原始母公司报表数据。

使用建议

  1. 首选默认:进行常规的成长性、盈利能力分析时,直接使用默认的 report_type='1'(合并报表) 即可。
  2. 关注变更:当发现某公司历史数据有重大调整时,可以查看 report_type='5'(调整前合并报表)来对比原始数据,以了解调整的影响。
  3. 单季分析:如果需要分析收入的季节性,应使用 report_type='2'(单季合并)数据,它直接提供了单一季度的经营情况。

说明2:本文说明

本文旨在对Tushare的利润表income数据接口进行介绍,提供更多参考示例和使用说明。

income接口是Tushare Pro中用于获取上市公司利润表(损益表)数据的核心财务接口,它直接反映了公司在特定报告期内的经营成果,是基本面分析的基石。本文除了介绍了简单使用方法外,还介绍了VIP版income_vip的使用方法。本文还对report_type(报表类型)进行了着重介绍以保证使用时不会遗留数据。

本文目的是为了让用户和AIGC工具能够更便捷、准确地使用该接口。大家在使用过程中遇到什么问题和建议可在线留言,作者会进行数据探索将结果更新到文章中,并将建议反馈给Tushare团队。本文另一个目的也是为了聚集大家的智慧以创建“我为人人,人人为我”的共创氛围。

相关文章
|
3月前
|
人工智能 安全 API
API Key如何从"人手一把"走向"按需分配"——从身份认证到策略驱动的访问控制
本文探讨AI时代API Key管理的痛点与破局之道:当团队规模扩大,分散的静态Key导致成本失控、安全风险与排查困难。核心方案是用“虚拟Key+策略绑定”替代“人手一把”,实现按需签发、动态授权、分钟级回收,并达成成本归因透明化。管得更聪明,而非更严。
286 0
|
3月前
|
数据挖掘
Tushare接口文档:个股资金流向(moneyflow)
本文旨在对Tushare的个股资金流向`moneyflow`数据接口进行介绍,提供更多参考示例和使用说明。 本接口可获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向。本文除了从交易日、个股方面简单介绍如何快速获取数据外,还演示了如何计算主力资金流向及对单支股票主力资金流向绘制趋势图,最后演示了如何筛选主力资金净流入top 10的个股。
749 9
|
3月前
Tushare接口文档:指数基本信息(index_basic)
本文旨在对Tushare的指数基本信息`index_basic`数据接口进行介绍,提供更多参考示例和使用说明。 通过本接口可获取指数的基础信息,例如指数代码、全称简称、发布方、基期、加权方式等。在指数行情等多个需要依赖`ts_code`而不清楚后缀的情况下,可以使用该接口获取指数代码`symbol`与`ts_code`的对应关系。本文还介绍了如何通过传递`market`和`category`字段分别指定发布指数的交易所或服务商以及指数分类。
372 1
|
3月前
|
存储
Tushare接口文档:A股日线行情(daily)
本接口可以获取股票日行情数据,包括高开低收、成交量、成交额等数据。本文介绍了接口不同参数一般的使用方法,并推荐了实战中将历史行情按照`trade_date`循环遍历获取后存储在本地,之后再在每日更新。本文还对`pre_close`字段、盘后固定价格成交数据进行了强调。
885 1
|
1月前
Tushare接口文档:主营业务构成(fina_mainbz)
`fina_mainbz`接口返回上市公司在某一报告期内,按产品(P)、地区(D)、行业(I) 等不同维度细分的营业收入、成本和利润。这些数据能帮助投资者了解一家公司的收入来源结构,是分析其业务重心和盈利能力的基础。
138 3
|
3月前
|
存储 Shell
Tushare接口文档:股票基础信息(stock_basic)
本文旨在对Tushare的stock_basic数据接口进行介绍,讲解了如何使用stock_basic接口获取A股股票基础信息数据。并增加了一些使用案例和说明,方便用户和大模型工具便捷并准确调用。
455 0
|
2月前
Tushare接口文档:每日停复牌信息(suspend_d)
该接口返回指定交易日或指定股票的停复牌记录。股票停牌意味着该股票在特定时间段内无法交易,对于量化策略来说,如果在回测时忽略停牌因素,会导致“幸存者偏差”——回测收益看起来很漂亮,实盘却因资金被停牌股锁住而大幅跑输预期。`suspend_d`接口正是解决这一问题的关键工具。
151 1
|
2月前
Tushare接口文档:股票历史列表(bak_basic)
`bak_basic`返回指定交易日全部股票的基础信息与核心财务指标,包括股票代码、名称、行业、地域、市盈率、股本、资产、每股收益、市净率、股东人数等。与仅提供股票代码和名称的`stock_basic`接口相比,`bak_basic`附带了一个截面上的基本面快照,是进行历史回测、截面分析和因子研究的重要数据源。
174 2
|
1月前
Tushare接口文档:业绩快报(express)
`express`接口返回上市公司业绩快报的关键财务数据,包括营业收入、营业利润、净利润、总资产、净资产、每股收益(EPS)、净资产收益率(ROE)等核心指标,以及部分指标的同比增长率。
114 0
|
1月前
Tushare接口文档:业绩预告(forecast)
该接口返回上市公司的业绩预告数据,包括预告类型、净利润变动幅度(上下限)、净利润金额(上下限)、上年同期净利润、业绩变动原因等关键信息。业绩预告是上市公司在正式财报发布前,提前向市场披露的当期经营业绩预测,对股价有重要的影响。
142 0

热门文章

最新文章