def Draw(self, collectionName): self.dfW['_id'] = self.dfW.index util.SaveMongoDB_DF(self.dfW, 'stock_result', collectionName) self.dfW['profit'].fillna(method='ffill', inplace=True) self.dfW['total'].fillna(method='ffill', inplace=True) self.dfW[['total', 'capital', ]].plot() plt.show()
def Run(codes): out = [] for one in codes: try: baseCounter = 0 hitCounter = 0 firstQuarter = None lastQuarter = None baseCounter2010 = 0 hitCounter2010 = 0 firstQuarter2010 = None lastQuarter2010 = None df = util.LoadData('stock', 'yjbg2-' + one['_id'], condition={}, sort=[('_id', 1)]) for quarter, row in df.iterrows(): id = datetime.strptime(quarter, '%Y-%m-%d') value = util.String2Number(row['sjltz']) if not np.isnan(value): if firstQuarter is None: firstQuarter = id lastQuarter = id baseCounter += 1 if id.year >= 2010: if firstQuarter2010 is None: firstQuarter2010 = id lastQuarter2010 = id baseCounter2010 += 1 if value < -10: hitCounter += 1 if id.year >= 2010: hitCounter2010 += 1 percent = 0 percent2010 = 0 if baseCounter > 0: percent = hitCounter / baseCounter if baseCounter2010 > 0: percent2010 = hitCounter2010 / baseCounter2010 out.append({ '_id': one['_id'], 'begin': firstQuarter, 'end': lastQuarter, 'base': baseCounter, 'hit': hitCounter, 'percent': percent, 'begin2010': firstQuarter2010, 'end2010': lastQuarter2010, 'base2010': baseCounter2010, 'hit2010': hitCounter2010, 'percent2010': percent2010 }) except Exception as e: util.PrintException(e) dfOut = pd.DataFrame(out) util.SaveMongoDB_DF(dfOut, 'stock_statistics2', 'dangerousQuarterRatio')
def Run(codes): #计算全财报的,计算2010年作为开始年份的 for one in codes: try: out = [] # out2010 = [] beforeSJLTZ = 0 beforeContinuityTrend = 0 # beforeSJLTZ2010 = 0 beforeContinuityTrend2010 = 0 df = util.LoadData('stock', 'yjbg-' + one, condition={}, sort=[('_id', 1)]) for quarter, row in df.iterrows(): id = datetime.strptime(quarter, '%Y-%m-%d') value = util.String2Number(row['sjltz']) if not np.isnan(value): nowTrend = None #这个条件不过分,一个公司即使业务完全停止增长,考虑到通胀也该在数值上是增长的 if value < 0: nowTrend = -1 # nowTrend2010 = -1 elif value - beforeSJLTZ < 0: nowTrend = -0.5 # nowTrend2010 = -0.5 else: nowTrend = 1 # nowTrend2010 = 1 beforeSJLTZ = value nowContinuityTrend = beforeContinuityTrend + nowTrend beforeContinuityTrend = nowContinuityTrend out.append({ '_id': id, 'nowPMT': nowTrend, 'continuityPMT': nowContinuityTrend }) if id.year >= 2010: nowContinuityTrend2010 = beforeContinuityTrend2010 + nowTrend beforeContinuityTrend2010 = nowContinuityTrend2010 out[-1].update({ 'continuityPMTFrom2010': nowContinuityTrend2010 }) dfOut = pd.DataFrame(out) util.SaveMongoDB_DF(dfOut, 'stock_statistics', one) except Exception as e: print(e)