siat 3.0.35__py3-none-any.whl → 3.0.40__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/common.py CHANGED
@@ -1594,7 +1594,8 @@ def print_progress_percent(current,total,steps=5,leading_blanks=2):
1594
1594
  pct=pct_list[pos]
1595
1595
 
1596
1596
  if pct=="100%":
1597
- print("100% completing")
1597
+ #print("100% completing")
1598
+ print("100%, wrapping up ...")
1598
1599
  else:
1599
1600
  print(pct,end=' ')
1600
1601
 
@@ -1704,7 +1705,7 @@ if __name__ == '__main__':
1704
1705
  '26', '27', '28']
1705
1706
  printInLine_md(aList,numberPerLine=8,colalign='center')
1706
1707
 
1707
- def printInLine_md(aList,numberPerLine=5,colalign='left'):
1708
+ def printInLine_md(aList,numberPerLine=5,colalign='left',font_size='16px'):
1708
1709
  """
1709
1710
  功能:将一个长列表等行分组打印,使用df.to_markdown方式打印,实现自动对齐
1710
1711
  aList:用于打印的数据列表
@@ -1739,11 +1740,16 @@ def printInLine_md(aList,numberPerLine=5,colalign='left'):
1739
1740
  alignlist=[colalign]*numberPerLine
1740
1741
  print(df.to_markdown(index=False,tablefmt='plain',colalign=alignlist))
1741
1742
  """
1743
+
1744
+ #确定表格字体大小
1745
+ titile_font_size=font_size
1746
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
1747
+
1742
1748
  df_display_CSS(df,titletxt='',footnote='',facecolor='papayawhip',decimals=2, \
1743
1749
  first_col_align='left',second_col_align='left', \
1744
1750
  last_col_align='left',other_col_align='left', \
1745
- titile_font_size='18px',heading_font_size='17px', \
1746
- data_font_size='17px')
1751
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
1752
+ data_font_size=data_font_size)
1747
1753
 
1748
1754
  return
1749
1755
 
@@ -1900,7 +1906,8 @@ if __name__=='__main__':
1900
1906
  footnote="This is the footnote"
1901
1907
 
1902
1908
  def descriptive_statistics(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
1903
- recommend_only=False,trailing=7,trend_threshhold=0.01):
1909
+ recommend_only=False,trailing=7,trend_threshhold=0.01, \
1910
+ facecolor='papayawhip',font_size='16px'):
1904
1911
  """
1905
1912
  功能:进行描述性统计,并打印结果
1906
1913
  df的要求:
@@ -2135,6 +2142,7 @@ def descriptive_statistics(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2135
2142
  dst6.reset_index(drop=True,inplace=True)
2136
2143
  dst6.index=dst6.index+1
2137
2144
 
2145
+ """
2138
2146
  print("\n"+titletxt+"\n")
2139
2147
  #alignlist=['right','left']+['center']*(len(list(dst4))-1)
2140
2148
  alignlist=['right','left']+['center']*(len(list(dst6))-3)+['center','left']
