This commit is contained in:
512song committed 2024-06-21 00:16:46 +08:00
1 parent a42afc579b
commit c3bc3437f0
5 files changed
+1824 -36

No files matched your search

+461 -2
View File
@@ -431,6 +431,465 @@
" print(\"邮件发送失败\",e)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 财务报表获取"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import akshare as ak\n",
"\n",
"stock_financial_debt_ths_df = ak.stock_financial_debt_ths(symbol=\"000338\", indicator=\"按年度\")\n",
"print(stock_financial_debt_ths_df)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import akshare as ak\n",
"\n",
"stock_financial_report_sina_df = ak.stock_financial_report_sina(stock=\"000338\", symbol=\"资产负债表\")\n",
"print(stock_financial_report_sina_df)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"execution": {
"iopub.execute_input": "2024-06-19T13:06:55.726456Z",
"iopub.status.busy": "2024-06-19T13:06:55.725703Z",
"iopub.status.idle": "2024-06-19T13:06:56.342226Z",
"shell.execute_reply": "2024-06-19T13:06:56.341651Z",
"shell.execute_reply.started": "2024-06-19T13:06:55.726387Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"报告期\n",
"净利润\n",
"净利润同比增长率\n",
"扣非净利润\n",
"扣非净利润同比增长率\n",
"营业总收入\n",
"营业总收入同比增长率\n",
"基本每股收益\n",
"每股净资产\n",
"每股资本公积金\n",
"每股未分配利润\n",
"每股经营现金流\n",
"销售净利率\n",
"销售毛利率\n",
"净资产收益率\n",
"净资产收益率-摊薄\n",
"营业周期\n",
"存货周转率\n",
"存货周转天数\n",
"应收账款周转天数\n",
"流动比率\n",
"速动比率\n",
"保守速动比率\n",
"产权比率\n",
"资产负债率\n"
]
}
],
"source": [
"import akshare as ak\n",
"\n",
"stock_financial_abstract_ths_df = ak.stock_financial_abstract_ths(symbol=\"000338\", indicator=\"按报告期\")\n",
"data1 = stock_financial_abstract_ths_df\n",
"a1 = data1.loc[ data1.报告期 =='2023-12-31']\n",
"for value in a1:\n",
" print(value)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"execution": {
"iopub.execute_input": "2024-06-19T14:11:40.411486Z",
"iopub.status.busy": "2024-06-19T14:11:40.410724Z",
"iopub.status.idle": "2024-06-19T14:11:42.179997Z",
"shell.execute_reply": "2024-06-19T14:11:42.179418Z",
"shell.execute_reply.started": "2024-06-19T14:11:40.411414Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 报告期 报表核心指标 *所有者权益(或股东权益)合计 *资产合计 *负债合计 *归属于母公司所有者权益合计 \\\n",
"0 2024-03-31 32.83亿 69.36亿 36.53亿 29.06亿 \n",
"1 2023-12-31 32.53亿 69.56亿 37.03亿 28.84亿 \n",
"2 2023-09-30 31.75亿 66.75亿 35.00亿 28.18亿 \n",
"3 2023-06-30 31.88亿 71.97亿 40.08亿 27.95亿 \n",
"4 2023-03-31 31.30亿 70.27亿 38.97亿 27.52亿 \n",
".. ... ... ... ... ... ... \n",
"99 1996-12-31 1.80亿 3.06亿 1.26亿 1.65亿 \n",
"100 1996-06-30 1.56亿 2.60亿 1.04亿 1.41亿 \n",
"101 1995-12-31 8217.50万 1.66亿 8384.17万 6716.24万 \n",
"102 1994-12-31 6585.60万 1.17亿 5120.34万 6467.31万 \n",
"103 1993-12-31 2460.94万 3472.74万 1011.79万 2460.94万 \n",
"\n",
" 报表全部指标 流动资产 货币资金 交易性金融资产 ... 所有者权益(或股东权益) 实收资本(或股本) 资本公积 \\\n",
"0 6.44亿 False ... 8.80亿 9.54亿 \n",
"1 7.67亿 False ... 8.80亿 9.54亿 \n",
"2 6.47亿 False ... 8.80亿 9.53亿 \n",
"3 10.33亿 False ... 8.80亿 9.53亿 \n",
"4 7.29亿 False ... 8.80亿 9.53亿 \n",
".. ... ... ... ... ... ... ... ... \n",
"99 3507.95万 700.00万 ... 7865.00万 6117.91万 \n",
"100 False False ... 6050.00万 6110.36万 \n",
"101 1591.58万 False ... 5000.00万 1287.21万 \n",
"102 2316.67万 False ... 5000.00万 1287.21万 \n",
"103 296.69万 False ... 1919.72万 False \n",
"\n",
" 其他综合收益 盈余公积 未分配利润 归属于母公司所有者权益合计 少数股东权益 所有者权益(或股东权益)合计 \\\n",
"0 5833.01万 1.92亿 8.07亿 29.06亿 3.77亿 32.83亿 \n",
"1 5825.59万 1.92亿 7.87亿 28.84亿 3.69亿 32.53亿 \n",
"2 3869.46万 1.64亿 7.65亿 28.18亿 3.58亿 31.75亿 \n",
"3 3873.28万 1.64亿 7.44亿 27.95亿 3.93亿 31.88亿 \n",
"4 3871.64万 1.64亿 7.02亿 27.52亿 3.78亿 31.30亿 \n",
".. ... ... ... ... ... ... \n",
"99 False 807.23万 1678.16万 1.65亿 1554.03万 1.80亿 \n",
"100 False 429.03万 1500.51万 1.41亿 1470.25万 1.56亿 \n",
"101 False 429.03万 False 6716.24万 1501.27万 8217.50万 \n",
"102 False 152.04万 False 6467.31万 118.29万 6585.60万 \n",
"103 False 3000.00 540.93万 2460.94万 False 2460.94万 \n",
"\n",
" 负债和所有者权益(或股东权益)合计 \n",
"0 69.36亿 \n",
"1 69.56亿 \n",
"2 66.75亿 \n",
"3 71.97亿 \n",
"4 70.27亿 \n",
".. ... \n",
"99 3.06亿 \n",
"100 2.60亿 \n",
"101 1.66亿 \n",
"102 1.17亿 \n",
"103 3472.74万 \n",
"\n",
"[104 rows x 76 columns]\n"
]
}
],
"source": [
"import akshare as ak\n",
"\n",
"stock_financial_debt_ths_df = ak.stock_financial_debt_ths(symbol=\"000407\", indicator=\"按报告期\")\n",
"print(stock_financial_debt_ths_df)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"execution": {
"iopub.execute_input": "2024-06-19T13:07:12.047237Z",
"iopub.status.busy": "2024-06-19T13:07:12.046427Z",
"iopub.status.idle": "2024-06-19T13:07:13.315936Z",
"shell.execute_reply": "2024-06-19T13:07:13.315381Z",
"shell.execute_reply.started": "2024-06-19T13:07:12.047146Z"
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 报告期 报表核心指标 *现金及现金等价物净增加额 *经营活动产生的现金流量净额 *投资活动产生的现金流量净额 \\\n",
"0 2024-03-31 -60.70亿 29.83亿 -150.61亿 \n",
"1 2023-12-31 39.41亿 174.06亿 -209.01亿 \n",
"2 2023-09-30 94.28亿 92.62亿 -43.20亿 \n",
"3 2023-06-30 78.75亿 64.26亿 -15.06亿 \n",
"4 2023-03-31 26.73亿 23.26亿 -50.84亿 \n",
".. ... ... ... ... ... \n",
"89 2000-12-31 3.18亿 -7071.17万 -3.18亿 \n",
"90 2000-06-30 1.73亿 -1.90亿 -2.30亿 \n",
"91 1999-12-31 4665.82万 -5.24亿 -2.35亿 \n",
"92 1998-12-31 -1388.42万 1.58亿 -1.44亿 \n",
"93 1998-06-30 -1.28亿 2923.72万 -6786.66万 \n",
"\n",
" *筹资活动产生的现金流量净额 *期末现金及现金等价物余额 报表全部指标 一、经营活动产生的现金流量 销售商品、提供劳务收到的现金 ... \\\n",
"0 59.59亿 449.44亿 335.98亿 ... \n",
"1 73.72亿 510.13亿 1282.64亿 ... \n",
"2 42.17亿 565.00亿 936.39亿 ... \n",
"3 27.18亿 549.46亿 648.24亿 ... \n",
"4 55.17亿 497.44亿 328.30亿 ... \n",
".. ... ... ... ... ... ... \n",
"89 7.05亿 False 59.76亿 ... \n",
"90 5.90亿 False 18.19亿 ... \n",
"91 8.07亿 False 23.89亿 ... \n",
"92 -2747.59万 False 26.06亿 ... \n",
"93 -8964.03万 False 6.94亿 ... \n",
"\n",
" 经营性应付项目的增加 其他 间接法-经营活动产生的现金流量净额 2、不涉及现金收支的重大投资和筹资活动: \\\n",
"0 False False False \n",
"1 -11.97亿 False 174.06亿 \n",
"2 False False False \n",
"3 -47.23亿 False 64.26亿 \n",
"4 False False False \n",
".. ... ... ... ... \n",
"89 19.71亿 1179.35万 -7071.17万 \n",
"90 2.16亿 False -1.90亿 \n",
"91 -2849.51万 False -5.24亿 \n",
"92 4.49亿 9.16万 1.58亿 \n",
"93 1.50亿 3133.53万 2923.72万 \n",
"\n",
" 3、现金及现金等价物净变动情况: 现金的期末余额 减:现金的期初余额 加:现金等价物的期末余额 减:现金等价物的期初余额 \\\n",
"0 False False False False \n",
"1 203.40万 160.40万 510.11亿 470.70亿 \n",
"2 False False False False \n",
"3 119.00万 160.40万 549.45亿 470.70亿 \n",
"4 False False False False \n",
".. ... ... ... ... ... \n",
"89 8.73亿 5.62亿 736.77万 False \n",
"90 7.41亿 5.68亿 False False \n",
"91 5.68亿 5.21亿 False False \n",
"92 5.21亿 5.35亿 False False \n",
"93 4.07亿 5.35亿 False False \n",
"\n",
" 间接法-现金及现金等价物净增加额 \n",
"0 False \n",
"1 39.41亿 \n",
"2 False \n",
"3 78.75亿 \n",
"4 False \n",
".. ... \n",
"89 3.18亿 \n",
"90 1.73亿 \n",
"91 4665.82万 \n",
"92 -1388.42万 \n",
"93 -1.28亿 \n",
"\n",
"[94 rows x 75 columns]\n"
]
}
],
"source": [
"import akshare as ak\n",
"\n",
"stock_financial_cash_ths_df = ak.stock_financial_cash_ths(symbol=\"000063\", indicator=\"按报告期\")\n",
"print(stock_financial_cash_ths_df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 财务报表获取(资产负债)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"import akshare as ak\n",
"\n",
"fi_xls = 'data/山东辖区境内上市公司名单.xlsx'\n",
"dict1 = {}\n",
"list1 = ['2021-12-31','2022-12-31','2023-12-31','2024-03-31']\n",
"\n",
"wb = openpyxl.load_workbook(fi_xls)\n",
"sheet = wb.active\n",
"list2 = ['*资产合计','货币资金','交易性金融资产','*负债合计']\n",
"for n in range(2,sheet.max_row+1): \n",
" code = str(sheet.cell(n,2).value).rjust(6,\"0\")\n",
" dict1.setdefault(code,{})\n",
" name = sheet.cell(n,3).value\n",
" address = sheet.cell(n,4).value\n",
" phone = sheet.cell(n,5).value\n",
" dict1[code]['name'] = name\n",
" dict1[code]['address'] = address\n",
" dict1[code]['phone'] = phone\n",
"for k, v in dict1.items():\n",
" data = ak.stock_financial_debt_ths(symbol=k, indicator=\"按报告期\")\n",
" for item in list1:\n",
" data1 = data.loc[ data.报告期 ==item]\n",
" if data1.shape[0] >0:\n",
" dict1[k].setdefault(item,{})\n",
" for item1 in list2:\n",
" if item1 in data1.keys():\n",
" for value in data1[item1]:\n",
" dict1[k][item][item1] = value\n",
" else:\n",
" dict1[k][item][item1] = 'null'\n",
" \n",
"with open('data/山东辖区境内上市公司相关财务数据.json','w') as fl2:\n",
" json.dump(dict1,fl2,ensure_ascii=False) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 财务报表获取(利润)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"filename = 'data/山东辖区境内上市公司相关财务数据.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list1 = ['2021-12-31','2022-12-31','2023-12-31','2024-03-31']\n",
"list2 = ['营业总收入','净利润']\n",
"for k, v in dict1.items():\n",
" data = ak.stock_financial_abstract_ths(symbol=k, indicator=\"按报告期\")\n",
" for item in list1:\n",
" data1 = data.loc[ data.报告期 ==item]\n",
" if data1.shape[0] >0:\n",
" dict1[k].setdefault(item,{})\n",
" for item1 in list2:\n",
" if item1 in data1.keys():\n",
" for value in data1[item1]:\n",
" dict1[k][item][item1] = value\n",
" else:\n",
" dict1[k][item][item1] = 'null'\n",
" \n",
"with open('data/山东辖区境内上市公司相关财务数据1.json','w') as fl2:\n",
" json.dump(dict1,fl2,ensure_ascii=False) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 财务报表获取(现金流量)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"execution": {
"iopub.execute_input": "2024-06-19T13:07:43.950488Z",
"iopub.status.busy": "2024-06-19T13:07:43.949732Z",
"iopub.status.idle": "2024-06-19T13:11:06.767989Z",
"shell.execute_reply": "2024-06-19T13:11:06.767426Z",
"shell.execute_reply.started": "2024-06-19T13:07:43.950420Z"
}
},
"outputs": [],
"source": [
"filename = 'data/山东辖区境内上市公司相关财务数据1.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list1 = ['2021-12-31','2022-12-31','2023-12-31','2024-03-31']\n",
"list2 = ['*经营活动产生的现金流量净额']\n",
"for k, v in dict1.items():\n",
" data = ak.stock_financial_cash_ths(symbol=k, indicator=\"按报告期\")\n",
" for item in list1:\n",
" data1 = data.loc[ data.报告期 ==item]\n",
" if data1.shape[0] >0:\n",
" dict1[k].setdefault(item,{})\n",
" for item1 in list2:\n",
" if item1 in data1.keys():\n",
" for value in data1[item1]:\n",
" dict1[k][item][item1] = value\n",
" else:\n",
" dict1[k][item][item1] = 'null'\n",
" \n",
"with open('data/山东辖区境内上市公司相关财务数据1.json','w') as fl2:\n",
" json.dump(dict1,fl2,ensure_ascii=False) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 导出数据至excel"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"execution": {
"iopub.execute_input": "2024-06-19T14:02:35.424509Z",
"iopub.status.busy": "2024-06-19T14:02:35.423890Z",
"iopub.status.idle": "2024-06-19T14:02:35.770723Z",
"shell.execute_reply": "2024-06-19T14:02:35.770187Z",
"shell.execute_reply.started": "2024-06-19T14:02:35.424450Z"
}
},
"outputs": [],
"source": [
"filename = 'data/山东辖区境内上市公司相关财务数据1.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"filename = 'data/山东辖区境内上市公司相关财务数据1.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"list1 = ['2021-12-31','2022-12-31','2023-12-31','2024-03-31']\n",
"i = 0\n",
"for k, v in dict1.items():\n",
" \n",
" sheet.merge_cells(f'A{i*4+1}:A{i*4+4}')\n",
" sheet.merge_cells(f'B{i*4+1}:B{i*4+4}')\n",
" sheet.merge_cells(f'C{i*4+1}:C{i*4+4}')\n",
" sheet[f'A{i*4+1}'] = i+1\n",
" sheet[f'B{i*4+1}'] = k\n",
" sheet[f'C{i*4+1}'] = v['name']\n",
" n = 1\n",
" for item in list1:\n",
" \n",
" if item in v.keys():\n",
" sheet[f'D{i*4+n}'] = item\n",
" sheet[f'E{i*4+n}'] = v[item]['*资产合计']\n",
" sheet[f'F{i*4+n}'] = v[item]['货币资金']\n",
" sheet[f'G{i*4+n}'] = v[item]['交易性金融资产']\n",
" sheet[f'H{i*4+n}'] = v[item]['*负债合计']\n",
" sheet[f'I{i*4+n}'] = v[item]['营业总收入']\n",
" sheet[f'J{i*4+n}'] = v[item]['净利润']\n",
" sheet[f'K{i*4+n}'] = v[item]['*经营活动产生的现金流量净额']\n",
" else:\n",
" sheet[f'D{i*4+n}'] = item\n",
" sheet[f'E{i*4+n}'] = ''\n",
" sheet[f'F{i*4+n}'] = ''\n",
" sheet[f'G{i*4+n}'] = ''\n",
" sheet[f'H{i*4+n}'] = ''\n",
" sheet[f'I{i*4+n}'] = ''\n",
" sheet[f'J{i*4+n}'] = ''\n",
" sheet[f'K{i*4+n}'] = ''\n",
" n+=1\n",
" i+=1\n",
"wb.save(filename) \n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
@@ -474,7 +933,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -488,7 +947,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
"version": "3.12.3"
},
"toc-autonumbering": true,
"toc-showcode": true,