siat 3.0.30__py3-none-any.whl → 3.0.38__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
siat/financials_china2.py CHANGED
@@ -449,9 +449,9 @@ def df_directprint(dfp,title_txt,footnote, \
449
449
  title_break=True,foot_break=True,foot_center=False,foot_start=1, \
450
450
  decimals=2,facecolor='papayawhip'):
451
451
  """
452
- def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
452
+ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip',font_size='16px'):
453
453
  """
454
- 功能:对dfp直接打印,使用pandas style打印
454
+ 功能:对dfp直接打印,使用pandas style打印,套壳函数df_display_CSS
455
455
  """
456
456
  #替换nan和inf
457
457
  import pandas as pd
@@ -459,7 +459,7 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
459
459
  dfp.replace([np.inf, -np.inf],'-', inplace=True)
460
460
  dfp.replace([np.nan],'-', inplace=True)
461
461
 
462
- print('') #空一行
462
+ #print('') #空一行
463
463
 
464
464
  """
465
465
  #解析标题各行并居中打印
@@ -477,6 +477,16 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
477
477
 
478
478
  pos=pos_new+1
479
479
  """
480
+
481
+ #确定表格字体大小
482
+ titile_font_size=font_size
483
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
484
+
485
+ df_display_CSS(dfp,titletxt=title_txt,footnote=footnote,facecolor=facecolor, \
486
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
487
+ data_font_size=data_font_size)
488
+
489
+ """
480
490
  disph=dfp.style.hide() #不显示索引列
481
491
  dispp=disph.format(precision=decimals) #设置带有小数点的列精度调整为小数点后2位
482
492
 
@@ -502,7 +512,7 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
502
512
  #打印数据框本身
503
513
  from IPython.display import display
504
514
  display(dispf2)
505
-
515
+ """
506
516
  """
507
517
  #print(dfp.to_string(index=False))
508
518
  colalign=['left']+['right']*(len(list(dfp)) - 1)
@@ -532,7 +542,7 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
532
542
  pos=pos_new+1
533
543
  """
534
544
  #print('') #空一行
535
- print(footnote,'\n')
545
+ #print(footnote,'\n')
536
546
 
537
547
  return
538
548
  #==============================================================================
@@ -551,7 +561,8 @@ if __name__=='__main__':
551
561
  items=["货币资金","应收票据","应收账款"]
552
562
  dfp=fs_item_analysis_1(df,ticker,fsdate,items)
553
563
 
554
- def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='papayawhip'):
564
+ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='', \
565
+ facecolor='papayawhip',font_size='16px'):
555
566
  """
556
567
  功能:比较给定财报日期的资产项目、期初数、期末数、变动额和变动幅度%
557
568
  """
@@ -571,8 +582,8 @@ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='p
571
582
  """
572
583
 
573
584
  if not math.isnan(i_value):
574
- i_value_yy=round(i_value/yiyuan,2)
575
- i_value_qc_yy=round(i_value_qc/yiyuan,2)
585
+ i_value_yy=round(i_value/yiyuan,4)
586
+ i_value_qc_yy=round(i_value_qc/yiyuan,4)
576
587
  i_value_chg_yy=round(i_value_yy - i_value_qc_yy,2)
577
588
  if not(i_value_qc_yy==0):
578
589
  i_value_chg_pct=round(i_value_chg_yy/i_value_qc_yy*100,2)
@@ -599,19 +610,26 @@ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='p
599
610
  if title_txt=='':
600
611
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
601
612
  title_txt=tname+"财报分析:重要项目的变动情况\n(截至"+fsdate+")"
602
- import datetime; today=datetime.date.today()
613
+ import datetime; todaydt=datetime.date.today()
603
614
  #footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
604
- footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
615
+ #footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
616
+ footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
605
617
 
606
618
  if notes=='':
607
619
  foottext=footnote
608
620
  else:
609
621
  foottext=notes+'\n'+footnote
622
+
623
+ #确定表格字体大小
624
+ titile_font_size=font_size
625
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
610
626
 
611
627
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
612
628
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
613
629
  first_col_align='left', \
614
- facecolor=facecolor,decimals=2)
630
+ facecolor=facecolor,decimals=2, \
631
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
632
+ data_font_size=data_font_size)
615
633
 
616
634
  return dfp
617
635
 
@@ -630,7 +648,8 @@ if __name__=='__main__':
630
648
 
631
649
  dfp=fs_item_analysis_2(df,ticker,fsdates,items)
632
650
 
633
- def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='papayawhip'):
651
+ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='', \
652
+ facecolor='papayawhip',font_size='16px'):
634
653
  """
635
654
  功能:比较给定财报日期的报表项目、最近几年fsdates、占比%
636
655
  """
@@ -647,7 +666,7 @@ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
647
666
  row_list=[i]
648
667
  for fd in fsdates1:
649
668
  i_value,_,_=select_item(df,ticker,fd,i)
650
- row_list=row_list+[round(i_value/yiyuan,2)]
669
+ row_list=row_list+[round(i_value/yiyuan,4)]
651
670
  dfp.loc[len(dfp)] = row_list
652
671
 
653
672
  last_row=[items[0]+"占比%"]
@@ -663,18 +682,24 @@ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
663
682
  if title_txt=='':
664
683
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
665
684
  title_txt=tname+"财报分析:重要项目占比的变动趋势"
666
- import datetime; today=datetime.date.today()
667
- footnote="*数据来源:新浪财经,"+str(today)
685
+ import datetime; todaydt=datetime.date.today()
686
+ footnote="数据来源:新浪财经,"+str(todaydt)
668
687
 
669
688
  if notes=='':
670
689
  foottext=footnote
671
690
  else:
672
691
  foottext=notes+'\n'+footnote
692
+
693
+ #确定表格字体大小
694
+ titile_font_size=font_size
695
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
673
696
 
674
697
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
675
698
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
676
699
  first_col_align='left', \
677
- facecolor=facecolor,decimals=2)
700
+ facecolor=facecolor,decimals=2, \
701
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
702
+ data_font_size=data_font_size)
678
703
 
679
704
  return dfp
680
705
 
@@ -689,7 +714,8 @@ if __name__=='__main__':
689
714
 
690
715
  dfp=fs_item_analysis_3(df,ticker,fsdates)
691
716
 
692
- def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papayawhip'):
717
+ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='', \
718
+ facecolor='papayawhip',font_size='16px'):
693
719
  """
694
720
  功能:比较给定财报日期的流动比率、最近几年fsdates
695
721
  """
@@ -705,7 +731,7 @@ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
705
731
  row_list=[i]
706
732
  for fd in fsdates1:
707
733
  i_value,_,_=select_item(df,ticker,fd,i)
708
- row_list=row_list+[round(i_value/yiyuan,2)]
734
+ row_list=row_list+[round(i_value/yiyuan,4)]
709
735
  dfp.loc[len(dfp)] = row_list
710
736
 
711
737
  last_row=["流动比率%"]
@@ -721,18 +747,28 @@ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
721
747
  if title_txt=='':
