Ejemplo n.º 1
0
    def __init__(self, anzahl, ligaebene, liganame):
        self.anzahl = anzahl
        self.ligaeben = ligaebene
        self.Ligaa = []
        self.Liganame = liganame
        self.Spielplan = []
        spieltag_nr = 1

        # aus data zu Objekten
        for i in range(0, sheet.nrows, 8):
            spieler = []
            if liganame == data[i][0]:
                for j in range(0, 8, 1):
                    Array = [
                        data[i + j][3], data[i + j][4], data[i + j][5],
                        data[i + j][6], 0, 0, 0
                    ]
                    for k in range(8, sheet.ncols, 1):
                        Array.append(data[i + j][k])
                    spieler.append(Array)
                team_a = Verein(data[i][1], data[i][2], spieler, 0, 0, 0, 0, 0,
                                0)
                self.Ligaa.append(team_a)
        spielplan = self.spielplanGenerator(anzahl)

        self.menu(spielplan, spieltag_nr)
        # self.alterung()

        # aus Objekten zu Excel
        try:
            wb = xw.Book("Input.xlsx")
            sht = xw.sheets("Tabelle1")
            print("Moment,speichern.....")
            for i in range(0, len(self.Ligaa) * 8, 8):
                sht.range((i + 1, 1)).value = self.Liganame
                sht.range((i + 1, 2)).value = self.Ligaa[int(i / 8)].Name
                for j in range(0, 8, 1):
                    sht.range((i + j + 1,
                               4)).value = self.Ligaa[int(i / 8)].Spieler[j]
            wb.save()  # speichern, da sonst Änderungen nicht geladen werden
            wb.close()
        except:
            print("Bitte Input-Datei schließen, und mit 0 bestätigen")
            eing = input()
            wb = xw.Book("Input.xlsx")
            sht = xw.sheets("Tabelle1")
            print("Moment,speichern.....")
            for i in range(0, len(self.Ligaa) * 8, 8):
                sht.range((i + 1, 1)).value = self.Liganame
                sht.range((i + 1, 2)).value = self.Ligaa[int(i / 8)].Name
                for j in range(0, 8, 1):
                    sht.range((i + j + 1,
                               4)).value = self.Ligaa[int(i / 8)].Spieler[j]
            wb.save()  # speichern, da sonst Änderungen nicht geladen werden
            wb.close()
