Compare commits
11 Commits
97a5db0ea9
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| df02782e8b | |||
| 3dcbab3909 | |||
| 0dccacc0e2 | |||
| db713cb3b3 | |||
| 841630f9f1 | |||
| 5bf89d448d | |||
| 6e1e888606 | |||
| e15a5d41f9 | |||
| 4e792432c1 | |||
| a1e99ea5f7 | |||
| 8dcab5711e |
51
.idea/csv-editor.xml
generated
Normal file
51
.idea/csv-editor.xml
generated
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CsvFileAttributes">
|
||||||
|
<option name="attributeMap">
|
||||||
|
<map>
|
||||||
|
<entry key="/document/ETF信息.csv">
|
||||||
|
<value>
|
||||||
|
<Attribute>
|
||||||
|
<option name="separator" value="," />
|
||||||
|
</Attribute>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
<entry key="/document/SZ000001.csv">
|
||||||
|
<value>
|
||||||
|
<Attribute>
|
||||||
|
<option name="separator" value="," />
|
||||||
|
</Attribute>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
<entry key="/document/Tushare股票信息.csv">
|
||||||
|
<value>
|
||||||
|
<Attribute>
|
||||||
|
<option name="separator" value="," />
|
||||||
|
</Attribute>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
<entry key="/document/指数基金信息.csv">
|
||||||
|
<value>
|
||||||
|
<Attribute>
|
||||||
|
<option name="separator" value="," />
|
||||||
|
</Attribute>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
<entry key="/document/新浪股票代码信息.csv">
|
||||||
|
<value>
|
||||||
|
<Attribute>
|
||||||
|
<option name="separator" value="," />
|
||||||
|
</Attribute>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
<entry key="/temp/stock/SZ000001.csv">
|
||||||
|
<value>
|
||||||
|
<Attribute>
|
||||||
|
<option name="separator" value="," />
|
||||||
|
</Attribute>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
34
.idea/dataSources.xml
generated
Normal file
34
.idea/dataSources.xml
generated
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="root@frp-air.top" uuid="4e00be9e-f73a-422f-aed0-c30816ad52aa">
|
||||||
|
<driver-ref>mysql.8</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mysql://frp-air.top:43458/</jdbc-url>
|
||||||
|
<jdbc-additional-properties>
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
|
||||||
|
</jdbc-additional-properties>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
<data-source source="LOCAL" name="stock@frp-air.top" uuid="b5271197-5b8f-4c47-8580-243d89b63880">
|
||||||
|
<driver-ref>mysql.8</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mysql://frp-air.top:43458/stock</jdbc-url>
|
||||||
|
<jdbc-additional-properties>
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
|
||||||
|
</jdbc-additional-properties>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
<data-source source="LOCAL" name="main@localhost" uuid="599837aa-a91c-4b7c-86be-08cddda134a2">
|
||||||
|
<driver-ref>mysql.8</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mysql://localhost:3307/main</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/stock_leanrning.iml" filepath="$PROJECT_DIR$/.idea/stock_leanrning.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
725
0_材料准备/3_TuShare财务报表.ipynb
Normal file
725
0_材料准备/3_TuShare财务报表.ipynb
Normal file
@@ -0,0 +1,725 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"id": "initial_id",
|
||||||
|
"metadata": {
|
||||||
|
"collapsed": true,
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-11T03:30:00.044697Z",
|
||||||
|
"start_time": "2025-01-11T03:30:00.041372Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source": [
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"import tushare as ts\n",
|
||||||
|
"\n",
|
||||||
|
"ts_pro = ts.pro_api(token=\"64ebff4fa679167600b905ee45dd88e76f3963c0ff39157f3f085f0e\")"
|
||||||
|
],
|
||||||
|
"outputs": [],
|
||||||
|
"execution_count": 25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-09T06:28:32.524630Z",
|
||||||
|
"start_time": "2025-01-09T06:27:15.688831Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# 从1989年开始循环年份\n",
|
||||||
|
"for year in range(2000, 2024):\n",
|
||||||
|
" # ts_pro.balancesheet_vip(period=f\"{year}1231\").to_csv(f\"../temp/财务报表/资产负债表/{year}.csv\")\n",
|
||||||
|
" # ts_pro.cashflow_vip(period=f\"{year}1231\").to_csv(f\"../temp/财务报表/现金流量表/{year}.csv\")\n",
|
||||||
|
" # ts_pro.income_vip(period=f\"{year}1231\").to_csv(f\"../temp/财务报表/利润表/{year}.csv\")\n",
|
||||||
|
" ts_pro.fina_indicator_vip(period=f\"{year}1231\").to_csv(f\"../temp/财务报表/财务指标/{year}.csv\")\n",
|
||||||
|
" # ts_pro.fina_audit(period=f\"{year}1231\").to_csv(f\"../temp/财务报表/审计意见/{year}.csv\")"
|
||||||
|
],
|
||||||
|
"id": "b03b118c70b21315",
|
||||||
|
"outputs": [],
|
||||||
|
"execution_count": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T03:01:43.076024Z",
|
||||||
|
"start_time": "2025-01-10T03:01:42.644700Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"df_income = ts_pro.income(ts_code=\"600519.SH\", period=\"20231231\", fields=\"ts_code,end_date,n_income\")\n",
|
||||||
|
"df_balancesheet = ts_pro.balancesheet(ts_code=\"600519.SH\", period=\"20231231\",\n",
|
||||||
|
" fields=\"ts_code,end_date,total_hldr_eqy_exc_min_int\")\n",
|
||||||
|
"merged_df = pd.merge(df_income, df_balancesheet, on=['ts_code', 'end_date'])\n",
|
||||||
|
"merged_df['roe'] = merged_df['n_income'] / merged_df['total_hldr_eqy_exc_min_int']\n",
|
||||||
|
"merged_df"
|
||||||
|
],
|
||||||
|
"id": "575590399bf15e70",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
" ts_code end_date n_income total_hldr_eqy_exc_min_int roe\n",
|
||||||
|
"0 600519.SH 20231231 7.752148e+10 2.156686e+11 0.359447"
|
||||||
|
],
|
||||||
|
"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>end_date</th>\n",
|
||||||
|
" <th>n_income</th>\n",
|
||||||
|
" <th>total_hldr_eqy_exc_min_int</th>\n",
|
||||||
|
" <th>roe</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>0</th>\n",
|
||||||
|
" <td>600519.SH</td>\n",
|
||||||
|
" <td>20231231</td>\n",
|
||||||
|
" <td>7.752148e+10</td>\n",
|
||||||
|
" <td>2.156686e+11</td>\n",
|
||||||
|
" <td>0.359447</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 31,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 31
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T02:59:32.764968Z",
|
||||||
|
"start_time": "2025-01-10T02:59:32.601657Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": "ts_pro.fina_indicator(ts_code=\"600519.SH\", period=\"20231231\")[\"roe\"]",
|
||||||
|
"id": "d59f62a613379fbd",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"0 36.1755\n",
|
||||||
|
"Name: roe, dtype: float64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 26,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 26
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T04:01:33.511246Z",
|
||||||
|
"start_time": "2025-01-10T04:01:33.382955Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": "ts_pro.income(ts_code='600519.SH', start_date='20220101', end_date='20241231', fields='end_date,n_income')",
|
||||||
|
"id": "c43925cfb5552cd9",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
" end_date n_income\n",
|
||||||
|
"0 20240930 6.303146e+10\n",
|
||||||
|
"1 20240630 4.317691e+10\n",
|
||||||
|
"2 20240331 2.488235e+10\n",
|
||||||
|
"3 20231231 7.752148e+10\n",
|
||||||
|
"4 20230930 5.482717e+10\n",
|
||||||
|
"5 20230630 3.733197e+10\n",
|
||||||
|
"6 20230331 2.152473e+10\n",
|
||||||
|
"7 20221231 6.537514e+10\n",
|
||||||
|
"8 20221231 6.537514e+10\n",
|
||||||
|
"9 20220930 4.631399e+10\n",
|
||||||
|
"10 20220630 3.110536e+10\n",
|
||||||
|
"11 20220331 1.795212e+10\n",
|
||||||
|
"12 20211231 5.572053e+10\n",
|
||||||
|
"13 20211231 5.572053e+10"
|
||||||
|
],
|
||||||
|
"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>end_date</th>\n",
|
||||||
|
" <th>n_income</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>0</th>\n",
|
||||||
|
" <td>20240930</td>\n",
|
||||||
|
" <td>6.303146e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>1</th>\n",
|
||||||
|
" <td>20240630</td>\n",
|
||||||
|
" <td>4.317691e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>2</th>\n",
|
||||||
|
" <td>20240331</td>\n",
|
||||||
|
" <td>2.488235e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>3</th>\n",
|
||||||
|
" <td>20231231</td>\n",
|
||||||
|
" <td>7.752148e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>4</th>\n",
|
||||||
|
" <td>20230930</td>\n",
|
||||||
|
" <td>5.482717e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5</th>\n",
|
||||||
|
" <td>20230630</td>\n",
|
||||||
|
" <td>3.733197e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>6</th>\n",
|
||||||
|
" <td>20230331</td>\n",
|
||||||
|
" <td>2.152473e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>7</th>\n",
|
||||||
|
" <td>20221231</td>\n",
|
||||||
|
" <td>6.537514e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>8</th>\n",
|
||||||
|
" <td>20221231</td>\n",
|
||||||
|
" <td>6.537514e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>9</th>\n",
|
||||||
|
" <td>20220930</td>\n",
|
||||||
|
" <td>4.631399e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>10</th>\n",
|
||||||
|
" <td>20220630</td>\n",
|
||||||
|
" <td>3.110536e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>11</th>\n",
|
||||||
|
" <td>20220331</td>\n",
|
||||||
|
" <td>1.795212e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>12</th>\n",
|
||||||
|
" <td>20211231</td>\n",
|
||||||
|
" <td>5.572053e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>13</th>\n",
|
||||||
|
" <td>20211231</td>\n",
|
||||||
|
" <td>5.572053e+10</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 40,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 40
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T04:17:56.196027Z",
|
||||||
|
"start_time": "2025-01-10T04:17:55.879469Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# 获取净利润\n",
|
||||||
|
"income_df = ts_pro.income(ts_code='600519.SH', start_date='20220101', end_date='20241231', fields='end_date,n_income')\n",
|
||||||
|
"net_profit = income_df[income_df['end_date'] == '20231231']['n_income'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 获取期初和期末的股东权益和总资产\n",
|
||||||
|
"balancesheet_df = ts_pro.balancesheet(ts_code='600519.SH', start_date='20220101', end_date='20241231',\n",
|
||||||
|
" fields='end_date,total_hldr_eqy_exc_min_int,total_assets')\n",
|
||||||
|
"eqy_initial = balancesheet_df[balancesheet_df['end_date'] == '20230331']['total_hldr_eqy_exc_min_int'].values[0]\n",
|
||||||
|
"eqy_final = balancesheet_df[balancesheet_df['end_date'] == '20231231']['total_hldr_eqy_exc_min_int'].values[0]\n",
|
||||||
|
"total_assets_initial = balancesheet_df[balancesheet_df['end_date'] == '20230331']['total_assets'].values[0]\n",
|
||||||
|
"total_assets_final = balancesheet_df[balancesheet_df['end_date'] == '20231231']['total_assets'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算平均股东权益和平均总资产\n",
|
||||||
|
"avg_eqy = (eqy_initial + eqy_final) / 2\n",
|
||||||
|
"avg_assets = (total_assets_initial + total_assets_final) / 2\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算ROE和ROA\n",
|
||||||
|
"roe = net_profit / avg_eqy\n",
|
||||||
|
"roa = net_profit / avg_assets\n",
|
||||||
|
"\n",
|
||||||
|
"print(f'ROE: {roe:.4f}')\n",
|
||||||
|
"print(f'ROA: {roa:.4f}')"
|
||||||
|
],
|
||||||
|
"id": "caf1a1555d4c972e",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"ROE: 0.3573\n",
|
||||||
|
"ROA: 0.2919\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 43
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T04:19:57.750533Z",
|
||||||
|
"start_time": "2025-01-10T04:19:57.531524Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# 获取营业收入净额\n",
|
||||||
|
"income_df = ts_pro.income(ts_code='600519.SH', start_date='20220101', end_date='20241231', fields='end_date,revenue')\n",
|
||||||
|
"revenue = income_df[income_df['end_date'] == '20231231']['revenue'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 获取期初(上一年12月31日)和期末(当前年12月31日)的总资产\n",
|
||||||
|
"balancesheet_df = ts_pro.balancesheet(ts_code='600519.SH', start_date='20220101', end_date='20241231',\n",
|
||||||
|
" fields='end_date,total_assets')\n",
|
||||||
|
"total_assets_initial = balancesheet_df[balancesheet_df['end_date'] == '20221231']['total_assets'].values[0]\n",
|
||||||
|
"total_assets_final = balancesheet_df[balancesheet_df['end_date'] == '20231231']['total_assets'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算平均总资产\n",
|
||||||
|
"avg_assets = (total_assets_initial + total_assets_final) / 2\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算总资产周转率\n",
|
||||||
|
"total_asset_turnover = revenue / avg_assets\n",
|
||||||
|
"\n",
|
||||||
|
"print(f'总资产周转率: {total_asset_turnover:.4f}')"
|
||||||
|
],
|
||||||
|
"id": "49488c6640beb4ed",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"总资产周转率: 0.5604\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 48
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T04:23:50.762070Z",
|
||||||
|
"start_time": "2025-01-10T04:23:50.585818Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# 获取期末的现金及现金等价物和总资产\n",
|
||||||
|
"balancesheet_df = ts_pro.balancesheet(ts_code='600519.SH', start_date='20220101', end_date='20241231',\n",
|
||||||
|
" fields='end_date, money_cap, total_assets')\n",
|
||||||
|
"cash_and_equivalents = balancesheet_df[balancesheet_df['end_date'] == '20231231']['money_cap'].values[0]\n",
|
||||||
|
"total_assets = balancesheet_df[balancesheet_df['end_date'] == '20231231']['total_assets'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算现金和现金等价物总和占总资产的比率\n",
|
||||||
|
"cash_ratio = cash_and_equivalents / total_assets\n",
|
||||||
|
"\n",
|
||||||
|
"print(f'现金和现金等价物总和占总资产的比率: {cash_ratio:.4f}')"
|
||||||
|
],
|
||||||
|
"id": "526ef46373e1c8fe",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"现金和现金等价物总和占总资产的比率: 0.2533\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 49
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T04:27:11.461667Z",
|
||||||
|
"start_time": "2025-01-10T04:27:11.160878Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# 获取营业收入\n",
|
||||||
|
"income_df = ts_pro.income(ts_code='600519.SH', start_date='20220101', end_date='20241231', fields='end_date, revenue')\n",
|
||||||
|
"revenue = income_df[income_df['end_date'] == '20231231']['revenue'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 获取期初和期末的应收账款\n",
|
||||||
|
"balancesheet_df = ts_pro.balancesheet(ts_code='600519.SH', start_date='20220101', end_date='20241231',\n",
|
||||||
|
" fields='end_date, accounts_receiv')\n",
|
||||||
|
"accounts_receiv_initial = balancesheet_df[balancesheet_df['end_date'] == '20221231']['accounts_receiv'].values[0]\n",
|
||||||
|
"accounts_receiv_final = balancesheet_df[balancesheet_df['end_date'] == '20231231']['accounts_receiv'].values[0]\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算平均应收账款余额\n",
|
||||||
|
"avg_accounts_receiv = (accounts_receiv_initial + accounts_receiv_final) / 2\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算应收账款周转率\n",
|
||||||
|
"accounts_receiv_turnover = revenue / avg_accounts_receiv\n",
|
||||||
|
"\n",
|
||||||
|
"# 计算收现日数\n",
|
||||||
|
"collection_period = 365 / accounts_receiv_turnover\n",
|
||||||
|
"\n",
|
||||||
|
"print(f'收现日数: {collection_period:.2f} 天')"
|
||||||
|
],
|
||||||
|
"id": "dca87ef21cf425ee",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"收现日数: 0.10 天\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T07:10:09.564888Z",
|
||||||
|
"start_time": "2025-01-10T07:10:08.771019Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"code = \"000672.SZ\"\n",
|
||||||
|
"year = \"2023\"\n",
|
||||||
|
"period = f\"{year}1231\"\n",
|
||||||
|
"last_period = f\"{int(year) - 1}1231\"\n",
|
||||||
|
"\n",
|
||||||
|
"balancesheet_fields = \"total_assets,total_hldr_eqy_inc_min_int,money_cap,accounts_receiv,inventories\"\n",
|
||||||
|
"balancesheet_df = ts_pro.balancesheet(ts_code=code, period=period, fields=balancesheet_fields)\n",
|
||||||
|
"last_balancesheet_df = ts_pro.balancesheet(ts_code=code, period=last_period, fields=balancesheet_fields)\n",
|
||||||
|
"\n",
|
||||||
|
"income_fields = \"n_income,revenue,total_revenue,oper_cost,operate_profit,total_opcost\"\n",
|
||||||
|
"income_df = ts_pro.income(ts_code=code, period=period, fields=income_fields)\n",
|
||||||
|
"last_income_df = ts_pro.income(ts_code=code, period=last_period, fields=income_fields)\n",
|
||||||
|
"\n",
|
||||||
|
"cashflow_fields = \"cash_paid_for_trade_fin\"\n",
|
||||||
|
"cashflow_df = ts_pro.cashflow(ts_code=code, period=period, fields=cashflow_fields)\n",
|
||||||
|
"last_cashflow_df = ts_pro.cashflow(ts_code=code, period=last_period, fields=cashflow_fields)"
|
||||||
|
],
|
||||||
|
"id": "524a18f138a84f4a",
|
||||||
|
"outputs": [],
|
||||||
|
"execution_count": 96
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-10T07:10:35.283014Z",
|
||||||
|
"start_time": "2025-01-10T07:10:35.268876Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# ROE & ROA\n",
|
||||||
|
"roe = income_df[\"n_income\"].values[0] / ((balancesheet_df[\"total_hldr_eqy_inc_min_int\"].values[0] +\n",
|
||||||
|
" last_balancesheet_df[\"total_hldr_eqy_inc_min_int\"].values[0]) / 2)\n",
|
||||||
|
"roa = income_df[\"n_income\"].values[0] / (\n",
|
||||||
|
" (balancesheet_df[\"total_assets\"].values[0] + last_balancesheet_df[\"total_assets\"].values[0]) / 2)\n",
|
||||||
|
"print(f\"ROE: {roe:.4f}\")\n",
|
||||||
|
"print(f\"ROA: {roa:.4f}\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 净利润(转换为百万为单位)\n",
|
||||||
|
"net_profit = income_df[\"n_income\"].values[0] / 1000000\n",
|
||||||
|
"print(f\"净利润: {net_profit:.4f}百万\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 总资产周转率\n",
|
||||||
|
"total_asset_turnover = income_df[\"total_revenue\"].values[0] / (\n",
|
||||||
|
" (balancesheet_df[\"total_assets\"].values[0] + last_balancesheet_df[\"total_assets\"].values[0]) / 2)\n",
|
||||||
|
"print(f\"总资产周转率: {total_asset_turnover:.4f}\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 现金比率\n",
|
||||||
|
"cash_ratio = + balancesheet_df[\"money_cap\"].values[0] / balancesheet_df[\"total_assets\"].values[0]\n",
|
||||||
|
"print(f\"现金比率: {cash_ratio:.4f}\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 收现日数\n",
|
||||||
|
"collection_period = 360 / (income_df[\"total_revenue\"].values[0] / balancesheet_df[\"accounts_receiv\"].values[0])\n",
|
||||||
|
"print(f\"收现日数: {collection_period:.2f} 天\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 销货日数\n",
|
||||||
|
"sales_period = 360 / ((income_df[\"total_revenue\"].values[0]) / balancesheet_df[\"inventories\"].values[0])\n",
|
||||||
|
"print(f\"销货日数: {sales_period:.2f} 天\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 毛利率\n",
|
||||||
|
"gross_profit_margin = (income_df[\"total_revenue\"].values[0] - income_df[\"oper_cost\"].values[0]) / income_df[\n",
|
||||||
|
" \"revenue\"].values[0]\n",
|
||||||
|
"print(f\"毛利率: {gross_profit_margin:.4f}\")\n",
|
||||||
|
"\n",
|
||||||
|
"# 经营利润率\n",
|
||||||
|
"operating_profit_margin = income_df[\"operate_profit\"].values[0] / income_df[\"total_revenue\"].values[0]\n",
|
||||||
|
"print(f\"经营利润率: {operating_profit_margin:.4f}\")\n",
|
||||||
|
"print(f\"经营安全边际率: {(operating_profit_margin / gross_profit_margin):.4f}\")"
|
||||||
|
],
|
||||||
|
"id": "8707ca42171475a8",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"ROE: 0.0747\n",
|
||||||
|
"ROA: 0.0411\n",
|
||||||
|
"净利润: 701.3791百万\n",
|
||||||
|
"总资产周转率: 0.3745\n",
|
||||||
|
"现金比率: 0.2253\n",
|
||||||
|
"收现日数: 12.95 天\n",
|
||||||
|
"销货日数: 59.70 天\n",
|
||||||
|
"毛利率: 0.2775\n",
|
||||||
|
"经营利润率: 0.1474\n",
|
||||||
|
"经营安全边际率: 0.5312\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 98
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-11T03:51:41.253282Z",
|
||||||
|
"start_time": "2025-01-11T03:51:41.243498Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"def get_blancesheet_df(start_year, end_year):\n",
|
||||||
|
" fields = [\"ts_code\", \"end_date\", \"total_assets\", \"total_hldr_eqy_inc_min_int\", \"money_cap\", \"accounts_receiv\",\n",
|
||||||
|
" \"inventories\"]\n",
|
||||||
|
" result = pd.DataFrame(columns=fields)\n",
|
||||||
|
" for year in range(start_year, end_year + 1):\n",
|
||||||
|
" period = f\"{year}1231\"\n",
|
||||||
|
" temp = ts_pro.balancesheet_vip(period=period, fields=\",\".join(fields))\n",
|
||||||
|
" result = pd.concat([result, temp], ignore_index=True)\n",
|
||||||
|
" return result\n",
|
||||||
|
"\n",
|
||||||
|
"def get_income_df(start_year, end_year):\n",
|
||||||
|
" fields = [\"ts_code\", \"end_date\", \"n_income\", \"revenue\", \"total_revenue\", \"oper_cost\", \"operate_profit\", \"total_opcost\"]\n",
|
||||||
|
" result = pd.DataFrame(columns=fields)\n",
|
||||||
|
" for year in range(start_year, end_year + 1):\n",
|
||||||
|
" period = f\"{year}1231\"\n",
|
||||||
|
" temp = ts_pro.income_vip(period=period, fields=\",\".join(fields))\n",
|
||||||
|
" result = pd.concat([result, temp], ignore_index=True)\n",
|
||||||
|
" return result\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": "6d90bcb4c5151976",
|
||||||
|
"outputs": [],
|
||||||
|
"execution_count": 54
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-11T03:51:53.799229Z",
|
||||||
|
"start_time": "2025-01-11T03:51:42.756645Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"blancesheet_df = clean_df(get_blancesheet_df(2018, 2024))\n",
|
||||||
|
"income_df = clean_df(get_income_df(2018, 2024))"
|
||||||
|
],
|
||||||
|
"id": "9d7013cff65167ed",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_39014/3037579022.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",
|
||||||
|
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_39014/3037579022.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",
|
||||||
|
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_39014/3037579022.py:17: 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",
|
||||||
|
"/var/folders/7h/w0cmp4zj6mn9br_6nyj310m40000gn/T/ipykernel_39014/3037579022.py:17: 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": 55
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-11T04:06:53.483655Z",
|
||||||
|
"start_time": "2025-01-11T04:06:53.417743Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"stock_df = pd.merge(blancesheet_df, income_df, on=[\"ts_code\", \"end_date\"])\n",
|
||||||
|
"test_df = stock_df[stock_df[\"ts_code\"] == \"000672.SZ\"].copy()\n",
|
||||||
|
"test_df[\"roe\"] = test_df[\"n_income\"] / ((test_df[\"total_hldr_eqy_inc_min_int\"] +\n",
|
||||||
|
" test_df[\"total_hldr_eqy_inc_min_int\"].shift(1)) / 2)\n",
|
||||||
|
"test_df[[\"ts_code\",\"end_date\",\"roe\"]]\n",
|
||||||
|
"# stock_group = income_df.groupby('ts_code')\n",
|
||||||
|
"# stock_group.get_group(\"000672.SZ\")"
|
||||||
|
],
|
||||||
|
"id": "f9317a2d18449db2",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
" ts_code end_date roe\n",
|
||||||
|
"3346 000672.SZ 2018 NaN\n",
|
||||||
|
"8529 000672.SZ 2019 0.508885\n",
|
||||||
|
"12623 000672.SZ 2020 0.316230\n",
|
||||||
|
"17853 000672.SZ 2021 0.278297\n",
|
||||||
|
"22036 000672.SZ 2022 0.105235\n",
|
||||||
|
"28907 000672.SZ 2023 0.074670"
|
||||||
|
],
|
||||||
|
"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>end_date</th>\n",
|
||||||
|
" <th>roe</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>3346</th>\n",
|
||||||
|
" <td>000672.SZ</td>\n",
|
||||||
|
" <td>2018</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>8529</th>\n",
|
||||||
|
" <td>000672.SZ</td>\n",
|
||||||
|
" <td>2019</td>\n",
|
||||||
|
" <td>0.508885</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>12623</th>\n",
|
||||||
|
" <td>000672.SZ</td>\n",
|
||||||
|
" <td>2020</td>\n",
|
||||||
|
" <td>0.316230</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>17853</th>\n",
|
||||||
|
" <td>000672.SZ</td>\n",
|
||||||
|
" <td>2021</td>\n",
|
||||||
|
" <td>0.278297</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>22036</th>\n",
|
||||||
|
" <td>000672.SZ</td>\n",
|
||||||
|
" <td>2022</td>\n",
|
||||||
|
" <td>0.105235</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>28907</th>\n",
|
||||||
|
" <td>000672.SZ</td>\n",
|
||||||
|
" <td>2023</td>\n",
|
||||||
|
" <td>0.074670</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 68,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 68
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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
|
||||||
|
}
|
||||||
@@ -6,8 +6,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": true,
|
"collapsed": true,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-12-27T08:52:13.762454Z",
|
"end_time": "2025-01-09T05:00:21.760774Z",
|
||||||
"start_time": "2024-12-27T08:52:13.010563Z"
|
"start_time": "2025-01-09T05:00:20.927280Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"source": [
|
"source": [
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
"ts_pro = ts.pro_api(token=\"64ebff4fa679167600b905ee45dd88e76f3963c0ff39157f3f085f0e\")"
|
"ts_pro = ts.pro_api(token=\"64ebff4fa679167600b905ee45dd88e76f3963c0ff39157f3f085f0e\")"
|
||||||
],
|
],
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 1
|
"execution_count": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -1358,6 +1358,239 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 6
|
"execution_count": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2025-01-09T05:00:24.994492Z",
|
||||||
|
"start_time": "2025-01-09T05:00:24.204010Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"# 获取股票基本信息\n",
|
||||||
|
"ts_pro.stock_basic()"
|
||||||
|
],
|
||||||
|
"id": "9ae4b033636fbaad",
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
" ts_code symbol name area industry cnspell market list_date \\\n",
|
||||||
|
"0 000001.SZ 000001 平安银行 深圳 银行 payh 主板 19910403 \n",
|
||||||
|
"1 000002.SZ 000002 万科A 深圳 全国地产 wka 主板 19910129 \n",
|
||||||
|
"2 000004.SZ 000004 国华网安 深圳 软件服务 ghwa 主板 19910114 \n",
|
||||||
|
"3 000006.SZ 000006 深振业A 深圳 区域地产 szya 主板 19920427 \n",
|
||||||
|
"4 000007.SZ 000007 全新好 深圳 其他商业 qxh 主板 19920413 \n",
|
||||||
|
"... ... ... ... ... ... ... ... ... \n",
|
||||||
|
"5381 920111.BJ 920111 聚星科技 None None jxkj 北交所 20241111 \n",
|
||||||
|
"5382 920116.BJ 920116 星图测控 None None xtck 北交所 20250102 \n",
|
||||||
|
"5383 920118.BJ 920118 太湖远大 None None thyd 北交所 20240822 \n",
|
||||||
|
"5384 920128.BJ 920128 胜业电气 None None sydq 北交所 20241129 \n",
|
||||||
|
"5385 689009.SH 689009 九号公司-WD 北京 摩托车 jhgs 科创板 20201029 \n",
|
||||||
|
"\n",
|
||||||
|
" act_name act_ent_type \n",
|
||||||
|
"0 无实际控制人 无 \n",
|
||||||
|
"1 深圳市人民政府国有资产监督管理委员会 地方国企 \n",
|
||||||
|
"2 李映彤 民营企业 \n",
|
||||||
|
"3 深圳市人民政府国有资产监督管理委员会 地方国企 \n",
|
||||||
|
"4 王玩虹 民营企业 \n",
|
||||||
|
"... ... ... \n",
|
||||||
|
"5381 None None \n",
|
||||||
|
"5382 None None \n",
|
||||||
|
"5383 None None \n",
|
||||||
|
"5384 None None \n",
|
||||||
|
"5385 None None \n",
|
||||||
|
"\n",
|
||||||
|
"[5386 rows x 10 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>symbol</th>\n",
|
||||||
|
" <th>name</th>\n",
|
||||||
|
" <th>area</th>\n",
|
||||||
|
" <th>industry</th>\n",
|
||||||
|
" <th>cnspell</th>\n",
|
||||||
|
" <th>market</th>\n",
|
||||||
|
" <th>list_date</th>\n",
|
||||||
|
" <th>act_name</th>\n",
|
||||||
|
" <th>act_ent_type</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>0</th>\n",
|
||||||
|
" <td>000001.SZ</td>\n",
|
||||||
|
" <td>000001</td>\n",
|
||||||
|
" <td>平安银行</td>\n",
|
||||||
|
" <td>深圳</td>\n",
|
||||||
|
" <td>银行</td>\n",
|
||||||
|
" <td>payh</td>\n",
|
||||||
|
" <td>主板</td>\n",
|
||||||
|
" <td>19910403</td>\n",
|
||||||
|
" <td>无实际控制人</td>\n",
|
||||||
|
" <td>无</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>1</th>\n",
|
||||||
|
" <td>000002.SZ</td>\n",
|
||||||
|
" <td>000002</td>\n",
|
||||||
|
" <td>万科A</td>\n",
|
||||||
|
" <td>深圳</td>\n",
|
||||||
|
" <td>全国地产</td>\n",
|
||||||
|
" <td>wka</td>\n",
|
||||||
|
" <td>主板</td>\n",
|
||||||
|
" <td>19910129</td>\n",
|
||||||
|
" <td>深圳市人民政府国有资产监督管理委员会</td>\n",
|
||||||
|
" <td>地方国企</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>2</th>\n",
|
||||||
|
" <td>000004.SZ</td>\n",
|
||||||
|
" <td>000004</td>\n",
|
||||||
|
" <td>国华网安</td>\n",
|
||||||
|
" <td>深圳</td>\n",
|
||||||
|
" <td>软件服务</td>\n",
|
||||||
|
" <td>ghwa</td>\n",
|
||||||
|
" <td>主板</td>\n",
|
||||||
|
" <td>19910114</td>\n",
|
||||||
|
" <td>李映彤</td>\n",
|
||||||
|
" <td>民营企业</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>3</th>\n",
|
||||||
|
" <td>000006.SZ</td>\n",
|
||||||
|
" <td>000006</td>\n",
|
||||||
|
" <td>深振业A</td>\n",
|
||||||
|
" <td>深圳</td>\n",
|
||||||
|
" <td>区域地产</td>\n",
|
||||||
|
" <td>szya</td>\n",
|
||||||
|
" <td>主板</td>\n",
|
||||||
|
" <td>19920427</td>\n",
|
||||||
|
" <td>深圳市人民政府国有资产监督管理委员会</td>\n",
|
||||||
|
" <td>地方国企</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>4</th>\n",
|
||||||
|
" <td>000007.SZ</td>\n",
|
||||||
|
" <td>000007</td>\n",
|
||||||
|
" <td>全新好</td>\n",
|
||||||
|
" <td>深圳</td>\n",
|
||||||
|
" <td>其他商业</td>\n",
|
||||||
|
" <td>qxh</td>\n",
|
||||||
|
" <td>主板</td>\n",
|
||||||
|
" <td>19920413</td>\n",
|
||||||
|
" <td>王玩虹</td>\n",
|
||||||
|
" <td>民营企业</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",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5381</th>\n",
|
||||||
|
" <td>920111.BJ</td>\n",
|
||||||
|
" <td>920111</td>\n",
|
||||||
|
" <td>聚星科技</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>jxkj</td>\n",
|
||||||
|
" <td>北交所</td>\n",
|
||||||
|
" <td>20241111</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5382</th>\n",
|
||||||
|
" <td>920116.BJ</td>\n",
|
||||||
|
" <td>920116</td>\n",
|
||||||
|
" <td>星图测控</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>xtck</td>\n",
|
||||||
|
" <td>北交所</td>\n",
|
||||||
|
" <td>20250102</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5383</th>\n",
|
||||||
|
" <td>920118.BJ</td>\n",
|
||||||
|
" <td>920118</td>\n",
|
||||||
|
" <td>太湖远大</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>thyd</td>\n",
|
||||||
|
" <td>北交所</td>\n",
|
||||||
|
" <td>20240822</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5384</th>\n",
|
||||||
|
" <td>920128.BJ</td>\n",
|
||||||
|
" <td>920128</td>\n",
|
||||||
|
" <td>胜业电气</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>sydq</td>\n",
|
||||||
|
" <td>北交所</td>\n",
|
||||||
|
" <td>20241129</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5385</th>\n",
|
||||||
|
" <td>689009.SH</td>\n",
|
||||||
|
" <td>689009</td>\n",
|
||||||
|
" <td>九号公司-WD</td>\n",
|
||||||
|
" <td>北京</td>\n",
|
||||||
|
" <td>摩托车</td>\n",
|
||||||
|
" <td>jhgs</td>\n",
|
||||||
|
" <td>科创板</td>\n",
|
||||||
|
" <td>20201029</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" <td>None</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"<p>5386 rows × 10 columns</p>\n",
|
||||||
|
"</div>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 3
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
1012
document/ETF信息.csv
Normal file
1012
document/ETF信息.csv
Normal file
File diff suppressed because it is too large
Load Diff
8064
document/SZ000001.csv
Normal file
8064
document/SZ000001.csv
Normal file
File diff suppressed because it is too large
Load Diff
10769
document/Tushare股票信息.csv
10769
document/Tushare股票信息.csv
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user