722
748
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
723
749
  title_txt=tname+"财报分析:流动比率的变动趋势"
724
- import datetime; today=datetime.date.today()
725
- footnote="*数据来源:新浪财经,"+str(today)
750
+ import datetime; todaydt=datetime.date.today()
751
+ footnote="数据来源:新浪财经,"+str(todaydt)
726
752
 
727
753
  if notes=='':
728
754
  foottext=footnote
729
755
  else:
730
756
  foottext=notes+'\n'+footnote
757
+
758
+ #确定表格字体大小
759
+ titile_font_size=font_size
760
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
761
+
762
+ #确定表格字体大小
763
+ titile_font_size=font_size
764
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
731
765
 
732
766
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
733
767
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
734
768
  first_col_align='left', \
735
- facecolor=facecolor,decimals=2)
769
+ facecolor=facecolor,decimals=2, \
770
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
771
+ data_font_size=data_font_size)
736
772
 
737
773
  return dfp
738
774
 
@@ -747,7 +783,8 @@ if __name__=='__main__':
747
783
 
748
784
  dfp=fs_item_analysis_4(df,ticker,fsdates)
749
785
 
750
- def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papayawhip'):
786
+ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='', \
787
+ facecolor='papayawhip',font_size='16px'):
751
788
  """
752
789
  功能:比较给定财报日期的流动比率、最近几年fsdates
753
790
  """
@@ -762,14 +799,14 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
762
799
  row_list=[i]
763
800
  for fd in fsdates1:
764
801
  i_value,_,_=select_item(df,ticker,fd,i)
765
- row_list=row_list+[round(i_value/yiyuan,2)]
802
+ row_list=row_list+[round(i_value/yiyuan,4)]
766
803
  dfp.loc[len(dfp)] = row_list
767
804
 
768
805
  i='存货'
769
806
  row_list=['其中:'+i]
770
807
  for fd in fsdates1:
771
808
  i_value,_,_=select_item(df,ticker,fd,i)
772
- row_list=row_list+[round(i_value/yiyuan,2)]
809
+ row_list=row_list+[round(i_value/yiyuan,4)]
773
810
  dfp.loc[len(dfp)] = row_list
774
811
 
775
812
  i='速动资产合计'
@@ -783,7 +820,7 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
783
820
  row_list=[i]
784
821
  for fd in fsdates1:
785
822
  i_value,_,_=select_item(df,ticker,fd,i)
786
- row_list=row_list+[round(i_value/yiyuan,2)]
823
+ row_list=row_list+[round(i_value/yiyuan,4)]
787
824
  dfp.loc[len(dfp)] = row_list
788
825
 
789
826
  last_row=["速动比率%"]
@@ -799,18 +836,24 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
799
836
  if title_txt=='':
800
837
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
801
838
  title_txt=tname+"财报分析:速动比率的变动趋势"
802
- import datetime; today=datetime.date.today()
803
- footnote="*数据来源:新浪财经,"+str(today)
839
+ import datetime; todaydt=datetime.date.today()
840
+ footnote="数据来源:新浪财经,"+str(todaydt)
804
841
 
805
842
  if notes=='':
806
843
  foottext=footnote
807
844
  else:
808
845
  foottext=notes+'\n'+footnote
846
+
847
+ #确定表格字体大小
848
+ titile_font_size=font_size
849
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
809
850
 
810
851
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
811
852
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
812
853
  first_col_align='left', \
813
- facecolor=facecolor,decimals=2)
854
+ facecolor=facecolor,decimals=2, \
855
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
856
+ data_font_size=data_font_size)
814
857
  return dfp
815
858
 
816
859
  #==============================================================================
@@ -824,7 +867,8 @@ if __name__=='__main__':
824
867
 
825
868
  dfp=fs_item_analysis_5(df,ticker,fsdates)
826
869
 
827
- def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papayawhip'):
870
+ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='', \
871
+ facecolor='papayawhip',font_size='16px'):
828
872
  """
829
873
  功能:比较给定财报日期的流动比率、最近几年fsdates
830
874
  """
@@ -840,7 +884,7 @@ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
840
884
  row_list=[i]
841
885
  for fd in fsdates1:
842
886
  i_value,_,_=select_item(df,ticker,fd,i)
843
- row_list=row_list+[round(i_value/yiyuan,2)]
887
+ row_list=row_list+[round(i_value/yiyuan,4)]
844
888
  dfp.loc[len(dfp)] = row_list
845
889
 
846
890
  last_row=["资产负债率%"]
@@ -856,18 +900,24 @@ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
856
900
  if title_txt=='':
857
901
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
858
902
  title_txt=tname+"财报分析:资产负债率的变动趋势"
859
- import datetime; today=datetime.date.today()
860
- footnote="*数据来源:新浪财经,"+str(today)
903
+ import datetime; todaydt=datetime.date.today()
904
+ footnote="数据来源:新浪财经,"+str(todaydt)
861
905
 
862
906
  if notes=='':
863
907
  foottext=footnote
864
908
  else:
865
909
  foottext=notes+'\n'+footnote
910
+
911
+ #确定表格字体大小
912
+ titile_font_size=font_size
913
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
866
914
 
867
915
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
868
916
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
869
917
  first_col_align='left', \
870
- facecolor=facecolor,decimals=2)
918
+ facecolor=facecolor,decimals=2, \
919
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
920
+ data_font_size=data_font_size)
871
921
  return dfp
872
922
 
873
923
  #==============================================================================
@@ -902,7 +952,7 @@ def fs_item_analysis_6_original(df,ticker,fsdates,items,title_txt='',notes=''):
902
952
  row_list=[fd]
903
953
  for i in items:
904
954
  i_value,_,_=select_item(df,ticker,fd,i)
905
- row_list=row_list+[round(i_value/yiyuan,2)]
955
+ row_list=row_list+[round(i_value/yiyuan,4)]
906
956
  dfp.loc[len(dfp)] = row_list
907
957
 
908
958
  last_row=["增幅%"]
@@ -919,8 +969,8 @@ def fs_item_analysis_6_original(df,ticker,fsdates,items,title_txt='',notes=''):
919
969
  if title_txt=='':
920
970
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
921
971
  title_txt=tname+"财报分析:重要关联项目的增幅对比"
922
- import datetime; today=datetime.date.today()
923
- footnote="*数据来源:新浪财经,"+str(today)
972
+ import datetime; todaydt=datetime.date.today()
973
+ footnote="数据来源:新浪财经,"+str(todaydt)
924
974
 
925
975
  if notes=='':
926
976
  foottext=footnote
@@ -942,7 +992,8 @@ if __name__=='__main__':
942
992
 
943
993
  dfp=fs_item_analysis_6(df,ticker,fsdates,items)
944
994
 
945
- def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='papayawhip'):
995
+ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='', \
996
+ facecolor='papayawhip',font_size='16px'):
946
997
  """
947
998
  功能:比较给定财报日期的应收账款与营业收入增幅、最近几年fsdates
948
999
  """