Ejemplo n.º 2
0
    def __init__(self, team_a, team_b, zeile, SpieltagNr):
        self.TeamA = team_a
        self.TeamB = team_b
        self.zeile = zeile
        self.SpieltagNr = SpieltagNr
        self.ergeb = [[(0) for c in range(0, 16)] for r in range(0, 7)]

        print(team_a.Name + " - " + team_b.Name)

        # 2 zufälige Spieler nicht da
        # team_a
        ersatz: List[Any] = []
        rd = random.randrange(0, 8)
        ersatz.append(team_a.Spieler[rd])
        team_a.Spieler.pop(rd)
        rd = random.randrange(0, 7)
        ersatz.append(team_a.Spieler[rd])
        team_a.Spieler.pop(rd)
        # team_b
        ersatz2 = []
        rd = random.randrange(0, 8)
        ersatz2.append(team_b.Spieler[rd])
        team_b.Spieler.pop(rd)
        rd = random.randrange(0, 7)
        ersatz2.append(team_b.Spieler[rd])
        team_b.Spieler.pop(rd)

        for j in range(0, 6, 1):
            # Namen und Alter eintragen
            self.ergeb[j][0] = "(" + str(int(
                team_a.Spieler[j][2])) + ")" + str(team_a.Spieler[j][0])
            self.ergeb[j][15] = "(" + str(int(
                team_b.Spieler[j][2])) + ")" + str(team_b.Spieler[j][0])
            # Tagesform, beeinflusst Gesamtergebnis Spieler
            hrand_a = np.random.normal(1000, 30, 1)
            grand_a = np.random.normal(1000, 30, 1)
            for i in range(1, 5, 1):
                hrand = np.random.normal(1000, 70, 1)
                self.ergeb[j][i] = int(team_a.Spieler[j][1] *
                                       (hrand_a / 1000) * (hrand / 1000) / 4)
                # Ergebnis Spieler
                self.ergeb[j][5] += self.ergeb[j][i]

                grand = np.random.normal(1000, 70, 1)
                self.ergeb[j][i +
                              10] = int(team_b.Spieler[j][1] *
                                        (grand_a / 1000) * (grand / 1000) / 4)
                # Ergebnis Spieler
                self.ergeb[j][10] += self.ergeb[j][i + 10]
                # SP Spieler
                if self.ergeb[j][i + 10] > self.ergeb[j][i]:
                    self.ergeb[j][9] += 1
                elif self.ergeb[j][i + 10] == self.ergeb[j][i]:
                    self.ergeb[j][9] += 0.5
                # MP Spieler
                if self.ergeb[j][9] > 2:
                    self.ergeb[j][8] = 1
                elif self.ergeb[j][9] == 2:
                    if self.ergeb[j][10] > self.ergeb[j][5]:
                        self.ergeb[j][8] = 1
                    elif self.ergeb[j][10] == self.ergeb[j][5]:
                        self.ergeb[j][8] = 0.5

            # für statistikTeam, Anzahl Spiele und Gesamtholz hochzählen, Schnitt berechnen
            team_a.Spieler[j][4] += self.ergeb[j][5]
            team_a.Spieler[j][5] += 1
            team_a.Spieler[j][6] = team_a.Spieler[j][4] / team_a.Spieler[j][5]
            team_a.Spieler[j].append(self.ergeb[j][5])
            team_b.Spieler[j][4] += self.ergeb[j][10]
            team_b.Spieler[j][5] += 1
            team_b.Spieler[j][6] = team_b.Spieler[j][4] / team_b.Spieler[j][5]
            team_b.Spieler[j].append(self.ergeb[j][10])

            # Punkte Heim
            # SP Spieler
            self.ergeb[j][6] = 4 - self.ergeb[j][9]
            # MP Spieler
            self.ergeb[j][7] = 1 - self.ergeb[j][8]
            # Gesamtholz Mannschaft
            self.ergeb[6][5] += self.ergeb[j][5]
            self.ergeb[6][10] += self.ergeb[j][10]
            # MP Gesamt
            self.ergeb[6][7] += self.ergeb[j][7]
            self.ergeb[6][8] += self.ergeb[j][8]
            # SP Gesa,t
            self.ergeb[6][6] += self.ergeb[j][6]
            self.ergeb[6][9] += self.ergeb[j][9]
        # MP für Gesamtholz
        if self.ergeb[6][5] > self.ergeb[6][10]:
            self.ergeb[6][7] += 2
        elif self.ergeb[6][5] == self.ergeb[6][10]:
            self.ergeb[6][7] += 1
            self.ergeb[6][8] += 1
        else:
            self.ergeb[6][8] += 2

        # Excel-Export

        try:
            sht = xw.sheets(str(SpieltagNr))
            # TODO macht Programm langsam
            for i in range(0, len(self.ergeb)):
                for j in range(0, len(self.ergeb[i])):
                    sht.range((i + 1 + zeile, j + 1)).value = self.ergeb[i][j]
        except:
            print("Bitte Input-Datei schließen!")

        # Tabellenpunkte
        if self.ergeb[6][7] > self.ergeb[6][8]:
            team_a.sieg(self.ergeb[6][7], self.ergeb[6][6], self.ergeb[6][5])
            team_b.niederlage(self.ergeb[6][8], self.ergeb[6][9],
                              self.ergeb[6][10])
        elif self.ergeb[6][7] == self.ergeb[6][8]:
            team_a.unentschieden(self.ergeb[6][7], self.ergeb[6][6],
                                 self.ergeb[6][5])
            team_b.unentschieden(self.ergeb[6][8], self.ergeb[6][9],
                                 self.ergeb[6][10])
        else:
            team_b.sieg(self.ergeb[6][8], self.ergeb[6][9], self.ergeb[6][10])
            team_a.niederlage(self.ergeb[6][7], self.ergeb[6][6],
                              self.ergeb[6][5])

        # nicht bereite Spieler wieder anhängen
        team_a.Spieler.append(ersatz[0])
        team_a.Spieler.append(ersatz[1])
        team_b.Spieler.append(ersatz2[0])
        team_b.Spieler.append(ersatz2[1])
