[关闭]
@Channelchan 2018-02-27T11:11:22.000000Z 字数 4691 阅读 21947

JAQS数据的类

写类的顺序
1. 初始化与参数设置
2. self传递
3. 方法汇总在类里
4. 写执行类里方法的方法

  1. from jaqs.data.dataapi import DataApi
  2. from jaqs.data import DataView
  3. from _datetime import datetime
  4. from datetime import timedelta
  5. import pandas as pd
  6. import numpy as np
  7. import alphalens as al
  8. import warnings
  9. warnings.filterwarnings("ignore")
  10. class get_group():
  11. def __init__(self, index, start, end):
  12. self.api = DataApi(addr='tcp://data.tushare.org:8910')
  13. self.api.login("13662241013",
  14. "eyJhbGciOiJIUzI1NiJ9.eyJjcmVhdGVfdGltZSI6IjE1MTc2NDQzMzg5MTIiLCJpc3MiOiJhdXRoMCIsImlkIjoiMTM2NjIyNDEwMTMifQ.sVIzI5VLqq8fbZCW6yZZW0ClaCkcZpFqpiK944AHEow"
  15. )
  16. self.index = index
  17. self.start = start
  18. self.end = end
  19. self.classify = None
  20. def get_classify(self):
  21. df_index, msg_index = self.api.query(
  22. view="lb.indexCons",
  23. fields="",
  24. filter="index_code={}&start_date={}&end_date={}".format(self.index, self.start, self.end),
  25. data_format='pandas')
  26. df_classify, msg_classfy = self.api.query(
  27. view="lb.secIndustry",
  28. fields="",
  29. filter="industry_src=SW&symbol=%s" % ",".join(df_index.symbol),
  30. data_format='pandas')
  31. columns = ["in_date", "industry1_code", "out_date", "symbol"]
  32. classify = df_classify[columns]
  33. classify_dict = {'480000': 'Bank', '430000': 'Real_Estate', '460000': 'Leisure_Service',
  34. '640000': 'Mechanical_Equipment', '240000': 'Nonferrous_Metals',
  35. '510000': 'Synthesis', '410000': 'Public_Utility', '450000': 'Commercial_Trade',
  36. '730000': 'Communication', '330000': 'Household_Appliances', '720000': 'Media',
  37. '630000': 'Electrical_Equipment', '270000': 'Electronic_Engineering',
  38. '490000': 'Non_Bank_Finance', '370000': 'Medical_Biology', '710000': 'Computer',
  39. '280000': 'Car', '340000': 'Food_Beverage', '220000': 'Chemical_Engineering',
  40. '210000': 'Digging', '230000': 'Steel', '650000': 'Military',
  41. '110000': 'Agriculture_Fishing', '420000': 'Transportation',
  42. '620000': 'Architectural_Ornament', '350000': 'Textile_Garment',
  43. '610000': 'Building_Materials', '360000': 'Light_Manufacturing'}
  44. classify.industry1_code = classify.industry1_code.replace(classify_dict)
  45. self.classify = classify
  46. return classify
  47. def get_datetime(self):
  48. trade_date, msg_date = self.api.query(
  49. view="jz.secTradeCal",
  50. fields="trade_date,istradeday",
  51. filter="start_date={}&end_date={}".format(self.start, self.end),
  52. data_format='pandas')
  53. trade_date = trade_date["trade_date"][trade_date.istradeday == "T"]
  54. date_index = pd.Index(map(lambda x: datetime.strptime(str(x),"%Y%m%d") , trade_date))
  55. return date_index
  56. def convert(self, time):
  57. return datetime.strptime(time, "%Y%m%d")
  58. def classify_df(self, classify, index_date):
  59. try:
  60. out_date = self.convert(classify.out_date)
  61. except:
  62. idx = index_date
  63. else:
  64. idx = index_date[index_date<out_date]
  65. finally:
  66. return classify.symbol, pd.Series(classify.industry1_code, idx)
  67. def process_group(self):
  68. self.get_classify()
  69. date_index = self.get_datetime()
  70. group_name = pd.DataFrame(dict(self.classify_df(row, date_index) for name, row in self.classify.iterrows()))
  71. group_name.columns.name="symbol"
  72. group_name.index.name="trade_date"
  73. group = group_name.rename_axis(lambda s: s.year*10000+s.month*100+s.day)
  74. return group
  1. group = get_group('000001.SH', 20170101, 20171229).process_group()
  1. print(group.tail(5))
symbol     600000.SH       600004.SH 600005.SH 600006.SH    600007.SH  \
trade_date                                                              
20171225        Bank  Transportation     Steel       Car  Real_Estate   
20171226        Bank  Transportation     Steel       Car  Real_Estate   
20171227        Bank  Transportation     Steel       Car  Real_Estate   
20171228        Bank  Transportation     Steel       Car  Real_Estate   
20171229        Bank  Transportation     Steel       Car  Real_Estate   

symbol           600008.SH       600009.SH 600010.SH       600011.SH  \
trade_date                                                             
20171225    Public_Utility  Transportation     Steel  Public_Utility   
20171226    Public_Utility  Transportation     Steel  Public_Utility   
20171227    Public_Utility  Transportation     Steel  Public_Utility   
20171228    Public_Utility  Transportation     Steel  Public_Utility   
20171229    Public_Utility  Transportation     Steel  Public_Utility   

symbol           600012.SH    ...           603987.SH             603988.SH  \
trade_date                    ...                                             
20171225    Transportation    ...     Medical_Biology  Electrical_Equipment   
20171226    Transportation    ...     Medical_Biology  Electrical_Equipment   
20171227    Transportation    ...     Medical_Biology  Electrical_Equipment   
20171228    Transportation    ...     Medical_Biology  Electrical_Equipment   
20171229    Transportation    ...     Medical_Biology  Electrical_Equipment   

symbol                   603989.SH 603990.SH             603991.SH  \
trade_date                                                           
20171225    Electronic_Engineering  Computer  Chemical_Engineering   
20171226    Electronic_Engineering  Computer  Chemical_Engineering   
20171227    Electronic_Engineering  Computer  Chemical_Engineering   
20171228    Electronic_Engineering  Computer  Chemical_Engineering   
20171229    Electronic_Engineering  Computer  Chemical_Engineering   

symbol              603993.SH             603996.SH 603997.SH  \
trade_date                                                      
20171225    Nonferrous_Metals  Household_Appliances       Car   
20171226    Nonferrous_Metals  Household_Appliances       Car   
20171227    Nonferrous_Metals  Household_Appliances       Car   
20171228    Nonferrous_Metals  Household_Appliances       Car   
20171229    Nonferrous_Metals  Household_Appliances       Car   

symbol            603998.SH 603999.SH  
trade_date                             
20171225    Medical_Biology     Media  
20171226    Medical_Biology     Media  
20171227    Medical_Biology     Media  
20171228    Medical_Biology     Media  
20171229    Medical_Biology     Media  

[5 rows x 1386 columns]
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注