@@ -958,7 +1009,7 @@ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
958
1009
  for i in items:
959
1010
  i_value,_,_=select_item(df,ticker,fd,i)
960
1011
  if not('%' in i) and not('(元)' in i):
961
- row_list=row_list+[round(i_value/yiyuan,2)]
1012
+ row_list=row_list+[round(i_value/yiyuan,4)]
962
1013
  yiyuan_foot=True
963
1014
  else:
964
1015
  row_list=row_list+[i_value]
@@ -978,21 +1029,27 @@ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
978
1029
  if title_txt=='':
979
1030
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
980
1031
  title_txt=tname+"财报分析:重要关联项目的增幅对比"
981
- import datetime; today=datetime.date.today()
1032
+ import datetime; todaydt=datetime.date.today()
982
1033
  if yiyuan_foot:
983
- footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
1034
+ footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
984
1035
  else:
985
- footnote="*数据来源:新浪财经,"+str(today)
1036
+ footnote="数据来源:新浪财经,"+str(todaydt)
986
1037
 
987
1038
  if notes=='':
988
1039
  foottext=footnote
989
1040
  else:
990
1041
  foottext=notes+'\n'+footnote
1042
+
1043
+ #确定表格字体大小
1044
+ titile_font_size=font_size
1045
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
991
1046
 
992
1047
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
993
1048
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
994
1049
  first_col_align='left', \
995
- facecolor=facecolor,decimals=2)
1050
+ facecolor=facecolor,decimals=2, \
1051
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
1052
+ data_font_size=data_font_size)
996
1053
  return dfp
997
1054
 
998
1055
  #==============================================================================
@@ -1032,7 +1089,7 @@ def fs_item_analysis_7_original(df,tickers,fsdate,items,title_txt=''):
1032
1089
  for i in items:
1033
1090
  i_value,_,_=select_item(df,t,fsdate,i)
1034
1091
  if not('%' in i) and not('(元)' in i):
1035
- row_list=row_list+[round(i_value/yiyuan,2)]
1092
+ row_list=row_list+[round(i_value/yiyuan,4)]
1036
1093
  yiyuan_foot=True
1037
1094
  else:
1038
1095
  row_list=row_list+[i_value]
@@ -1049,11 +1106,11 @@ def fs_item_analysis_7_original(df,tickers,fsdate,items,title_txt=''):
1049
1106
  ticker=tickers[0]
1050
1107
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
1051
1108
  title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
1052
- import datetime; today=datetime.date.today()
1109
+ import datetime; todaydt=datetime.date.today()
1053
1110
  if yiyuan_foot:
1054
- footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
1111
+ footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
1055
1112
  else:
1056
- footnote="*数据来源:新浪财经,"+str(today)
1113
+ footnote="数据来源:新浪财经,"+str(todaydt)
1057
1114
  df_directprint(dfp,title_txt,footnote)
1058
1115
 
1059
1116
  return dfp
@@ -1069,7 +1126,8 @@ if __name__=='__main__':
1069
1126
 
1070
1127
  dfp=fs_item_analysis_7(df,tickers,fsdate,items)
1071
1128
 
1072
- def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='papayawhip'):
1129
+ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='', \
1130
+ facecolor='papayawhip',font_size='16px'):
1073
1131
  """
1074
1132
  功能:比较给定财报日期fsdate的项目和指标,与同业相比
1075
1133
  """
@@ -1085,7 +1143,7 @@ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
1085
1143
  for i in items:
1086
1144
  i_value,_,_=select_item(df,t,fsdate,i)
1087
1145
  if not('%' in i) and not('(元)' in i):
1088
- row_list=row_list+[round(i_value/yiyuan,2)]
1146
+ row_list=row_list+[round(i_value/yiyuan,4)]
1089
1147
  yiyuan_foot=True
1090
1148
  else:
1091
1149
  row_list=row_list+[i_value]
@@ -1119,23 +1177,31 @@ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
1119
1177
  ticker=tickers[0]
1120
1178
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
1121
1179
  title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
1122
- import datetime; today=datetime.date.today()
1180
+ import datetime; todaydt=datetime.date.today()
1123
1181
  if yiyuan_foot:
1124
1182
  #footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
1125
- footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
1183
+ #footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
1184
+ footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
1126
1185
  else:
1127
1186
  #footnote="*数据来源:新浪财经,"+str(today)
1128
- footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
1187
+ #footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
1188
+ footnote='数据来源:新浪财经,'+str(todaydt)
1129
1189
 
1130
1190
  if notes=='':
1131
1191
  foottext=footnote
1132
1192
  else:
1133
1193
  foottext=notes+'\n'+footnote
1194
+
1195
+ #确定表格字体大小
1196
+ titile_font_size=font_size
1197
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
1134
1198
 
1135
1199
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
1136
1200
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
1137
1201
  first_col_align='left', \
1138
- facecolor=facecolor,decimals=2)
1202
+ facecolor=facecolor,decimals=2, \
1203
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
1204
+ data_font_size=data_font_size)
1139
1205
  return dfp
1140
1206
 
1141
1207
  #==============================================================================
@@ -1149,7 +1215,8 @@ if __name__=='__main__':
1149
1215
  items=['资产总计','资产负债率%','流动比率%','速动比率%']
1150
1216
  dfp=fs_item_analysis_8(df,tickers,fsdate,items)
1151
1217
 
1152
- def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='papayawhip'):
1218
+ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='', \
1219
+ facecolor='papayawhip',font_size='16px'):
1153
1220
  """
1154
1221
  功能:比较给定财报日期fsdate的项目和指标,与同业相比
1155
1222
  区别:项目不带‘(亿元)’字样,避免行过长
@@ -1167,7 +1234,7 @@ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
1167
1234
  for i in items:
1168
1235
  i_value,_,_=select_item(df,t,fsdate,i)
1169
1236
  if not('%' in i) and not('(元)' in i):
1170
- row_list=row_list+[round(i_value/yiyuan,2)]
1237
+ row_list=row_list+[round(i_value/yiyuan,4)]
1171
1238
  yiyuan_foot=True
1172
1239
  else:
1173
1240
  row_list=row_list+[i_value]
@@ -1201,23 +1268,31 @@ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
1201
1268
  tname=ticker_name(ticker,'stock').replace("(A股)",'')
1202
1269
  title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
1203
1270
 
1204
- import datetime; today=datetime.date.today()
1271
+ import datetime; todaydt=datetime.date.today()
1205
1272
  if yiyuan_foot:
1206
1273
  #footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
1207
- footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
1274
+ #footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
1275
+ footnote="单位:亿元,"+'数据来源:新浪财经,'+str(todaydt)
1208
1276
  else:
1209
1277
  #footnote="*数据来源:新浪财经,"+str(today)
1210
- footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
1278
+ #footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
1279
+ footnote='数据来源:新浪财经,'+str(todaydt)
1211
1280
 
1212
1281
  if notes=='':
1213
1282
  foottext=footnote
1214
1283
  else:
1215
1284
  foottext=notes+'\n'+footnote
1285
+
1286
+ #确定表格字体大小
1287
+ titile_font_size=font_size
1288
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
1216
1289
 
1217
1290
  #df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
1218
1291
  df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
1219
1292
  first_col_align='left', \
1220
- facecolor=facecolor,decimals=2)
1293
+ facecolor=facecolor,decimals=2, \
1294
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
1295
+ data_font_size=data_font_size)
1221
1296
  return dfp
1222
1297
 
1223
1298
  #==============================================================================
@@ -1226,16 +1301,16 @@ if __name__=='__main__':
1226
1301
  fsdates=['2022-12-31','2021-12-31','2020-12-31','2019-12-31']
1227
1302
  asset_liab_structure_china(tickers,fsdates)
1228
1303
 
1229
- def asset_liab_china(tickers,fsdates,facecolor='papayawhip'):
1304
+ def asset_liab_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
1230
1305
  """
