Python Forum
How to read file inside class
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to read file inside class
#11
self in the class is the instance itself. If you want to use a instance attribute inside the class you need to use it with self.
class PythonTraining():    
    def read_data(self, filepath):
        base_path = "D:\Data" 
        full_filepath = os.path.join(base_path, filepath, "outsummary2.csv")      
        self.data = pd.read_csv(full_filepath)

    def cal_rowmean(self, v1):         
        self.xmean = self.data['s3'].mean() + v1
        print(self.xmean)
Note, that read_data doesn't need to return self.data.
Also, note that you need to call read_data() before you call cal_rowmean or you will get AttributeError. It may be better if you refactor your class and move what reading data in class __init__ method (you don't have defined one now)
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#12
You lose flexibility and most of the point of this if hardcore most of the stuff inside the class.
It's no so easy with Pandas as often need flexibility to change a lot of stuff(also when read in files).

Here a demo,where take stuff in from outside of the class.
The can continue in normal way to work with df DataFrame object.
Output:
Movie;Year Seven;1995 The Godfather;1972 Jaws;1975
import pandas as pd
import os

class PythonTraining():
    def __init__(self, base_path, file_name):
        self.base_path = base_path
        self.file_name = file_name

    def read_data(self, sep=';', header='infer'):
        full_filepath = os.path.join(self.base_path, self.file_name)
        self.data = pd.read_csv(full_filepath, sep=sep, header=header)


if __name__ == '__main__':
    # Now from outside give path and filename
    base_path = r'E:\div_code\home'
    file_name = 'movies.csv'
    df = PythonTraining(base_path, file_name)

    # Give paramater to csv read
    sep = ';'
    #header = None
    df.read_data(sep)
    df = df.data
As you use Spyder here a Screenshot,see that i can continue to work with df object in IPython console.
[Image: t4EpwK.png]
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Recommended way to read/create PDF file? Winfried 3 2,869 Nov-26-2023, 07:51 AM
Last Post: Pedroski55
  python Read each xlsx file and write it into csv with pipe delimiter mg24 4 1,429 Nov-09-2023, 10:56 AM
Last Post: mg24
  Navigating file directories and paths inside Jupyter Notebook Mark17 5 687 Oct-29-2023, 12:40 PM
Last Post: Mark17
  How to read module/class from list of strings? popular_dog 1 468 Oct-04-2023, 03:08 PM
Last Post: deanhystad
  read file txt on my pc to telegram bot api Tupa 0 1,106 Jul-06-2023, 01:52 AM
Last Post: Tupa
  parse/read from file seperated by dots giovanne 5 1,105 Jun-26-2023, 12:26 PM
Last Post: DeaD_EyE
  Formatting a date time string read from a csv file DosAtPython 5 1,253 Jun-19-2023, 02:12 PM
Last Post: DosAtPython
  How do I read and write a binary file in Python? blackears 6 6,506 Jun-06-2023, 06:37 PM
Last Post: rajeshgk
  Read csv file with inconsistent delimiter gracenz 2 1,195 Mar-27-2023, 08:59 PM
Last Post: deanhystad
  Read text file, modify it then write back Pavel_47 5 1,588 Feb-18-2023, 02:49 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020