@@ -2145,8 +2153,16 @@ def descriptive_statistics(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2145
2153
  dst7=dst6.to_markdown(index=True,tablefmt='plain',colalign=alignlist)
2146
2154
  dst8=dst7.encode("utf-8",errors="strict")
2147
2155
  print(dst8)
2148
-
2149
2156
  print("\n"+footnote)
2157
+ """
2158
+
2159
+ #确定表格字体大小
2160
+ titile_font_size=font_size
2161
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
2162
+
2163
+ df_display_CSS(dst6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
2164
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
2165
+ data_font_size=data_font_size)
2150
2166
 
2151
2167
  return dst5
2152
2168
 
@@ -2170,8 +2186,8 @@ if __name__=='__main__':
2170
2186
 
2171
2187
  def descriptive_statistics2(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2172
2188
  recommend_only=False,trailing=7,trend_threshhold=0.01, \
2173
- printout=True,style_print=False, \
2174
- facecolor='whitesmoke',fontcolor='black'):
2189
+ printout=True,style_print=True, \
2190
+ facecolor='whitesmoke',font_size='16px'):
2175
2191
  """
2176
2192
  功能:进行描述性统计,并打印结果
2177
2193
  df的要求:
@@ -2381,7 +2397,7 @@ def descriptive_statistics2(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2381
2397
  pass
2382
2398
  #确保display显示时不再自动在数值尾部添加零至6位小数
2383
2399
  dst6[c]=dst6[c].apply(lambda x: str(x))
2384
-
2400
+ """
2385
2401
  if not style_print: #markdown打印
2386
2402
  print("\n"+titletxt+"\n")
2387
2403
  #如果index=True则显示index,这样alignlist的长度就需要dst6列数+1
@@ -2396,14 +2412,11 @@ def descriptive_statistics2(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2396
2412
  print("\n"+footnote)
2397
2413
 
2398
2414
  else: #style打印
2399
- """
2400
2415
  print("\n"+titletxt)
2401
2416
  dst6sd= dst6.style.set_properties(**{'text-align': 'center'})
2402
2417
  from IPython.display import display
2403
2418
  display(dst6sd)
2404
2419
  print(footnote+"\n")
2405
- """
2406
-
2407
2420
  disph=dst6.style.hide() #不显示索引列
2408
2421
  dispp=disph.format(precision=3) #设置带有小数点的列精度调整为小数点后3位
2409
2422
  #设置标题/列名
@@ -2417,15 +2430,22 @@ def descriptive_statistics2(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2417
2430
  dispf=dispt1.set_properties(**{'text-align':'center'})
2418
2431
  #设置前景背景颜色
2419
2432
  try:
2420
- dispf2=dispf.set_properties(**{'background-color':facecolor,'color':fontcolor})
2433
+ dispf2=dispf.set_properties(**{'background-color':facecolor,'color':'black'})
2421
2434
  except:
2422
2435
  print(" #Warning(descriptive_statistics2): color",facecolor,"is unsupported, changed to default setting")
2423
2436
  dispf2=dispf.set_properties(**{'background-color':'whitesmoke','color':'black'})
2424
2437
 
2425
2438
  from IPython.display import display
2426
2439
  display(dispf2)
2427
-
2428
2440
  print(footnote+"\n")
2441
+ """
2442
+ #确定表格字体大小
2443
+ titile_font_size=font_size
2444
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
2445
+
2446
+ df_display_CSS(dst6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
2447
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
2448
+ data_font_size=data_font_size)
2429
2449
 
2430
2450
  return dst5
2431
2451
 
@@ -3695,8 +3715,8 @@ if __name__=='__main__':
3695
3715
  def df_display_CSS(df,titletxt='',footnote='',facecolor='papayawhip',decimals=2, \
3696
3716
  first_col_align='left',second_col_align='right', \
3697
3717
  last_col_align='right',other_col_align='right', \
3698
- titile_font_size='18px',heading_font_size='17px', \
3699
- data_font_size='17px'):
3718
+ titile_font_size='16px',heading_font_size='15px', \
3719
+ data_font_size='15px'):
3700
3720
  """
3701
3721
  功能:采样CSS式样显示df,适用于Jupyter环境,整齐紧凑,不挑浏览器
3702
3722
  注意:若facecolor不被支持,则自动改为papayawhip
siat/financials2.py CHANGED
@@ -93,7 +93,7 @@ if __name__=='__main__':
93
93
  def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
94
94
  category='profile',business_period='annual', \
95
95
  scale1=10,scale2=10,sort='PM',
96
- printout=True,
96
+ printout=True,facecolor='papayawhip',font_size='16px'
97
97
  ):
98
98
  """
99
99
  功能:tickers为股票列表,fsdates为财报日期,可为单个日期或日期列表
@@ -128,6 +128,10 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
128
128
  million=1000000
129
129
  billion=million * 1000
130
130
 
131
+ #确定表格字体大小
132
+ titile_font_size=font_size
133
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
134
+
131
135
  # 基于analysis_type1的类型分别处理
132
136
  if ('profile' in analysis_type1):
133
137
  # 股票需为单只股票,若为列表则仅取第一个
@@ -249,8 +253,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
249
253
  footnote2="Data source: Yahoo Finance, "+str(todaydt)
250
254
  footnote='Note:\n'+footnote1+'\n'+footnote2
251
255
  #print('\n',footnote1,'\n',footnote2)
252
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
253
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
256
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
257
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
258
+ data_font_size=data_font_size)
254
259
 