1231
1306
  套壳函数asset_liab_structure_china
1232
1307
  """
1233
- asset_liab_structure_china(tickers,fsdates,facecolor=facecolor)
1308
+ asset_liab_structure_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1234
1309
 
1235
1310
  return
1236
1311
 
1237
1312
 
1238
- def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
1313
+ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
1239
1314
  """
1240
1315
  功能:分析上市公司的资产负债基本结构,并与同业公司对比。
1241
1316
  注意1:分析近三期情况,fsdates要给出四个报表日期,以便获得期初数。
@@ -1268,9 +1343,9 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
1268
1343
  comparator=tickers[0]
1269
1344
  comparee=tickers[1:]
1270
1345
  print(" Conducting asset-liability analysis ...")
1271
- print(" Comparator:",ticker_name(comparator,'stock'))
1346
+ print(" Focus on:",ticker_name(comparator,'stock'))
1272
1347
  #print(" Comparee :",ticker_name(comparee))
1273
- print(" Comparee :",end='')
1348
+ print(" Peers :",end='')
1274
1349
  if comparee != []:
1275
1350
  print_list(ticker_name(comparee,'stock'))
1276
1351
  else:
@@ -1315,23 +1390,31 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
1315
1390
  #资产变动趋势2
1316
1391
  title_txt=title_head+"主要资产项目,"+fsdate
1317
1392
  items2=["货币资金","应收账款","存货","长期股权投资","固定资产净额","资产总计"]
1318
-
1393
+ """
1319
1394
  notes1="注1:货币资金包括库存现金、银行存款和其他货币资金三个部分"
1320
1395
  notes2="注2:其他货币资金包括银行汇(本)票存款、信用证保证金存款和信用卡存款等"
1321
1396
  notes3="注3:长期股权投资是指企业对其子公司、合营企业及联营企业的权益性投资"
1322
1397
  notes4="注4:固定资产净额 = 固定资产原值 - 累计折旧 - 资产减值准备"
1398
+ """
1399
+ notes1="注:\n货币资金包括库存现金、银行存款和其他货币资金三个部分"
1400
+ notes2="其他货币资金包括银行汇(本)票存款、信用证保证金存款和信用卡存款等"
1401
+ notes3="长期股权投资是指企业对其子公司、合营企业及联营企业的权益性投资"
1402
+ notes4="固定资产净额 = 固定资产原值 - 累计折旧 - 资产减值准备"
1403
+
1323
1404
  notes=notes1+'\n'+notes2+'\n'+notes3+'\n'+notes4
1324
- dfp2=fs_item_analysis_1(df,ticker,fsdate,items2,title_txt,notes,facecolor=facecolor)
1405
+ dfp2=fs_item_analysis_1(df,ticker,fsdate,items2,title_txt,notes, \
1406
+ facecolor=facecolor,font_size=font_size)
1325
1407
 
1326
1408
  #负债变动趋势
1327
1409
  title_txt=title_head+"主要负债项目,"+fsdate
1328
1410
  items3=["短期借款","长期借款","应付账款","预收款项","应交税费","应付职工薪酬","负债合计"]
1329
- dfp3=fs_item_analysis_1(df,ticker,fsdate,items3,title_txt,facecolor=facecolor)
1411
+ dfp3=fs_item_analysis_1(df,ticker,fsdate,items3,title_txt, \
1412
+ facecolor=facecolor,font_size=font_size)
1330
1413
 
1331
1414
  #所有者权益变动趋势
1332
1415
  title_txt=title_head+"主要权益项目,"+fsdate
1333
1416
  items4=["实收资本(或股本)","资本公积","盈余公积","未分配利润","所有者权益合计"]
1334
-
1417
+ """
1335
1418
  notes1="注1:实收资本(或股本,Paid-in Capital)指企业实际收到的投资人投入的资本"
1336
1419
  notes2="注2:资本公积是由股东投入的因故不能计入实收资本(或股本)中的那部分投入资金"
1337
1420
  notes3=" 资本公积包括资本(股本)溢价、其他资本公积、资产评估增值、资本折算差额"
@@ -1346,41 +1429,63 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
1346
1429
  notes12=" 任意盈余公积是指企业内部可自主决定比例提取的盈余公积"
1347
1430
  notes13=" 企业提取的盈余公积可用于弥补亏损、转增资本、发放现金股利或利润等"
1348
1431
  notes14="注4:未分配利润是净利润经弥补亏损、提取盈余公积和向投资者分配利润后的资金"
1432
+ """
1433
+ notes1="注:\n实收资本(或股本,Paid-in Capital)指企业实际收到的投资人投入的资本"
1434
+ notes2="资本公积是由股东投入的因故不能计入实收资本(或股本)中的那部分投入资金"
1435
+ notes3="资本公积包括资本(股本)溢价、其他资本公积、资产评估增值、资本折算差额"
1436
+ notes4="资本(股本)溢价是公司发行权益证券时价格超出票面价值的部分"
1437
+ notes5="其他资本公积包括金融资产公允价值变动、被投资单位净利润以外的变动等"
1438
+ notes6="资产评估增值是重估企业资产时,重估价高于资产的账面净值的部分"
1439
+ notes7="资本折算差额是外币资本因汇率变动产生的差额"
1440
+ notes8="盈余公积是企业按照要求从税后利润中提取的、属于留存收益范畴的资金"
1441
+ notes9="企业从历年利润中提取的留存于企业的内部积累,包括盈余公积和未分配利润"
1442
+ notes10="公司制企业的盈余公积包括法定盈余公积和任意盈余公积"
1443
+ notes11="法定盈余公积是指企业按照规定比例从净利润中必须提取的盈余公积"
1444
+ notes12="任意盈余公积是指企业内部可自主决定比例提取的盈余公积"
1445
+ notes13="企业提取的盈余公积可用于弥补亏损、转增资本、发放现金股利或利润等"
1446
+ notes14="未分配利润是净利润经弥补亏损、提取盈余公积和向投资者分配利润后的资金"
1447
+
1349
1448
  notesA=notes1+'\n'+notes2+'\n'+notes3+'\n'+notes4+'\n'+notes5+'\n'+notes6+'\n'+notes7
