1
0
Files
finance/材料准备/财报信息.ipynb
2025-01-13 18:24:28 +08:00

1167 lines
42 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-01-13T01:30:08.643756Z",
"start_time": "2025-01-13T01:30:06.177472Z"
}
},
"source": [
"import pandas as pd\n",
"import tushare as ts\n",
"\n",
"ts_pro = ts.pro_api(token=\"64ebff4fa679167600b905ee45dd88e76f3963c0ff39157f3f085f0e\")"
],
"outputs": [],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T01:30:08.652416Z",
"start_time": "2025-01-13T01:30:08.646084Z"
}
},
"cell_type": "code",
"source": [
"def get_balance_sheet_df(start_year, end_year):\n",
" result = ts_pro.balancesheet_vip(period=f\"{start_year}1231\")\n",
" print(f\"Pull balance sheet: {start_year}\")\n",
" for year in range(start_year + 1, end_year + 1):\n",
" print(f\"Pull balance sheet: {year}\")\n",
" period = f\"{year}1231\"\n",
" temp = ts_pro.balancesheet_vip(period=period)\n",
" result = pd.concat([result, temp], ignore_index=True)\n",
" return result\n",
"\n",
"\n",
"def get_income_df(start_year, end_year):\n",
" result = ts_pro.income_vip(period=f\"{start_year}1231\")\n",
" print(f\"Pull income: {start_year}\")\n",
" for year in range(start_year + 1, end_year + 1):\n",
" print(f\"Pull income: {year}\")\n",
" period = f\"{year}1231\"\n",
" temp = ts_pro.income_vip(period=period)\n",
" result = pd.concat([result, temp], ignore_index=True)\n",
" return result\n",
"\n",
"\n",
"def get_cash_flow_df(start_year, end_year):\n",
" result = ts_pro.cashflow_vip(period=f\"{start_year}1231\")\n",
" print(f\"Pull cash flow: {start_year}\")\n",
" for year in range(start_year + 1, end_year + 1):\n",
" print(f\"Pull cash flow: {year}\")\n",
" period = f\"{year}1231\"\n",
" temp = ts_pro.cashflow_vip(period=period)\n",
" result = pd.concat([result, temp], ignore_index=True)\n",
" return result\n",
"\n",
"\n",
"def clean_df(df):\n",
" df = df.drop_duplicates(subset=[\"ts_code\", \"end_date\"])\n",
" df[\"end_date\"] = df[\"end_date\"].str[:4]\n",
" return df"
],
"id": "14a28ff4952f0df8",
"outputs": [],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T09:08:04.607819Z",
"start_time": "2025-01-13T09:08:04.602640Z"
}
},
"cell_type": "code",
"source": [
"start_year = 1990\n",
"end_year = 2024"
],
"id": "dc68cde196159626",
"outputs": [],
"execution_count": 11
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T09:09:36.004427Z",
"start_time": "2025-01-13T09:08:33.797018Z"
}
},
"cell_type": "code",
"source": [
"# 财务负债表\n",
"balance_sheet_df = clean_df(get_balance_sheet_df(start_year, end_year))\n",
"balance_sheet_df.to_csv(f\"/Users/lanyuanxiaoyao/SynologyDrive/data/Tushare/财务报表/资产负债表{start_year}-{end_year}.csv\", index=False)"
],
"id": "33cd797a12ad567e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pull balance sheet: 1990\n",
"Pull balance sheet: 1991\n",
"Pull balance sheet: 1992\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_50121/709533518.py:8: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
" result = pd.concat([result, temp], ignore_index=True)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pull balance sheet: 1993\n",
"Pull balance sheet: 1994\n",
"Pull balance sheet: 1995\n",
"Pull balance sheet: 1996\n",
"Pull balance sheet: 1997\n",
"Pull balance sheet: 1998\n",
"Pull balance sheet: 1999\n",
"Pull balance sheet: 2000\n",
"Pull balance sheet: 2001\n",
"Pull balance sheet: 2002\n",
"Pull balance sheet: 2003\n",
"Pull balance sheet: 2004\n",
"Pull balance sheet: 2005\n",
"Pull balance sheet: 2006\n",
"Pull balance sheet: 2007\n",
"Pull balance sheet: 2008\n",
"Pull balance sheet: 2009\n",
"Pull balance sheet: 2010\n",
"Pull balance sheet: 2011\n",
"Pull balance sheet: 2012\n",
"Pull balance sheet: 2013\n",
"Pull balance sheet: 2014\n",
"Pull balance sheet: 2015\n",
"Pull balance sheet: 2016\n",
"Pull balance sheet: 2017\n",
"Pull balance sheet: 2018\n",
"Pull balance sheet: 2019\n",
"Pull balance sheet: 2020\n",
"Pull balance sheet: 2021\n",
"Pull balance sheet: 2022\n",
"Pull balance sheet: 2023\n",
"Pull balance sheet: 2024\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_50121/709533518.py:8: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
" result = pd.concat([result, temp], ignore_index=True)\n"
]
}
],
"execution_count": 12
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T09:11:33.507055Z",
"start_time": "2025-01-13T09:10:33.447304Z"
}
},
"cell_type": "code",
"source": [
"income_df = clean_df(get_income_df(start_year, end_year))\n",
"income_df.to_csv(f\"/Users/lanyuanxiaoyao/SynologyDrive/data/Tushare/财务报表/利润表{start_year}-{end_year}.csv\", index=False)"
],
"id": "17306c1524f5e173",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pull income: 1990\n",
"Pull income: 1991\n",
"Pull income: 1992\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_50121/709533518.py:19: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
" result = pd.concat([result, temp], ignore_index=True)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pull income: 1993\n",
"Pull income: 1994\n",
"Pull income: 1995\n",
"Pull income: 1996\n",
"Pull income: 1997\n",
"Pull income: 1998\n",
"Pull income: 1999\n",
"Pull income: 2000\n",
"Pull income: 2001\n",
"Pull income: 2002\n",
"Pull income: 2003\n",
"Pull income: 2004\n",
"Pull income: 2005\n",
"Pull income: 2006\n",
"Pull income: 2007\n",
"Pull income: 2008\n",
"Pull income: 2009\n",
"Pull income: 2010\n",
"Pull income: 2011\n",
"Pull income: 2012\n",
"Pull income: 2013\n",
"Pull income: 2014\n",
"Pull income: 2015\n",
"Pull income: 2016\n",
"Pull income: 2017\n",
"Pull income: 2018\n",
"Pull income: 2019\n",
"Pull income: 2020\n",
"Pull income: 2021\n",
"Pull income: 2022\n",
"Pull income: 2023\n",
"Pull income: 2024\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_50121/709533518.py:19: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
" result = pd.concat([result, temp], ignore_index=True)\n"
]
}
],
"execution_count": 13
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T09:13:32.890801Z",
"start_time": "2025-01-13T09:12:46.032342Z"
}
},
"cell_type": "code",
"source": [
"cash_flow_df = clean_df(get_cash_flow_df(start_year, end_year))\n",
"cash_flow_df.to_csv(f\"/Users/lanyuanxiaoyao/SynologyDrive/data/Tushare/财务报表/现金流量表{start_year}-{end_year}.csv\", index=False)"
],
"id": "334dbe20f2047a1e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pull cash flow: 1990\n",
"Pull cash flow: 1991\n",
"Pull cash flow: 1992\n",
"Pull cash flow: 1993\n",
"Pull cash flow: 1994\n",
"Pull cash flow: 1995\n",
"Pull cash flow: 1996\n",
"Pull cash flow: 1997\n",
"Pull cash flow: 1998\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_50121/709533518.py:30: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
" result = pd.concat([result, temp], ignore_index=True)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pull cash flow: 1999\n",
"Pull cash flow: 2000\n",
"Pull cash flow: 2001\n",
"Pull cash flow: 2002\n",
"Pull cash flow: 2003\n",
"Pull cash flow: 2004\n",
"Pull cash flow: 2005\n",
"Pull cash flow: 2006\n",
"Pull cash flow: 2007\n",
"Pull cash flow: 2008\n",
"Pull cash flow: 2009\n",
"Pull cash flow: 2010\n",
"Pull cash flow: 2011\n",
"Pull cash flow: 2012\n",
"Pull cash flow: 2013\n",
"Pull cash flow: 2014\n",
"Pull cash flow: 2015\n",
"Pull cash flow: 2016\n",
"Pull cash flow: 2017\n",
"Pull cash flow: 2018\n",
"Pull cash flow: 2019\n",
"Pull cash flow: 2020\n",
"Pull cash flow: 2021\n",
"Pull cash flow: 2022\n",
"Pull cash flow: 2023\n",
"Pull cash flow: 2024\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_50121/709533518.py:30: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
" result = pd.concat([result, temp], ignore_index=True)\n"
]
}
],
"execution_count": 15
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T01:46:57.717599Z",
"start_time": "2025-01-13T01:46:46.377806Z"
}
},
"cell_type": "code",
"source": [
"finance_df = pd.merge(balance_sheet_df, income_df, on=[\"ts_code\", \"end_date\"])\n",
"finance_df = pd.merge(finance_df, cash_flow_df, on=[\"ts_code\", \"end_date\"])\n",
"finance_df.to_csv(\"../temp/finance.csv\", index=False)"
],
"id": "f8bea62f377b5e2",
"outputs": [],
"execution_count": 7
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T01:46:57.814028Z",
"start_time": "2025-01-13T01:46:57.728111Z"
}
},
"cell_type": "code",
"source": "finance_df",
"id": "b14b477ca3c0f720",
"outputs": [
{
"data": {
"text/plain": [
" ts_code ann_date_x f_ann_date_x end_date report_type_x comp_type_x \\\n",
"0 830964.BJ 20180103 20180103 2014 1 1 \n",
"1 834765.BJ 20180105 20180105 2014 1 1 \n",
"2 835174.BJ 20180130 20180130 2014 1 1 \n",
"3 301076.SZ 20180117 20180117 2014 1 1 \n",
"4 601528.SH 20180116 20180116 2014 1 2 \n",
"... ... ... ... ... ... ... \n",
"47434 603260.SH 20240430 20240430 2023 1 1 \n",
"47435 603828.SH 20240430 20240430 2023 1 1 \n",
"47436 002120.SZ 20240430 20240430 2023 1 1 \n",
"47437 000790.SZ 20240430 20240430 2023 1 1 \n",
"47438 000504.SZ 20240430 20240430 2023 1 1 \n",
"\n",
" end_type_x total_share cap_rese undistr_porfit ... \\\n",
"0 4 6.800000e+07 1.949319e+07 5.757873e+06 ... \n",
"1 4 1.500000e+07 2.169516e+07 9.042014e+06 ... \n",
"2 4 5.714286e+07 NaN -7.873967e+06 ... \n",
"3 4 5.000000e+07 NaN 1.800787e+07 ... \n",
"4 4 1.197900e+09 3.048310e+08 1.363431e+09 ... \n",
"... ... ... ... ... ... \n",
"47434 4 1.182207e+09 1.138407e+10 1.921573e+10 ... \n",
"47435 4 5.959602e+08 2.395205e+08 -1.640928e+08 ... \n",
"47436 4 2.899193e+09 2.810602e+09 1.234578e+10 ... \n",
"47437 4 6.281426e+08 7.375118e+07 2.299767e+08 ... \n",
"47438 4 3.115739e+08 4.234729e+08 -5.311005e+08 ... \n",
"\n",
" net_dism_capital_add net_cash_rece_sec credit_impa_loss \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"... ... ... ... \n",
"47434 NaN NaN NaN \n",
"47435 NaN NaN 3.794784e+07 \n",
"47436 NaN NaN 1.401759e+08 \n",
"47437 NaN NaN NaN \n",
"47438 NaN NaN NaN \n",
"\n",
" use_right_asset_dep oth_loss_asset end_bal_cash beg_bal_cash \\\n",
"0 NaN None NaN NaN \n",
"1 NaN None NaN NaN \n",
"2 NaN None NaN NaN \n",
"3 NaN None NaN NaN \n",
"4 NaN None NaN NaN \n",
"... ... ... ... ... \n",
"47434 7.167836e+06 None 1.034290e+09 1.822382e+09 \n",
"47435 4.186533e+06 None 1.255399e+08 1.020296e+08 \n",
"47436 5.239484e+08 None 4.313758e+09 3.507770e+09 \n",
"47437 2.214418e+06 None 1.164838e+08 3.787762e+07 \n",
"47438 3.289952e+06 None 4.937811e+08 2.181183e+08 \n",
"\n",
" end_bal_cash_equ beg_bal_cash_equ update_flag \n",
"0 NaN NaN 0 \n",
"1 NaN NaN 0 \n",
"2 NaN NaN 0 \n",
"3 NaN NaN 1 \n",
"4 NaN NaN 1 \n",
"... ... ... ... \n",
"47434 NaN NaN 1 \n",
"47435 NaN NaN 0 \n",
"47436 NaN NaN 1 \n",
"47437 NaN NaN 0 \n",
"47438 NaN NaN 0 \n",
"\n",
"[47439 rows x 329 columns]"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ts_code</th>\n",
" <th>ann_date_x</th>\n",
" <th>f_ann_date_x</th>\n",
" <th>end_date</th>\n",
" <th>report_type_x</th>\n",
" <th>comp_type_x</th>\n",
" <th>end_type_x</th>\n",
" <th>total_share</th>\n",
" <th>cap_rese</th>\n",
" <th>undistr_porfit</th>\n",
" <th>...</th>\n",
" <th>net_dism_capital_add</th>\n",
" <th>net_cash_rece_sec</th>\n",
" <th>credit_impa_loss</th>\n",
" <th>use_right_asset_dep</th>\n",
" <th>oth_loss_asset</th>\n",
" <th>end_bal_cash</th>\n",
" <th>beg_bal_cash</th>\n",
" <th>end_bal_cash_equ</th>\n",
" <th>beg_bal_cash_equ</th>\n",
" <th>update_flag</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>830964.BJ</td>\n",
" <td>20180103</td>\n",
" <td>20180103</td>\n",
" <td>2014</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>6.800000e+07</td>\n",
" <td>1.949319e+07</td>\n",
" <td>5.757873e+06</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>834765.BJ</td>\n",
" <td>20180105</td>\n",
" <td>20180105</td>\n",
" <td>2014</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1.500000e+07</td>\n",
" <td>2.169516e+07</td>\n",
" <td>9.042014e+06</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>835174.BJ</td>\n",
" <td>20180130</td>\n",
" <td>20180130</td>\n",
" <td>2014</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>5.714286e+07</td>\n",
" <td>NaN</td>\n",
" <td>-7.873967e+06</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>301076.SZ</td>\n",
" <td>20180117</td>\n",
" <td>20180117</td>\n",
" <td>2014</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>5.000000e+07</td>\n",
" <td>NaN</td>\n",
" <td>1.800787e+07</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>601528.SH</td>\n",
" <td>20180116</td>\n",
" <td>20180116</td>\n",
" <td>2014</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>1.197900e+09</td>\n",
" <td>3.048310e+08</td>\n",
" <td>1.363431e+09</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47434</th>\n",
" <td>603260.SH</td>\n",
" <td>20240430</td>\n",
" <td>20240430</td>\n",
" <td>2023</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1.182207e+09</td>\n",
" <td>1.138407e+10</td>\n",
" <td>1.921573e+10</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7.167836e+06</td>\n",
" <td>None</td>\n",
" <td>1.034290e+09</td>\n",
" <td>1.822382e+09</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47435</th>\n",
" <td>603828.SH</td>\n",
" <td>20240430</td>\n",
" <td>20240430</td>\n",
" <td>2023</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>5.959602e+08</td>\n",
" <td>2.395205e+08</td>\n",
" <td>-1.640928e+08</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3.794784e+07</td>\n",
" <td>4.186533e+06</td>\n",
" <td>None</td>\n",
" <td>1.255399e+08</td>\n",
" <td>1.020296e+08</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47436</th>\n",
" <td>002120.SZ</td>\n",
" <td>20240430</td>\n",
" <td>20240430</td>\n",
" <td>2023</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>2.899193e+09</td>\n",
" <td>2.810602e+09</td>\n",
" <td>1.234578e+10</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.401759e+08</td>\n",
" <td>5.239484e+08</td>\n",
" <td>None</td>\n",
" <td>4.313758e+09</td>\n",
" <td>3.507770e+09</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47437</th>\n",
" <td>000790.SZ</td>\n",
" <td>20240430</td>\n",
" <td>20240430</td>\n",
" <td>2023</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>6.281426e+08</td>\n",
" <td>7.375118e+07</td>\n",
" <td>2.299767e+08</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2.214418e+06</td>\n",
" <td>None</td>\n",
" <td>1.164838e+08</td>\n",
" <td>3.787762e+07</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47438</th>\n",
" <td>000504.SZ</td>\n",
" <td>20240430</td>\n",
" <td>20240430</td>\n",
" <td>2023</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>3.115739e+08</td>\n",
" <td>4.234729e+08</td>\n",
" <td>-5.311005e+08</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3.289952e+06</td>\n",
" <td>None</td>\n",
" <td>4.937811e+08</td>\n",
" <td>2.181183e+08</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>47439 rows × 329 columns</p>\n",
"</div>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 8
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-01-13T09:37:00.340262Z",
"start_time": "2025-01-13T09:36:59.184110Z"
}
},
"cell_type": "code",
"source": [
"import akshare as ak\n",
"\n",
"# ak.stock_balance_sheet_by_yearly_em(\"SZ000001\")\n",
"# df = ak.stock_financial_report_sina(\"sz000001\", symbol=\"资产负债表\")\n",
"df = ak.stock_financial_benefit_ths(\"000001\")\n",
"# df[df[\"报告日\"].str.endswith(\"1231\")]\n",
"df"
],
"id": "582154dbc28b6bd",
"outputs": [
{
"data": {
"text/plain": [
" 报告期 报表核心指标 *净利润 *营业总收入 *营业支出 *归属于母公司所有者的净利润 \\\n",
"0 2024-09-30 397.29亿 1115.82亿 637.13亿 397.29亿 \n",
"1 2024-06-30 258.79亿 771.32亿 450.45亿 258.79亿 \n",
"2 2024-03-31 149.32亿 387.70亿 202.16亿 149.32亿 \n",
"3 2023-12-31 464.55亿 1646.99亿 1067.71亿 464.55亿 \n",
"4 2023-09-30 396.35亿 1276.34亿 785.87亿 396.35亿 \n",
".. ... ... ... ... ... ... \n",
"110 1993-06-30 1.37亿 2.66亿 False 1.37亿 \n",
"111 1992-12-31 1.72亿 4.76亿 False 1.72亿 \n",
"112 1991-12-31 1.13亿 3.35亿 False 1.13亿 \n",
"113 1990-12-31 7087.50万 False False 7087.50万 \n",
"114 1989-12-31 4302.00万 False False 4302.00万 \n",
"\n",
" *扣除非经常性损益后的净利润 报表全部指标 一、营业总收入 其中:营业收入 ... 少数股东损益 扣除非经常性损益后的利润 六、每股收益 \\\n",
"0 397.48亿 1115.82亿 1115.82亿 ... False 397.48亿 \n",
"1 258.80亿 771.32亿 771.32亿 ... False 258.80亿 \n",
"2 149.06亿 387.70亿 387.70亿 ... False 149.06亿 \n",
"3 464.31亿 1646.99亿 1646.99亿 ... False 464.31亿 \n",
"4 395.68亿 1276.34亿 1276.34亿 ... False 395.68亿 \n",
".. ... ... ... ... ... ... ... ... \n",
"110 False 2.66亿 2.66亿 ... False False \n",
"111 False 4.76亿 4.76亿 ... False False \n",
"112 False 3.35亿 3.35亿 ... False False \n",
"113 False False False ... False False \n",
"114 False False False ... False False \n",
"\n",
" (一)基本每股收益 (二)稀释每股收益 七、其他综合收益 归属母公司所有者的其他综合收益 八、综合收益总额 归属于母公司股东的综合收益总额 \\\n",
"0 1.94 1.94 -7.86亿 -7.86亿 389.43亿 False \n",
"1 1.23 1.23 -3.56亿 -3.56亿 255.23亿 False \n",
"2 0.66 0.66 3.45亿 3.45亿 152.77亿 False \n",
"3 2.25 2.25 -3.72亿 -3.72亿 460.83亿 False \n",
"4 1.94 1.94 -8.38亿 -8.38亿 387.97亿 False \n",
".. ... ... ... ... ... ... \n",
"110 False False False False False False \n",
"111 False False False False False False \n",
"112 False False False False False False \n",
"113 False False False False False False \n",
"114 False False False False False False \n",
"\n",
" 归属于少数股东的综合收益总额 \n",
"0 False \n",
"1 False \n",
"2 False \n",
"3 False \n",
"4 False \n",
".. ... \n",
"110 False \n",
"111 False \n",
"112 False \n",
"113 False \n",
"114 False \n",
"\n",
"[115 rows x 43 columns]"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>报告期</th>\n",
" <th>报表核心指标</th>\n",
" <th>*净利润</th>\n",
" <th>*营业总收入</th>\n",
" <th>*营业支出</th>\n",
" <th>*归属于母公司所有者的净利润</th>\n",
" <th>*扣除非经常性损益后的净利润</th>\n",
" <th>报表全部指标</th>\n",
" <th>一、营业总收入</th>\n",
" <th>其中:营业收入</th>\n",
" <th>...</th>\n",
" <th>少数股东损益</th>\n",
" <th>扣除非经常性损益后的利润</th>\n",
" <th>六、每股收益</th>\n",
" <th>(一)基本每股收益</th>\n",
" <th>(二)稀释每股收益</th>\n",
" <th>七、其他综合收益</th>\n",
" <th>归属母公司所有者的其他综合收益</th>\n",
" <th>八、综合收益总额</th>\n",
" <th>归属于母公司股东的综合收益总额</th>\n",
" <th>归属于少数股东的综合收益总额</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2024-09-30</td>\n",
" <td></td>\n",
" <td>397.29亿</td>\n",
" <td>1115.82亿</td>\n",
" <td>637.13亿</td>\n",
" <td>397.29亿</td>\n",
" <td>397.48亿</td>\n",
" <td></td>\n",
" <td>1115.82亿</td>\n",
" <td>1115.82亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>397.48亿</td>\n",
" <td></td>\n",
" <td>1.94</td>\n",
" <td>1.94</td>\n",
" <td>-7.86亿</td>\n",
" <td>-7.86亿</td>\n",
" <td>389.43亿</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2024-06-30</td>\n",
" <td></td>\n",
" <td>258.79亿</td>\n",
" <td>771.32亿</td>\n",
" <td>450.45亿</td>\n",
" <td>258.79亿</td>\n",
" <td>258.80亿</td>\n",
" <td></td>\n",
" <td>771.32亿</td>\n",
" <td>771.32亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>258.80亿</td>\n",
" <td></td>\n",
" <td>1.23</td>\n",
" <td>1.23</td>\n",
" <td>-3.56亿</td>\n",
" <td>-3.56亿</td>\n",
" <td>255.23亿</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2024-03-31</td>\n",
" <td></td>\n",
" <td>149.32亿</td>\n",
" <td>387.70亿</td>\n",
" <td>202.16亿</td>\n",
" <td>149.32亿</td>\n",
" <td>149.06亿</td>\n",
" <td></td>\n",
" <td>387.70亿</td>\n",
" <td>387.70亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>149.06亿</td>\n",
" <td></td>\n",
" <td>0.66</td>\n",
" <td>0.66</td>\n",
" <td>3.45亿</td>\n",
" <td>3.45亿</td>\n",
" <td>152.77亿</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2023-12-31</td>\n",
" <td></td>\n",
" <td>464.55亿</td>\n",
" <td>1646.99亿</td>\n",
" <td>1067.71亿</td>\n",
" <td>464.55亿</td>\n",
" <td>464.31亿</td>\n",
" <td></td>\n",
" <td>1646.99亿</td>\n",
" <td>1646.99亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>464.31亿</td>\n",
" <td></td>\n",
" <td>2.25</td>\n",
" <td>2.25</td>\n",
" <td>-3.72亿</td>\n",
" <td>-3.72亿</td>\n",
" <td>460.83亿</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2023-09-30</td>\n",
" <td></td>\n",
" <td>396.35亿</td>\n",
" <td>1276.34亿</td>\n",
" <td>785.87亿</td>\n",
" <td>396.35亿</td>\n",
" <td>395.68亿</td>\n",
" <td></td>\n",
" <td>1276.34亿</td>\n",
" <td>1276.34亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>395.68亿</td>\n",
" <td></td>\n",
" <td>1.94</td>\n",
" <td>1.94</td>\n",
" <td>-8.38亿</td>\n",
" <td>-8.38亿</td>\n",
" <td>387.97亿</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>110</th>\n",
" <td>1993-06-30</td>\n",
" <td></td>\n",
" <td>1.37亿</td>\n",
" <td>2.66亿</td>\n",
" <td>False</td>\n",
" <td>1.37亿</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>2.66亿</td>\n",
" <td>2.66亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>111</th>\n",
" <td>1992-12-31</td>\n",
" <td></td>\n",
" <td>1.72亿</td>\n",
" <td>4.76亿</td>\n",
" <td>False</td>\n",
" <td>1.72亿</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>4.76亿</td>\n",
" <td>4.76亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>112</th>\n",
" <td>1991-12-31</td>\n",
" <td></td>\n",
" <td>1.13亿</td>\n",
" <td>3.35亿</td>\n",
" <td>False</td>\n",
" <td>1.13亿</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>3.35亿</td>\n",
" <td>3.35亿</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>113</th>\n",
" <td>1990-12-31</td>\n",
" <td></td>\n",
" <td>7087.50万</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>7087.50万</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>114</th>\n",
" <td>1989-12-31</td>\n",
" <td></td>\n",
" <td>4302.00万</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>4302.00万</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>...</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td></td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>115 rows × 43 columns</p>\n",
"</div>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 21
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}