• python之股票财务分析


    1. #import akshare as ak
    2. import pandas as pd
    3. import matplotlib.pyplot as plt
    4. symbol1="资产负债表"
    5. symbol2="利润表"
    6. symbol3="现金流量表"
    7. #df1=ak.stock_financial_report_sina(stock="601633",symbol=symbol1)
    8. #df2=ak.stock_financial_report_sina(stock="601633",symbol=symbol2)
    9. #df3=ak.stock_financial_report_sina(stock="601633",symbol=symbol3)
    10. #df1.to_csv(f'{symbol1}.csv')
    11. #df2.to_csv(f'{symbol2}.csv')
    12. #df3.to_csv(f'{symbol3}.csv')
    13. data1=pd.read_csv(f'{symbol1}.csv')
    14. data2=pd.read_csv(f'{symbol2}.csv')
    15. data3=pd.read_csv(f'{symbol3}.csv')
    16. data1.index = pd.to_datetime(data1['报告日'], format='%Y%m%d')
    17. data2.index = pd.to_datetime(data2['报告日'], format='%Y%m%d')
    18. data3.index = pd.to_datetime(data3['报告日'], format='%Y%m%d')
    19. data1=data1.fillna(0)
    20. data2=data2.fillna(0)
    21. data3=data3.fillna(0)
    22. #有息负债率=(短期借款+1年内到期的长期负债+长期借款+应付债券+长期应付款)/总资产×100%
    23. yxfz=data1['短期借款']+data1['一年内到期的非流动负债']+data1['长期借款']+data1['应付债券']+data1['长期应付款']
    24. ibdr=yxfz/data1['资产总计']*100
    25. #生产资产/总资产
    26. sz=(data1['固定资产净值']+data1['在建工程合计'])/data1['资产总计']*100
    27. #应收/总资产
    28. yz=(data1['应收票据及应收账款']+data1['应收款项融资']+data1['应收股利']+data1['应收利息']/10000+data1['应收保费']+data1['应收分保账款']+data1['应收分保合同准备金']+data1['应收出口退税']+data1['应收补贴款']+data1['应收保证金']+data1['内部应收款']+data1['其他应收款']+data1['长期应收款'])/data1['资产总计']*100
    29. #货币资金/有息负债
    30. hy=data1['货币资金']/(data1['短期借款']+data1['一年内到期的非流动负债']+data1['长期借款']+data1['应付债券']+data1['长期应付款'])*100
    31. font1 = {'family': 'SimHei', 'weight': 'normal', 'size': 10}
    32. clist=['blue','red','green','black','slategray','lime','gold','purple','green','cyan']
    33. markerlst=['o','*','x','>','<','^','D','d','1','2','3','4']
    34. linestylelst=['-','--','-.',':','-','--','-.',':','-','--','-.',':']
    35. fig=plt.figure(1)
    36. plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
    37. plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
    38. # plt.rcParams['font.family'] = ["Times New Roman"] # 字体设置为Times NewRoman
    39. plt.rcParams['font.sans-serif'] = ['SimHei']
    40. plt.plot(data1['报告日'],ibdr,c=clist[0], marker=markerlst[1], markersize='10', linewidth='3', linestyle=linestylelst[1], label='有息负债率')
    41. plt.plot(data1['报告日'],sz,c=clist[1], marker=markerlst[2], markersize='10', linewidth='3', linestyle=linestylelst[2], label='生产资产/总资产')
    42. plt.plot(data1['报告日'],yz,c=clist[2], marker=markerlst[3], markersize='10', linewidth='3', linestyle=linestylelst[3], label='应收/总资产')
    43. #plt.plot(data['报告日'],hy,c=clist[3], marker=markerlst[4], markersize='10', linewidth='3', linestyle=linestylelst[4], label='货币资金/有息负债')
    44. # 图例展示位置,数字代表第几象限
    45. plt.legend(bbox_to_anchor=(0.5,1.1),loc=9,prop=font1,ncol=3,framealpha=0.5)
    46. #plt.xticks(xs)
    47. #plt.yticks(np.linspace(0,0.16,11))
    48. plt.grid(True, linestyle='--', alpha=0.5)
    49. plt.xlabel("报告期", fontdict={'size': 16})
    50. plt.ylabel("百分比(%)", fontdict={'size': 16})
    51. fig.autofmt_xdate()
    52. fig=plt.figure(2)
    53. plt.rcParams['axes.unicode_minus']=False
    54. plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
    55. plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
    56. # plt.rcParams['font.family'] = ["Times New Roman"] # 字体设置为Times NewRoman
    57. plt.rcParams['font.sans-serif'] = ['SimHei']
    58. plt.plot(data3['报告日'],data3['经营活动产生的现金流量净额'],c=clist[0], marker=markerlst[1], markersize='10', linewidth='3', linestyle=linestylelst[1], label='经营活动产生的现金流量净额')
    59. plt.plot(data3['报告日'],data3['投资活动产生的现金流量净额'],c=clist[1], marker=markerlst[2], markersize='10', linewidth='3', linestyle=linestylelst[2], label='投资活动产生的现金流量净额')
    60. plt.plot(data3['报告日'],data3['筹资活动产生的现金流量净额'],c=clist[2], marker=markerlst[3], markersize='10', linewidth='3', linestyle=linestylelst[3], label='筹资活动产生的现金流量净额')
    61. plt.plot(data2['报告日'],data2['净利润'],c=clist[3], marker=markerlst[4], markersize='10', linewidth='3', linestyle=linestylelst[4], label='净利润')
    62. # 图例展示位置,数字代表第几象限
    63. plt.legend(bbox_to_anchor=(0,1),loc=2,prop=font1,ncol=1,framealpha=0.5)
    64. #plt.xticks(xs)
    65. #plt.yticks(np.linspace(0,0.16,11))
    66. plt.grid(True, linestyle='--', alpha=0.5)
    67. plt.xlabel("报告期", fontdict={'size': 16})
    68. plt.ylabel("元", fontdict={'size': 16})
    69. fig.autofmt_xdate()
    70. fig=plt.figure(3)
    71. plt.rcParams['axes.unicode_minus']=False
    72. plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
    73. plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
    74. # plt.rcParams['font.family'] = ["Times New Roman"] # 字体设置为Times NewRoman
    75. plt.rcParams['font.sans-serif'] = ['SimHei']
    76. plt.plot(data3['报告日'],data3['期末现金及现金等价物余额'],c=clist[0], marker=markerlst[1], markersize='10', linewidth='3', linestyle=linestylelst[1], label='期末现金及现金等价物余额')
    77. plt.plot(data1['报告日'],yxfz,c=clist[1], marker=markerlst[2], markersize='10', linewidth='3', linestyle=linestylelst[2], label='有息负债')
    78. plt.plot(data3['报告日'],data3['销售商品、提供劳务收到的现金'],c=clist[2], marker=markerlst[3], markersize='10', linewidth='3', linestyle=linestylelst[3], label='销售商品、提供劳务收到的现金')
    79. plt.plot(data2['报告日'],data2['营业收入'],c=clist[3], marker=markerlst[4], markersize='10', linewidth='3', linestyle=linestylelst[4], label='营业收入')
    80. plt.plot(data3['报告日'],data3['现金及现金等价物净增加额']+data3['分配股利、利润或偿付利息所支付的现金'],c=clist[4], marker=markerlst[5], markersize='10', linewidth='3', linestyle=linestylelst[5], label='现金及现金等价物净增加额')
    81. # 图例展示位置,数字代表第几象限
    82. plt.legend(bbox_to_anchor=(0,1),loc=2,prop=font1,ncol=1,framealpha=0.5)
    83. #plt.xticks(xs)
    84. #plt.yticks(np.linspace(0,0.16,11))
    85. plt.grid(True, linestyle='--', alpha=0.5)
    86. plt.xlabel("报告期", fontdict={'size': 16})
    87. plt.ylabel("元", fontdict={'size': 16})
    88. fig.autofmt_xdate(bottom=0.2, rotation=30, ha='right')
    89. plt.show()

  • 相关阅读:
    技术分享 | Redis 集群架构解析
    你写过的最蠢的代码是?——一起探讨编程的奇葩时刻
    Spark 运行架构与原理
    视频标注是什么?和图像数据标注的区别?
    OceanBase 金融项目优化案例
    第十五章 源代码文件 REST API 简介
    重装系统后如何在win10系统打开命令行窗口
    市场调研:2022年金属家具行业深度分析与发展前景报告
    京东数据分析平台:2023年8月京东奶粉行业品牌销售排行榜
    线性回归的梯度下降法——机器学习
  • 原文地址:https://blog.csdn.net/T20151470/article/details/133493710