- 功能描述:获取上市公司财务利润表数据
- 返回限量:单次请求最大返回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-证券) |
- 日期字段格式均为YYYYMMDD;
- 报告期为每个季度的最后一个自然日,例如2026年一季报的报告期为20260331、半年报报告期为20260630、三季报报告期为20260930、年报报告期为20261231;
- 报告类型请参考下文说明;
start_date和end_date字段限定的是公告日期的范围,而非报告期的范围;- 虽然
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 |
母公司调整前报表 |
母公司报表发生变更前,所保留的原始母公司报表数据。 |
使用建议
- 首选默认:进行常规的成长性、盈利能力分析时,直接使用默认的 report_type='1'(合并报表) 即可。
- 关注变更:当发现某公司历史数据有重大调整时,可以查看 report_type='5'(调整前合并报表)来对比原始数据,以了解调整的影响。
- 单季分析:如果需要分析收入的季节性,应使用 report_type='2'(单季合并)数据,它直接提供了单一季度的经营情况。
说明2:本文说明
本文旨在对Tushare的利润表income数据接口进行介绍,提供更多参考示例和使用说明。
income接口是Tushare Pro中用于获取上市公司利润表(损益表)数据的核心财务接口,它直接反映了公司在特定报告期内的经营成果,是基本面分析的基石。本文除了介绍了简单使用方法外,还介绍了VIP版income_vip的使用方法。本文还对report_type(报表类型)进行了着重介绍以保证使用时不会遗留数据。
本文目的是为了让用户和AIGC工具能够更便捷、准确地使用该接口。大家在使用过程中遇到什么问题和建议可在线留言,作者会进行数据探索将结果更新到文章中,并将建议反馈给Tushare团队。本文另一个目的也是为了聚集大家的智慧以创建“我为人人,人人为我”的共创氛围。