255
260
  return fsdf6
256
261
 
@@ -330,8 +335,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
330
335
  footnote2="Data source: Yahoo Finance, "+str(todaydt)
331
336
  footnote='Note:\n'+footnote1+'\n'+footnote2
332
337
  #print('\n',footnote1,'\n',footnote2)
333
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
334
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
338
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
339
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
340
+ data_font_size=data_font_size)
335
341
 
336
342
  return fsdf6
337
343
 
@@ -409,8 +415,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
409
415
  footnote2="Data source: Yahoo Finance, "+str(todaydt)
410
416
  footnote='Note:\n'+footnote1+'\n'+footnote2
411
417
  #print('\n',footnote1,'\n',footnote2)
412
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
413
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
418
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
419
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
420
+ data_font_size=data_font_size)
414
421
  return fsdf6
415
422
 
416
423
  return fsdf2
@@ -519,8 +526,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
519
526
  footnote3="Data source: Yahoo Finance, "+todaydt
520
527
  footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
521
528
  #print('\n',footnote1,'\n',footnote2,'\n',footnote3)
522
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
523
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
529
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
530
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
531
+ data_font_size=data_font_size)
524
532
  return fsdf6
525
533
 
526
534
  return fsdf2
@@ -620,8 +628,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
620
628
  footnote3="Data source: Yahoo Finance, "+str(todaydt)
621
629
  footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
622
630
  #print('\n',footnote1,'\n',footnote2,'\n',footnote3)
623
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
624
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
631
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
632
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
633
+ data_font_size=data_font_size)
625
634
  return fsdf6
626
635
 
627
636
  return fsdf2
@@ -728,8 +737,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
728
737
  footnote3="Data source: Yahoo Finance, "+str(todaydt)
729
738
  footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
730
739
  #print('\n',footnote1,'\n',footnote2,'\n',footnote3)
731
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
732
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
740
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
741
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
742
+ data_font_size=data_font_size)
733
743
  return fsdf6
734
744
 
735
745
  return fsdf2
@@ -830,8 +840,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
830
840
  footnote3="Data source: Yahoo Finance, "+str(todaydt)
831
841
  footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
832
842
  #print('\n',footnote1,'\n',footnote2,'\n',footnote3)
833
- df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
834
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
843
+ df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
844
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
845
+ data_font_size=data_font_size)
835
846
  return fsdf6
836
847
 
837
848
  return fsdf2
@@ -960,8 +971,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
960
971
  footnote2="Data source: Yahoo Finance, "+str(todaydt)
961
972
  footnote='Note:\n'+footnote1+'\n'+footnote2
962
973
  #print('\n',footnote1,'\b.',footnote2)
963
- df_display_CSS(df,titletxt=titletxt,footnote=footnote, \
964
- titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
974
+ df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
975
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
976
+ data_font_size=data_font_size)
965
977
  return df2
966
978
 
967
979
  else: # analysis_type1
siat/financials_china.py CHANGED
@@ -655,7 +655,7 @@ if __name__=='__main__':
655
655
 
656
656
  def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
657
657
  hatchlist=['.', 'o', '\\'],printout=True,sort='PM', \
658
- facecolor='papayawhip'):
658
+ facecolor='papayawhip',font_size='16px'):
659
659
  """
660
660
  功能:获得tickerlist中每只股票的杜邦分析项目,绘制柱状叠加比较图
661
661
  tickerlist:股票代码列表,建议在10只以内
@@ -799,11 +799,17 @@ def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
799
799
  footnote1="2、表中数值基于期末数字直接计算,而非期初期末均值,可能与公告数字存在差异。"
800
800
  footnote2="*** 数据来源:sina/EM,"+str(today)
801
801
  footnote=footnote0+'\n'+footnote1+'\n'+footnote2
802
-
802
+
803
+ #确定表格字体大小
804
+ titile_font_size=font_size
805
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
806
+
803
807
  #print(df.to_string(index=False))
804
808
  #df_directprint(df,title_txt,footnote)
805
809
  df_display_CSS(df=df,titletxt=title_txt,footnote=footnote, \
806
- facecolor=facecolor,decimals=4)
810
+ facecolor=facecolor,decimals=4, \
811
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
812
+ data_font_size=data_font_size)
807
813
 
808
814
 
809
815
  #合并所有历史记录
@@ -3539,7 +3545,7 @@ if __name__=='__main__':
3539
3545
  tickers=['000002.SZ','600048.SS','001979.SZ','600325.SS','000069.SZ','600383.SS','600895.SS','601155.SS']
3540
3546
  fsdates='2022-12-31'
3541
3547
 
3542
- def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke'):
3548
+ def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke',font_size='16px'):
3543
3549
  """