Ejemplo n.º 3
0
def main():
    xw.sheets('data').activate()
    xw.Range('A1', index=False).value = df
    xw.sheets('grouped_data').activate()
    xw.Range('A1', index=False).value = groupedData
Ejemplo n.º 4
0
def main():
    xw.sheets('Hoja1').activate()
    xw.Range('A1').value = u'Hola! Ya estás usando Python!'
    xw.Range('A2').value = u'El directorio de trabajo actual es:'
    xw.Range('A3').value = os.getcwd()
Ejemplo n.º 5
0
def process():
    #%%
    import numpy as np
    import pandas as pd
    import os
    import xlwings as xw
    #    wb=xw.Book.caller()
    sh_mapping = xw.sheets('mapping')
    sh_db = xw.sheets('Dashboard')
    driver_source = sh_db.range('driver_source').value

    t = read_as_plain_table(driver_source + '.mat')
    t['value'] = np.real(t['value'])
    l = t.loc[:, ['DriverID']].drop_duplicates().set_index(['DriverID'])
    r = t.pivot(index='DriverID', columns='parameter', values='value')
    t = l.merge(r, left_index=True, right_index=True)
    tdriver = t.copy()

    # series of checks
    #    all(tmapping['DriverID'].isin(tdriver['DriverID']))

    t = sh_mapping.range('a1').options(pd.DataFrame, expand='table').value
    t = t.merge(tdriver, how='left', right_index=True, left_on='DriverID')
    t = t.reset_index()

    def get_curve_type(rf):
        if rf in ('FinAA', 'GovBBB', 'IndBBB'):
            return 'CS'
        elif rf in ('GlobalEquityFactor'):
            return 'EQ'
        else:
            second = rf.split('.')[1]
            third = rf.split('.')[2]

            if second == 'Yield':
                return 'IR'
            elif second == 'Exchange':
                return 'FX'
            elif second in ['EquityIndex', 'Equity']:
                return 'EQ'
            elif second == 'ParCreditSpread':
                return 'CS'
            elif second == 'Commodity' or third == 'Com':
                return 'Com'

    t['CurveType'] = t['RiskFactorID'].apply(lambda x: get_curve_type(x))

    t['g1Ord1'] = 0
    t['g1Ord2'] = 0
    t['g1Transform'] = t['model_id'].apply(
        lambda x: 'LogNormShift' if x == 'EV-MR' else 'LogNorm' if x == 'GBM'
        else 'Norm' if x == 'CS1' else 'LogNorm' if x == 'CS2' else 'ERROR')
    t['g1MeanFunc'] = t['model_id'].apply(
        lambda x: 'StandardLogNormMR' if x == 'EV-MR' else 'LogNormDrift'
        if x == 'GBM' else 'NormMR' if x == 'CS1' else 'LogNormMR'
        if x == 'CS2' else 'ERROR')

    def calculate_m(model, a, b):
        if model == 'EV-MR':
            return np.exp(-b / a)
        elif model == 'CS1':
            return 9999
        else:
            return 0

    t['g1Param_m'] = t.apply(
        lambda x: calculate_m(x['model_id'], x['a'], x['b']), axis=1)

    t['g1Param_m'] = t.apply(
        lambda x: calculate_m(x['model_id'], x['a'], x['b']), axis=1)

    def calculate_d(model, a):
        if model == 'EV-MR':
            return -a
        elif model == 'CS1':
            return 9999
        else:
            return 0

    t['g1Param_d'] = t.apply(
        lambda x: calculate_m(x['model_id'], x['a'], x['b']), axis=1)

    t['g1PerAnnumRF'] = 365

    t['g1Param_s2'] = 0
    t['g1Param_s3'] = 0
    t['g1Floor'] = '-infinity'
    t['g1IdxRFs'] = np.cumsum(np.ones_like(t.index))

    def calculate_beta(CurveType, beta):
        if CurveType in ['CS', 'EQ']:
            return beta
        elif CurveType in ['IR', 'FX', 'Com']:
            return 1

    t['g1Betas'] = t.apply(lambda x: calculate_beta(x['CurveType'], x['beta']),
                           axis=1)

    qm_rf = t.copy()

    #    xw.view(tdriver,xw.sheets('data'))
    xw.view(qm_rf, xw.sheets('Qm_risk_factor'))