1350
1449
  notesB=notes8+'\n'+notes9+'\n'+notes10+'\n'+notes11+'\n'+notes12+'\n'+notes13+'\n'+notes14
1351
1450
 
1352
1451
  notes=notesA+'\n'+notesB
1353
- dfp4=fs_item_analysis_1(df,ticker,fsdate,items4,title_txt,notes,facecolor=facecolor)
1452
+ dfp4=fs_item_analysis_1(df,ticker,fsdate,items4,title_txt,notes, \
1453
+ facecolor=facecolor,font_size=font_size)
1354
1454
 
1355
1455
  ### 货币资金与应收项目
1356
1456
  #资产变动趋势1:"货币资金","应收票据","应收账款"
1357
1457
  title_txt=title_head+"货币资金与应收项目,"+fsdate
1358
1458
  items1=["货币资金","应收票据","应收账款"]
1359
- dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt,facecolor=facecolor)
1459
+ dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt, \
1460
+ facecolor=facecolor,font_size=font_size)
1360
1461
 
1361
1462
  #应收账款占比变动分析
1362
1463
  fsdates1=fsdates[:3]
1363
1464
  items5=["应收账款","资产总计"]
1364
1465
  title_txt=title_head+"应收账款占比变动情况"
1365
- dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt,facecolor=facecolor)
1466
+ dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt, \
1467
+ facecolor=facecolor,font_size=font_size)
1366
1468
 
1367
1469
  #应收与营业收入增幅对比
1368
1470
  fsdates2=fsdates[:2]
1369
1471
  items6=['应收账款',"应收票据",'营业总收入']
1370
1472
  title_txt=title_head+"应收项目与营业收入增幅对比"
1371
- dfp6=fs_item_analysis_6(df,ticker,fsdates2,items6,title_txt,facecolor=facecolor)
1473
+ dfp6=fs_item_analysis_6(df,ticker,fsdates2,items6,title_txt, \
1474
+ facecolor=facecolor,font_size=font_size)
1372
1475
 
1373
1476
  #应收账款占比同行对比
1374
1477
  items7=['应收账款','资产总计','应收账款占比%']
1375
1478
  #title_txt=title_head+"应收账款占比同行对比"
1376
1479
  title_txt="应收账款占比同行对比:"+fsdate
1377
- dfp7=fs_item_analysis_7(df,tickers,fsdate,items7,title_txt,facecolor=facecolor)
1480
+ dfp7=fs_item_analysis_7(df,tickers,fsdate,items7,title_txt, \
1481
+ facecolor=facecolor,font_size=font_size)
1378
1482
 
1379
1483
  ### 存货
1380
1484
  #存货占比变动分析
1381
1485
  items8=["存货","资产总计"]
1382
1486
  title_txt=title_head+"存货占比变动情况"
1383
- dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt,facecolor=facecolor)
1487
+ dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt, \
1488
+ facecolor=facecolor,font_size=font_size)
1384
1489
  """
1385
1490
  items9=["存货","营业总收入"]
1386
1491
  dfp9=fs_item_analysis_6(df,ticker,fsdates2,items9)
@@ -1388,32 +1493,38 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
1388
1493
  #存货与营业收入增幅对比分析
1389
1494
  items10=['存货','流动资产合计',"速动资产合计","资产总计"]
1390
1495
  title_txt=title_head+"存货与资产项目增幅对比"
1391
- dfp10=fs_item_analysis_6(df,ticker,fsdates2,items10,title_txt,facecolor=facecolor)
1496
+ dfp10=fs_item_analysis_6(df,ticker,fsdates2,items10,title_txt, \
1497
+ facecolor=facecolor,font_size=font_size)
1392
1498
 
1393
1499
  #存货占比与行业对比
1394
1500
  items11=['存货','资产总计','存货占比%']
1395
1501
  #title_txt=title_head+"存货占比情况同行对比"
1396
1502
  title_txt="存货占比情况同行对比:"+fsdate
1397
- dfp11=fs_item_analysis_7(df,tickers,fsdate,items11,title_txt,facecolor=facecolor)
1503
+ dfp11=fs_item_analysis_7(df,tickers,fsdate,items11,title_txt, \
1504
+ facecolor=facecolor,font_size=font_size)
1398
1505
 
1399
1506
  ### 偿债能力
1400
1507
  #流动比率变动分析
1401
1508
  title_txt=title_head+"流动比率变动情况"
1402
- dfp12=fs_item_analysis_3(df,ticker,fsdates1,title_txt,facecolor=facecolor)
1509
+ dfp12=fs_item_analysis_3(df,ticker,fsdates1,title_txt, \
1510
+ facecolor=facecolor,font_size=font_size)
1403
1511
 
1404
1512
  #速动比率变动分析
1405
1513
  title_txt=title_head+"速动比率变动情况"
1406
- dfp13=fs_item_analysis_4(df,ticker,fsdates1,title_txt,facecolor=facecolor)
1514
+ dfp13=fs_item_analysis_4(df,ticker,fsdates1,title_txt, \
1515
+ facecolor=facecolor,font_size=font_size)
1407
1516
 
1408
1517
  #资产负债率变动分析
1409
1518
  title_txt=title_head+"资产负债率变动情况"
1410
- dfp14=fs_item_analysis_5(df,ticker,fsdates1,title_txt,facecolor=facecolor)
1519
+ dfp14=fs_item_analysis_5(df,ticker,fsdates1,title_txt, \
1520
+ facecolor=facecolor,font_size=font_size)
1411
1521
 
1412
1522
  #资产负债率同行比较
1413
1523
  #title_txt=title_head+"资产负债率同行比较"
1414
1524
  title_txt="资产负债率同行比较:"+fsdate
1415
1525
  items15=['资产总计','资产负债率%','流动比率%','速动比率%']
1416
- dfp15=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,facecolor=facecolor)
1526
+ dfp15=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt, \
1527
+ facecolor=facecolor,font_size=font_size)
1417
1528
 
1418
1529
  return
1419
1530
 
@@ -1423,15 +1534,15 @@ if __name__=='__main__':
1423
1534
  fsdates=['2021-12-31','2020-12-31','2019-12-31','2018-12-31']
1424
1535
  income_cost_structure_china(tickers,fsdates)
1425
1536
 
1426
- def income_cost_china(tickers,fsdates,facecolor='papayawhip'):
1537
+ def income_cost_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
1427
1538
  """
1428
1539
  套壳函数income_cost_structure_china
1429
1540
  """
1430
- income_cost_structure_china(tickers,fsdates,facecolor=facecolor)
1541
+ income_cost_structure_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1431
1542
 
1432
1543
  return
1433
1544
 
1434
- def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
1545
+ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
1435
1546
  """
1436
1547
  功能:分析上市公司的收入成本基本结构,并与同业公司对比。
1437
1548
  注意1:分析近三期情况,fsdates要给出四个报表日期,以便获得期初数。
