Python Forum

Full Version: This is an Object - Code interpretation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello all

I am trying to gain a better understanding of object orientation programming.

I cam across the following code:-

import pandas as pd

df = pd.read_csv("T.csv")

print(df.head(2))
This code works and I replaced the actual csv file with my own.

My question is would it be correct to say that:
1) df is an object of the class read_csv
2) The class read_csv is found in an imported module
3) The imported module is given the alias pd

Is this correct?
(Jun-16-2021, 06:50 PM)JoeDainton123 Wrote: [ -> ]1) df is an object of the class read_csv
df is a variable that has a pointer to an instance of a pandas.DataFrame class

(Jun-16-2021, 06:50 PM)JoeDainton123 Wrote: [ -> ]2) The class read_csv is found in an imported module
read_csv is a function of the imported pandas module

(Jun-16-2021, 06:50 PM)JoeDainton123 Wrote: [ -> ]3) The imported module is given the alias pd
If the module name is followed by as, then the name following as is bound directly to the imported module.
(Jun-16-2021, 06:50 PM)JoeDainton123 Wrote: [ -> ]I am trying to gain a better understanding of object orientation programming.
Pandas is maybe not the best to look at as it really big and dos a lot specialization.
Yoriz explain it fine.

Normally so would read_csv() by a method of the class,pandas just write it as a function,
then has special @Appender decorator.
@Appender(
    _doc_read_csv_and_table.format(
        func_name="read_csv",
        summary="Read a comma-separated values (csv) file into DataFrame.",
        _default_sep="','",
        storage_options=generic._shared_docs["storage_options"],
    )
)
def read_csv(
    filepath_or_buffer: FilePathOrBuffer,
    sep=lib.no_default,
    delimiter=None,
    # Column and Index Locations and Names
    header="infer",
    .....ect

If i gone write a demo as more normal OOP class way.
# my_pandas.py
class MyPandas:
    def read_csv(self, file):
        with open(file) as f:
            print(f.read())

    def head(self, file):
        with open(file) as f:
            print(f.read()[:20])
Use:
>>> import my_pandas as pd
>>>
>>> df = pd.MyPandas()
>>> df.read_csv('Articles.csv')
name;regcode;number
Salah;111;22
ali;222;33
Ranard;333;44
>>>
>>> df.head('Articles.csv')
name;regcode;number
You see the similarity way of usage now is read_csv() and head() methods of class MyPandas.
They are not function as pandas use in there specialization way.