Я начал работу над проектом, в котором я хочу создать уникальные тренировочные программы для спортсменов, которые принимали участие в тренировках, которые у меня были. Эти спортсмены хранятся в файле .csv в столбце [BIB #]. Для каждого из этих спортсменов я хочу создать файл Excel с несколькими листами (по одному листу для каждого спортсмена).
В этом проекте я буду развивать много других функций, связанных с тренировками, поэтому я подумал Было бы неплохо создать класс и экземпляры этого класса (на основе спортсменов, принимавших участие в тренировке). Поэтому я написал несколько функций, которые находят уникальные значения в столбце DataFrame, создают экземпляры их классов (хранятся в словаре), а затем генерируют файл Excel с расширением. Код работает нормально, но есть ли способ лучше sh выполнить эту задачу? Я новичок в Python, поэтому ценю отзывы.
import pandas as pd
# Class used for testing
class Lageutover:
def __init__(self, bib):
self.bib = bib
#The path to the .csv file.
path = "/Users/cmagelssen/Desktop/testing/data/pilot1.csv"
#This creates a Pandas DataFrame
df = pd.read_csv(path, skiprows=2, decimal=".")
#I have used pandas pipe() to pipe many functions. The result is a new DataFrame
df = df.pipe(Trening.dnfCountandReplace, LagreCsv=True)\
.pipe(Trening.changeDataType)\
.pipe(Trening.renameCommentToCourse)\
.pipe(Trening.groupData)\
#This function first creates a list object with each unique value in a column of a DataFrame
#Then, for each unique value, it creates a dictionary, and at the same time creates an instance of a class, for each unique value
def createDict(df):
uniqueAthletes = [n for n in df['BIB#'].unique()]
global bibNumber
bibNumber = {bibNumber: Lageutover(bibNumber) for bibNumber in uniqueAthletes}
#This function creates a training protocol for each BiBnumber
def lagExcelFiler():
with pd.ExcelWriter('index.xlsx') as writer:
for key in bibNumber.keys():
dataramme = Utovere.allokeringRandom()
df = dataramme
df.to_excel(writer, sheet_name=str(key))
createDict(df)
lagExcelFiler()