@@ -1473,9 +1584,9 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
1473
1584
  comparator=tickers[0]
1474
1585
  comparee=tickers[1:]
1475
1586
  print(" Conducting income-cost analysis ...")
1476
- print(" Comparator:",ticker_name(comparator,'stock'))
1587
+ print(" Focus on:",ticker_name(comparator,'stock'))
1477
1588
  #print(" Comparee :",ticker_name(comparee))
1478
- print(" Comparee :",end='')
1589
+ print(" Peers :",end='')
1479
1590
  if comparee != []:
1480
1591
  print_list(ticker_name(comparee,'stock'))
1481
1592
  else:
@@ -1499,7 +1610,8 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
1499
1610
  #收入成本总体变动趋势
1500
1611
  title_txt=title_head+"主要利润表项目,"+fsdate
1501
1612
  items1=["营业总收入","营业总成本","营业成本","毛利润","营业利润","营业外收支","税前利润","所得税费用","净利润","归母净利润"]
1502
- dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt,facecolor=facecolor)
1613
+ dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt, \
1614
+ facecolor=facecolor,font_size=font_size)
1503
1615
 
1504
1616
  #成本变动趋势
1505
1617
  title_txt=title_head+"主要成本费用项目,"+fsdate
@@ -1512,80 +1624,107 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
1512
1624
  items2=["营业总成本","营业成本","营业税金及附加","销售费用","管理费用","研发费用",
1513
1625
  "应付利息","非流动资产处置损失",
1514
1626
  "资产减值损失","营业外支出"]
1515
- dfp2=fs_item_analysis_1(df,ticker,'2021-12-31',items2,title_txt,facecolor=facecolor)
1627
+ dfp2=fs_item_analysis_1(df,ticker,'2021-12-31',items2,title_txt, \
1628
+ facecolor=facecolor,font_size=font_size)
1516
1629
 
1517
1630
  #占比变动分析:近三年
1518
1631
  title_txt=title_head+"营业总成本占营业总收入比例情况"
1519
1632
  fsdates1=fsdates[:3]
1520
1633
  items3=["营业总成本","营业总收入"]
1521
-
1634
+ """
1522
1635
  notes1="注1:营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
1523
1636
  notes2="注2:营业收入=主营业务收入和其他非主营业务收入"
1524
1637
  notes3="注3:营业总收入=营业收入+非营业收入(投资收益、营业外收入等)"
1638
+ """
1639
+ notes1="注:\n营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
1640
+ notes2="营业收入=主营业务收入和其他非主营业务收入"
1641
+ notes3="营业总收入=营业收入+非营业收入(投资收益、营业外收入等)"
1642
+
1525
1643
  notes=notes1+'\n'+notes2+'\n'+notes3
1526
- dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,notes,facecolor=facecolor)
1644
+ dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,notes, \
1645
+ facecolor=facecolor,font_size=font_size)
1527
1646
  #====================================================================
1528
1647
  title_txt=title_head+"营业成本占营业总成本比例情况"
1529
1648
  items4=["营业成本","营业总成本"]
1530
-
1649
+ """
1531
1650
  notes1="注1:营业成本是经营活动中发生的可归属于产品/劳务成本等的费用"
1532
1651
  notes2="注2:营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
1652
+ """
1653
+ notes1="注:\n营业成本是经营活动中发生的可归属于产品/劳务成本等的费用"
1654
+ notes2="营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
1655
+
1533
1656
  notes=notes1+'\n'+notes2
1534
- dfp4=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,notes,facecolor=facecolor)
1657
+ dfp4=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,notes, \
1658
+ facecolor=facecolor,font_size=font_size)
1535
1659
 
1536
1660
  title_txt=title_head+"营业成本占营业总收入比例情况"
1537
1661
  items5=["营业成本","营业总收入"]
1538
- dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt,facecolor=facecolor)
1662
+ dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt, \
1663
+ facecolor=facecolor,font_size=font_size)
1539
1664
 
1540
1665
  title_txt=title_head+"营业成本增幅分析"
1541
1666
  fsdates2=fsdates[:2]
1542
1667
  items12=['营业成本','营业总成本','营业总收入']
1543
- dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt,facecolor=facecolor)
1668
+ dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt, \
1669
+ facecolor=facecolor,font_size=font_size)
1544
1670
 
1545
1671
  #====================================================================
1546
1672
  title_txt=title_head+"销售费用占营业总收入比例情况"
1547
1673
  items6=["销售费用","营业总收入"]
1548
1674
 
1549
1675
  notes="注:销售费用是企业销售过程中发生的各种费用"
1550
- dfp6=fs_item_analysis_2(df,ticker,fsdates1,items6,title_txt,notes,facecolor=facecolor)
1676
+ dfp6=fs_item_analysis_2(df,ticker,fsdates1,items6,title_txt,notes, \
1677
+ facecolor=facecolor,font_size=font_size)
1551
1678
  #====================================================================
1552
1679
  title_txt=title_head+"管理费用占营业总收入比例情况"
1553
1680
  items7=["管理费用","营业总收入"]
1554
1681
 
1555
1682
  notes="注:管理费用是行政管理部门为组织生产/经营活动发生的各种费用"
1556
- dfp7=fs_item_analysis_2(df,ticker,fsdates1,items7,title_txt,notes,facecolor=facecolor)
1683
+ dfp7=fs_item_analysis_2(df,ticker,fsdates1,items7,title_txt,notes, \
1684
+ facecolor=facecolor,font_size=font_size)
1557
1685
 
1558
1686
  #title_txt=title_head+"三项费用率同行对比"
1559
1687
  title_txt="三项费用率同行对比:"+fsdate
1560
1688
  items14=['营业总收入','销售费用率%','管理费用率%','研发费用率%']
1561
-
1689
+ """
1562
1690
  notes1="注1:销售费用率 = 销售费用 / 营业总收入"
1563
1691
  notes2="注2:管理费用率 = 管理费用 / 营业总收入"
1564
1692
  notes3="注3:研发费用率 = 研发费用 / 营业总收入"
1693
+ """
1694
+ notes1="注:\n销售费用率 = 销售费用 / 营业总收入"
1695
+ notes2="管理费用率 = 管理费用 / 营业总收入"
1696
+ notes3="研发费用率 = 研发费用 / 营业总收入"
1697
+
1565
1698
  notes=notes1+'\n'+notes2+'\n'+notes3
1566
1699
 
1567
- dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes,facecolor=facecolor)
1700
+ dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes, \
1701
+ facecolor=facecolor,font_size=font_size)
1568
1702
  #====================================================================
1569
1703
  title_txt=title_head+"毛利润占营业总收入比例情况"
1570
1704
  items8=["毛利润","营业总收入"]
1571
- dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt,facecolor=facecolor)
1705
+ dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt, \
1706
+ facecolor=facecolor,font_size=font_size)
1572
1707
  #====================================================================
1573
1708
  title_txt=title_head+"营业利润占营业总收入比例情况"
