Я создал класс ( хранится в dataanalysis.py ), в котором хранится большинство методов, которые я собираюсь использовать для анализа данных. Вот код, хранящийся в этом файле:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
class Trening:
def __init__(self, Path):
self.path = Path
self.df = None
def getDF(self):
return self.df
def loadData(self, fileName= "pilot1.csv"):
filePath = str(self.path + fileName)
df = pd.read_csv(filePath, skiprows=2, decimal=".")
#return df
self.df = df
def dnfCountandReplace(self, Return=False):
filt = self.df['FINISH'] == 'DNF'
dnf = self.df[filt]
dnf = dnf.replace('DNF', 1)
dnf.to_csv('faenta.csv')
self.df.replace('DNF', np.NaN, inplace=True)
self.df.dropna(subset=['FINISH'], inplace=True)
if Return:
return dnf
def changeDataType(self, Return=False):
self.df["FINISH"] = self.df["FINISH"].str.replace(',', '.').astype(float)
self.df["INTER 1"] = self.df["INTER 1"].str.replace(',', '.').astype(float)
self.df["SECTION IM4-FINISH"] = self.df["SECTION IM4-FINISH"].str.replace(',', '.').astype(float)
self.df["COMMENT"] = self.df['COMMENT'].astype(str)
self.df["COMMENT"] = self.df['COMMENT'].str.replace('1', 'COURSE 1')
self.df["COMMENT"] = self.df['COMMENT'].str.replace('2', 'COURSE 2')
self.df["COMMENT"] = self.df['COMMENT'].str.replace('9', 'STRAIGHT-GLIDING')
pd.to_numeric(self.df['FINISH'], downcast='float', errors='raise')
pd.to_numeric(self.df['INTER 1'], downcast='float', errors='raise')
pd.to_numeric(self.df['SECTION IM4-FINISH'], downcast='float', errors='raise')
if Return:
return self.df
def renameCommentToCourse(self, Return=False):
self.df.rename(columns={'COMMENT': 'COURSE'}, inplace=True)
if Return:
return self.df
def groupData(self, Return=False):
self.df.groupby(['BIB#', 'COURSE'])['FINISH']
if Return:
return self.df
def findTwoFastestRunsbyGroup(self, Return=False):
self.df['FINISH'].nsmallest(2)
if Return:
return self.df
def parseToCSV(self):
self.df.to_csv('cool.csv')
def calculateSpeed(self, Return=False):
# (x2 - x1) / (t2 - t1)
x2 = 2
x1 = 0
t1 = 0
for i in self.df['INTER 1']:
self.df['ENTRANCESPEED'] = (x2 - x1) / (self.df['INTER 1'] - t1)
if Return:
return self.df
Во время моей докторской диссертации я, вероятно, собираюсь запускать эти методы класса> 300 раз, но иногда в разных порядках и комбинациях, в зависимости от того, какой результат я хочу получить. . Итак, мой вопрос: есть ли способ сгруппировать методы класса / цепочки вместе, чтобы я мог при необходимости вызывать соответствующие? Я знаю, что в Pandas есть интересная функция pipe (), но я не понимаю, как ее использовать. В файле main.py у меня есть следующий код:
from models import Trening
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
pilot1 = Trening("/Users/cmagelssen/Desktop/DataAnalyse/data/pilot1/trening1/")
pilot1.loadData("PILOT1_SESSION2.csv")
pilot1.dnfCountandReplace(Return=True)
X = pilot1.changeDataType(Return=True)
pilot1.renameCommentToCourse(Return=True)
pilot1.groupData(Return=True)
pilot1.findTwoFastestRunsbyGroup(Return=True)
df = pilot1.calculateSpeed(Return=True)
plot = pilot1.getDF()
Кто-нибудь знает, как я могу связать / сгруппировать эти методы вместе с помощью pipe ()?
Best, Christian