Ejemplo n.º 6
0
    cells_text.append([s.api.text for s in row])

# df生成
df = pd.DataFrame(cells_text[1:],
                  dtype=object,
                  columns=cells_text[0],
                  index=None)

# 余計なカラム行を削除
print('Remove unnecessary columns.')
df = df[df[start_work_time_column_name] != start_work_time_column_name]

# 残業時間列を生成
print('Create overtime data.')
join_ex = lambda x: ':'.join(x[0]) if len(x) != 0 else ""
df_zangyo = df[over_work_time_column_name].str.findall(
    '(\d{1,2})h(\d{1,2})m').apply(join_ex)
df[over_work_time_column_name] = df_zangyo

# 出力
print('Output to daily report sheet.')
input_sheet = xw.sheets(input_sheet_name)
input_sheet.range(start_work_time_range).options(
    index=False, header=False).value = df[start_work_time_column_name]
input_sheet.range(end_work_time_range).options(
    index=False, header=False).value = df[end_work_time_column_name]
input_sheet.range(over_work_time_range).options(
    index=False, header=False).value = df[over_work_time_column_name]

print('--- End.')
Ejemplo n.º 7
0
def ExcelReadtoList(workbook_path='',
                    row_size=2000,
                    col_size=150,
                    sheet=1,
                    visible=True):
    """This Reads all values in the Workbook and Saves them in a Dict"""
    app = xw.App(visible=visible, add_book=False)
    wb = app.books.open(workbook_path)

    #wb.app.visible(True)

    #xw.App(visible=visible)

    #xw.Application(wb).visible = visible

    # Iterate over Sheets with Dictionary
    Results = {}
    # Final Result
    Result = {}

    # Row, Col and Sheet Initial Values
    endRow = row_size
    endCol = col_size
    sheetNo = sheet

    while True:
        # Iterate over all the Rows and Cols to obtain the fartest elemets in x and y
        try:
            carrier = wb.sheets(sheetNo).name

        except:

            wb.close()
            app.quit()

            print(
                'Completed! Be noted maximum of %d rows and %d columns have been tested!!!'
                % (endRow, endCol))

            #xw.App(visible=True)
            #xw.Application(wb).visible = True

            return Result  # Return Dictionary

        print("Read: ", carrier)

        # quit()
        working_sheet = xw.sheets(sheetNo)  # type: xw.Sheet

        values = working_sheet.range((1, 1), (endRow, endCol)).value
        # print(values)

        Results[carrier] = values

        maxCol = 1
        for i in range(0, endRow):
            countCol = endCol - 1
            for j in range(endCol - 1, -1, -1):
                if Results[carrier][i][j] != None:
                    break
                else:
                    countCol -= 1
            if maxCol < countCol:
                maxCol = countCol

        maxRow = 1
        for i in range(0, endCol):
            countRow = endRow - 1
            for j in range(endRow - 1, -1, -1):
                if Results[carrier][j][i] != None:
                    break
                else:
                    countRow -= 1
            if maxRow < countRow:
                maxRow = countRow

        Result[carrier] = working_sheet.range((1, 1),
                                              (maxRow + 1, maxCol + 1)).value

        sheetNo += 1