1574
1709
  items9=["营业利润","营业总收入"]
1575
- dfp8=fs_item_analysis_2(df,ticker,fsdates1,items9,title_txt,facecolor=facecolor)
1710
+ dfp8=fs_item_analysis_2(df,ticker,fsdates1,items9,title_txt, \
1711
+ facecolor=facecolor,font_size=font_size)
1576
1712
  #====================================================================
1577
1713
  title_txt=title_head+"税前利润占营业总收入比例情况"
1578
1714
  items10=["税前利润","营业总收入"]
1579
- dfp9=fs_item_analysis_2(df,ticker,fsdates1,items10,title_txt,facecolor=facecolor)
1715
+ dfp9=fs_item_analysis_2(df,ticker,fsdates1,items10,title_txt, \
1716
+ facecolor=facecolor,font_size=font_size)
1580
1717
  #====================================================================
1581
1718
  title_txt=title_head+"净利润占营业总收入比例情况"
1582
1719
  items11=["净利润","营业总收入"]
1583
- dfp9=fs_item_analysis_2(df,ticker,fsdates1,items11,title_txt,facecolor=facecolor)
1720
+ dfp9=fs_item_analysis_2(df,ticker,fsdates1,items11,title_txt, \
1721
+ facecolor=facecolor,font_size=font_size)
1584
1722
 
1585
1723
  #增幅分析:近两年
1586
1724
  title_txt=title_head+"四种利润对比"
1587
1725
  items13=['毛利润','营业利润','税前利润','净利润']
1588
- dfp11=fs_item_analysis_6(df,ticker,fsdates2,items13,title_txt,facecolor=facecolor)
1726
+ dfp11=fs_item_analysis_6(df,ticker,fsdates2,items13,title_txt, \
1727
+ facecolor=facecolor,font_size=font_size)
1589
1728
 
1590
1729
  #同行比较
1591
1730
  #title_txt=title_head+"利润率同行对比"
@@ -1593,7 +1732,8 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
1593
1732
  #items15=['营业利润','营业利润率%','税前利润率%','实际所得税率%','净利润','净利润率%']
1594
1733
  #items15=['毛利润率%','营业利润率%','税前利润率%','净利润率%']
1595
1734
  items15=['净利润率%','税前利润率%','营业利润率%','毛利润率%']
1596
- dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,facecolor=facecolor)
1735
+ dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt, \
1736
+ facecolor=facecolor,font_size=font_size)
1597
1737
 
1598
1738
  return
1599
1739
 
@@ -1603,16 +1743,16 @@ if __name__=='__main__':
1603
1743
  fsdates=['2021-12-31','2020-12-31','2019-12-31','2018-12-31']
1604
1744
  cash_flow_structure_china(tickers,fsdates)
1605
1745
 
1606
- def cash_flow_china(tickers,fsdates,facecolor='papayawhip'):
1746
+ def cash_flow_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
1607
1747
  """
1608
1748
  套壳函数cash_flow_structure_china
1609
1749
  """
1610
- cash_flow_structure_china(tickers,fsdates,facecolor=facecolor)
1750
+ cash_flow_structure_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1611
1751
 
1612
1752
  return
1613
1753
 
1614
1754
 
1615
- def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
1755
+ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
1616
1756
  """
1617
1757
  功能:分析上市公司的现金流量基本结构,并与同业公司对比。
1618
1758
  注意1:分析近三期情况,fsdates要给出四个报表日期,以便获得期初数。
@@ -1653,8 +1793,8 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
1653
1793
  comparator=tickers[0]
1654
1794
  comparee=tickers[1:]
1655
1795
  print(" Conducting cash flow analysis ...")
1656
- print(" Comparator:",ticker_name(comparator,'stock'))
1657
- print(" Comparee :",end='')
1796
+ print(" Focus on:",ticker_name(comparator,'stock'))
1797
+ print(" Peers :",end='')
1658
1798
  if comparee != []:
1659
1799
  print_list(ticker_name(comparee,'stock'))
1660
1800
  else:
@@ -1681,59 +1821,86 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
1681
1821
  "投资活动现金流净额","投资活动现金流入","投资活动现金流出",
1682
1822
  "筹资活动现金流净额","筹资活动现金流入","筹资活动现金流出",
1683
1823
  "汇率对现金流的影响","现金流量净增加额"]
1684
- dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt,facecolor=facecolor)
1824
+ dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt, \
1825
+ facecolor=facecolor,font_size=font_size)
1685
1826
 
1686
1827
  #占比变动分析:近三年
1687
1828
  title_txt=title_head+"经营活动现金流入占比情况"
1688
1829
  fsdates1=fsdates[:3]
1689
1830
  items3=["经营活动现金流入","营业总收入"]
1690
- dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,facecolor=facecolor)
1831
+ dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt, \
1832
+ facecolor=facecolor,font_size=font_size)
1691
1833
 
1692
1834
  title_txt=title_head+"经营活动现金流净额占比情况"
1693
1835
  items4=["经营活动现金流净额","营业利润"]
1694
- dfp3=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,facecolor=facecolor)
1836
+ dfp3=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt, \
1837
+ facecolor=facecolor,font_size=font_size)
1695
1838
 
1696
1839
  #增幅分析:近两年
1697
1840
  title_txt=title_head+"经营活动现金流增幅情况"
1698
1841
  fsdates2=fsdates[:2]
1699
1842
  items12=['经营活动现金流入','经营活动现金流出','经营活动现金流净额']
1700
- dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt,facecolor=facecolor)
1843
+ dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt, \
1844
+ facecolor=facecolor,font_size=font_size)
1701
1845
 
1702
1846
  #同行比较
1703
1847
  title_txt=title_head+"现金收入能力同行比较,"+fsdate
1704
1848
  items16=['销售现金比率%','现金购销比率%','营业现金回笼率%']
1705
-
1849
+ """
1706
1850
  notes1="注1:销售现金比率 = 经营活动现金流入 / 营业总收入"
1707
1851
  notes2="注2:现金购销比率 = 经营活动现金流出 / 经营活动现金流入"
1708
1852
  notes3="注3:营业现金回笼率 = 经营活动现金流入 / 营业总收入"
1853
+ """
1854
+ notes1="注:\n销售现金比率 = 经营活动现金流入 / 营业总收入"
1855
+ notes2="现金购销比率 = 经营活动现金流出 / 经营活动现金流入"
1856
+ notes3="营业现金回笼率 = 经营活动现金流入 / 营业总收入"
1857
+
1709
1858
  notes=notes1+'\n'+notes2+'\n'+notes3
1710
- dfp12=fs_item_analysis_8(df,tickers,fsdate,items16,title_txt,notes,facecolor=facecolor)
1859
+ dfp12=fs_item_analysis_8(df,tickers,fsdate,items16,title_txt,notes, \
1860
+ facecolor=facecolor,font_size=font_size)
1711
1861
 
1712
1862
  title_txt=title_head+"现金偿债能力同行比较,"+fsdate
1713
1863
  items14=['短期现金偿债能力%','长期现金偿债能力%']
1714
-
1864
+ """
1715
1865
  notes1="注1:短期现金偿债能力 = 经营活动现金流净额 / 流动负债合计"
