Создание класса для разных методов - PullRequest
0 голосов
/ 13 июля 2020

У меня есть эти функции, и все они работают хорошо, но я хочу поместить их в класс. Например, Class App, а затем передать каждый из них в класс как методы. Любая помощь будет оценена по достоинству. Новый python Ученик.

def getExcel ():

    global df
    import_file_path = filedialog.askopenfilename()
    date_cols = ['TimeStamp']
    df = pd.read_csv (import_file_path, parse_dates = date_cols, index_col = 'TimeStamp') 

def descriptiv(): 
    stats = df.describe([.01,.1,.9,.99]).T
    stats['variance'] = df.var()
    stats['pct missing'] = df.isna().mean().round(4) * 100 
    return stats

def correl():
    matrix = df.corr(method = 'pearson')
    return matrix

Ответы [ 4 ]

0 голосов
/ 13 июля 2020

Я думаю, это должно делать то, о чем вы спрашиваете:

import pandas as pd
from Tkinter import filedialog
class ClassApp:
    def __init(self, df):
        self.df = df
    
    def getExcel(self):
        import_file_path = filedialog.askopenfilename()
        date_cols = ['TimeStamp']
        self.df = pd.read_csv(import_file_path, parse_dates=date_cols, index_col='TimeStamp')
    
    def descriptiv(self):
        stats = self.df.describe([.01,.1,.9,.99]).T
        stats['variance'] = self.df.var()
        stats['pct missing'] = self.df.isna().mean().round(4) * 100
        return stats
    
    def correl(self):
        matrix = self.df.corr(method = 'pearson')
        return matrix

Вы можете передать объект df через свой ClassApp и вызвать методы, например:

temp = ClassApp(df)
temp.correl()
0 голосов
/ 13 июля 2020

Что-то вроде следующего?

class App():
    df = None

    def getExcel ():
        import_file_path = filedialog.askopenfilename()
        date_cols = ['TimeStamp']
        df = pd.read_csv (import_file_path, parse_dates = date_cols, index_col = 'TimeStamp') 

    def descriptive(): 
        stats = df.describe([.01,.1,.9,.99]).T
        stats['variance'] = df.var()
        stats['pct missing'] = df.isna().mean().round(4) * 100 
        return stats

    def correl():
        matrix = df.corr(method = 'pearson')
        return matrix

Затем просто позвоните App.getExcel().

Или вы можете использовать Экземпляр вашего класса, если хотите, используйте следующее:

class App():
    def __init__(self):
        df = None

    def getExcel (self):
        import_file_path = filedialog.askopenfilename()
        date_cols = ['TimeStamp']
        self.df = pd.read_csv (import_file_path, parse_dates = date_cols, index_col = 'TimeStamp') 

    def descriptive(self): 
        stats = self.df.describe([.01,.1,.9,.99]).T
        stats['variance'] = self.df.var()
        stats['pct missing'] = self.df.isna().mean().round(4) * 100 
        return stats

    def correl(self):
        matrix = self.df.corr(method = 'pearson')
        return matrix

Затем, чтобы использовать:

my_app = App()
my_app.getExcel()
0 голосов
/ 13 июля 2020

Вот он:

import pandas as pd
from Tkinter import filedialog

class ClassApp():
    ''' A class that do what you want '''
    def __init__(self, df):
        self.df = df

    def getExcel(self):
        import_file_path = filedialog.askopenfilename()
        date_cols = ['TimeStamp']
        self.df = pd.read_csv(import_file_path, parse_dates = date_cols, index_col = 'TimeStamp') 

    def descriptiv(self): 
        stats = self.df.describe([.01,.1,.9,.99]).T
        stats['variance'] = self.df.var()
        stats['pct missing'] = self.df.isna().mean().round(4) * 100 
        return stats

    def correl(self):
        matrix = self.df.corr(method = 'pearson')
        return matrix

Затем вам нужно создать экземпляр класса, например,

app = AppClass()

Доступны методы, например:

app.getExcel()
0 голосов
/ 13 июля 2020

Вот решение. Занятия очень легкие! Вы можете использовать атрибут «self» для создания любого другого атрибута в объекте или для вызова методов объекта.

class MyClass:
    def __init__(self,df):
        self.df = df
    def getExcel (self):
        import_file_path = filedialog.askopenfilename()
        date_cols = ['TimeStamp']
        self. df = pd.read_csv (import_file_path, parse_dates = date_cols, index_col = 'TimeStamp') 

    def descriptiv(self): 
        stats = self.df.describe([.01,.1,.9,.99]).T
        stats['variance'] = df.var()
        stats['pct missing'] = df.isna().mean().round(4) * 100 
        return stats

    def correl(self):
        matrix = self.df.corr(method = 'pearson')
        return matrix
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...