3544
3550
  功能:分类别显示财报摘要中的指标
3545
3551
  """
@@ -3697,6 +3703,10 @@ def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke'):
3697
3703
  '说明:本表指标主要针对非金融普通企业,部分指标不完全适用于金融行业。 \n\n'+ \
3698
3704
  '注意:财报比率统计口径可能存在差异(例如采用期末/期初期末均值/期间加权等),但不影响同一指标的可比性。',
3699
3705
  }
3706
+
3707
+ #确定表格字体大小
3708
+ titile_font_size=font_size
3709
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
3700
3710
 
3701
3711
  # 一只股票情形:多日期
3702
3712
  if len(tickers_found) == 1:
@@ -3727,8 +3737,11 @@ def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke'):
3727
3737
  print(notesdict[ty])
3728
3738
  """
3729
3739
  titletxt1=titletxt+','+ty
3740
+
3730
3741
  df_display_CSS(df=dft2,titletxt=titletxt1,footnote=notesdict[ty], \
3731
- facecolor=facecolor,decimals=2)
3742
+ facecolor=facecolor,decimals=2, \
3743
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
3744
+ data_font_size=data_font_size)
3732
3745
 
3733
3746
  # 多只股票情形:单日期
3734
3747
  import pandas as pd
@@ -3780,8 +3793,11 @@ def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke'):
3780
3793
  print(notesdict[ty])
3781
3794
  """
3782
3795
  titletxt1=titletxt+','+ty
3796
+
3783
3797
  df_display_CSS(df=dft2,titletxt=titletxt1,footnote=notesdict[ty], \
3784
- facecolor=facecolor,decimals=2)
3798
+ facecolor=facecolor,decimals=2, \
3799
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
3800
+ data_font_size=data_font_size)
3785
3801
 
3786
3802
  return dft2
3787
3803
 
@@ -3977,7 +3993,7 @@ if __name__=='__main__':
3977
3993
  '2018-12-31',
3978
3994
  ]
3979
3995
 
3980
- def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip'):
3996
+ def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
3981
3997
  """
3982
3998
  功能:分类别显示财报摘要中的指标
3983
3999
  """
@@ -4187,6 +4203,10 @@ def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip'):
4187
4203
  '固定资产净值率=(固定资产原值-累计折旧)/固定资产原值*100%,反映企业全部固定资产平均新旧程度 \n'+ \
4188
4204
  '资本固定化比率=非流动资产/净资产*100%,若超过100%说明固定资产资金投入超过自身能力,易造成财务状况恶化。\n',
4189
4205
  }
4206
+
4207
+ #确定表格字体大小
4208
+ titile_font_size=font_size
4209
+ heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
4190
4210
 
4191
4211
  # 标记选项类型
4192
4212
  typedict_keys=list(typedict.keys())
@@ -4239,7 +4259,9 @@ def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip'):
4239
4259
  """
4240
4260
  titletxt1=titletxt+','+ty
4241
4261
  df_display_CSS(df=dft3,titletxt=titletxt1,footnote=notesdict[ty], \
4242
- facecolor=facecolor,decimals=2)
4262
+ facecolor=facecolor,decimals=2, \
4263
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
4264
+ data_font_size=data_font_size)
4243
4265
 
4244
4266
  return dft3
4245
4267
 
@@ -4298,7 +4320,9 @@ def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip'):
4298
4320
  """
4299
4321
  titletxt1=titletxt+','+ty
4300
4322
  df_display_CSS(df=dft3,titletxt=titletxt1,footnote=notesdict[ty], \
4301
- facecolor=facecolor,decimals=2)
4323
+ facecolor=facecolor,decimals=2, \
4324
+ titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
4325
+ data_font_size=data_font_size)
4302
4326
 
4303
4327
  return dft3
4304
4328