1716
1866
  notes2="注2:长期现金偿债能力 = 经营活动现金流净额 / 负债合计"
1867
+ """
1868
+ notes1="注:\n短期现金偿债能力 = 经营活动现金流净额 / 流动负债合计"
1869
+ notes2="长期现金偿债能力 = 经营活动现金流净额 / 负债合计"
1870
+
1717
1871
  notes=notes1+'\n'+notes2
1718
- dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes,facecolor=facecolor)
1872
+ dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes, \
1873
+ facecolor=facecolor,font_size=font_size)
1719
1874
 
1720
1875
  title_txt=title_head+"现金支付能力同行比较,"+fsdate
1721
1876
  items15=['现金支付股利能力(元)','现金综合支付能力%','支付给职工的现金比率%']
1722
-
1877
+ """
1723
1878
  notes1="注1:现金支付股利能力 = 经营活动现金流净额 / 流通股股数"
1724
1879
  notes2="注2:现金综合支付能力 = 经营活动现金流净额 / 所有者权益合计"
1725
1880
  notes3="注3:支付给职工的现金比率 = 支付给(为)职工支付的现金 / 经营活动现金流入"
1881
+ """
1882
+ notes1="注:\n现金支付股利能力 = 经营活动现金流净额 / 流通股股数"
1883
+ notes2="现金综合支付能力 = 经营活动现金流净额 / 所有者权益合计"
1884
+ notes3="支付给职工的现金比率 = 支付给(为)职工支付的现金 / 经营活动现金流入"
1885
+
1726
1886
  notes=notes1+'\n'+notes2+'\n'+notes3
1727
- dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,notes,facecolor=facecolor)
1887
+ dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,notes, \
1888
+ facecolor=facecolor,font_size=font_size)
1728
1889
 
1729
1890
  title_txt=title_head+"财务指标含金量同行比较,"+fsdate
1730
1891
  items17=['盈利现金比率%','现金流入流出比率%','资产现金回收率%']
1731
-
1892
+ """
1732
1893
  notes1="注1:盈利现金比率 = 经营活动现金流净额 / 净利润"
1733
1894
  notes2="注2:现金流入流出比率 = 经营活动现金流入 / 经营活动现金流出"
1734
1895
  notes3="注3:资产现金回收率 = 经营活动现金流净额 / 资产总计"
1896
+ """
1897
+ notes1="注:\n盈利现金比率 = 经营活动现金流净额 / 净利润"
1898
+ notes2="现金流入流出比率 = 经营活动现金流入 / 经营活动现金流出"
1899
+ notes3="资产现金回收率 = 经营活动现金流净额 / 资产总计"
1900
+
1735
1901
  notes=notes1+'\n'+notes2+'\n'+notes3
1736
- dfp12=fs_item_analysis_8(df,tickers,fsdate,items17,title_txt,notes,facecolor=facecolor)
1902
+ dfp12=fs_item_analysis_8(df,tickers,fsdate,items17,title_txt,notes, \
1903
+ facecolor=facecolor,font_size=font_size)
1737
1904
 
1738
1905
  return
1739
1906
 
@@ -1792,7 +1959,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1792
1959
  category='profile',business_period='recent', \
1793
1960
  printout=False,gview=False, \
1794
1961
  loc1='upper left',loc2='upper right', \
1795
- facecolor='papayawhip'):
1962
+ facecolor='papayawhip',font_size='16px'):
1796
1963
  """
1797
1964
  【功能】财务报表分析,仅适用于中国A股,注意不适用于港股和美股(含中概股)
1798
1965
 
@@ -1863,7 +2030,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1863
2030
  fsdates=gen_yoy_dates(fsdates,num=4)
1864
2031
 
1865
2032
  # 分析资产负债表
1866
- asset_liab_china(tickers,fsdates,facecolor=facecolor)
2033
+ asset_liab_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1867
2034
  return
1868
2035
 
1869
2036
  elif ('income' in analysis_type1) or ('cost' in analysis_type1) \
@@ -1876,7 +2043,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1876
2043
  fsdates=gen_yoy_dates(fsdates,num=4)
1877
2044
 
1878
2045
  # 分析利润表
1879
- income_cost_china(tickers,fsdates,facecolor=facecolor)
2046
+ income_cost_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1880
2047
  return
1881
2048
 
1882
2049
  elif ('cash' in analysis_type1) or ('flow' in analysis_type1):
@@ -1888,7 +2055,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1888
2055
  fsdates=gen_yoy_dates(fsdates,num=4)
1889
2056
 
1890
2057
  # 分析现金流量表
1891
- cash_flow_china(tickers,fsdates,facecolor=facecolor)
2058
+ cash_flow_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1892
2059
  return
1893
2060
 
1894
2061
  elif ('summary' in analysis_type1):
@@ -1913,7 +2080,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1913
2080
 
1914
2081
  # 分析财报摘要
1915
2082
  from siat.financials_china import compare_fin_summary_china
1916
- df_summary=compare_fin_summary_china(tickers,fsdates,facecolor=facecolor)
2083
+ df_summary=compare_fin_summary_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1917
2084
  return
1918
2085
 
1919
2086
  elif ('indicator' in analysis_type1):
@@ -1938,7 +2105,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1938
2105
 
1939
2106
  # 分析主要财务指标和比率
1940
2107
  from siat.financials_china import compare_fin_indicator_china
1941
- df_ind=compare_fin_indicator_china(tickers,fsdates,facecolor=facecolor)
2108
+ df_ind=compare_fin_indicator_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
1942
2109
  return
1943
2110
 
1944
2111
  elif ('profile' in analysis_type1):
@@ -1948,7 +2115,8 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1948
2115
  return
1949
2116
 
1950
2117
  # 分析单只股票的全方位概况
1951
- stock_profile_china(tickers,category,business_period,loc1=loc1,loc2=loc2,facecolor=facecolor)
2118
+ stock_profile_china(tickers,category,business_period,loc1=loc1,loc2=loc2, \
2119
+ facecolor=facecolor,font_size=font_size)
1952
2120
  return
1953
2121
 
1954
2122
  elif ('dupont' in analysis_type1) and (('identity' in analysis_type1) or ('analysis' in analysis_type1)):
@@ -1966,7 +2134,8 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1966
2134
 
1967
2135
  # 多只股票的杜邦分析对比
1968
2136
  from siat.financials_china import compare_dupont_china
1969
- df_db=compare_dupont_china(tickers,fsdate=fsdates,printout=printout,facecolor=facecolor)
2137
+ df_db=compare_dupont_china(tickers,fsdate=fsdates,printout=printout, \
2138
+ facecolor=facecolor,font_size=font_size)
1970
2139
  return
1971
2140
 
1972
2141
  elif ('dupont' in analysis_type1) and ('decompose' in analysis_type1):