问题描述
我在使用 Pandas 时遇到了一些小问题。问题是我创建了一个文件来存储类以从 .csv 文件读取和清理数据。我导入我自己的库来加载数据,然后我想将 Pandas 数据框用于其他操作。但不知为何,我做不到。
import pandas as pd
class Load_Data:
def __init__(self,filename):
self.__filename = filename
def load(self):
df = pd.read_csv(self.__filename)
del df["Remarks"]
df = df.dropna()
return df
在另一个文件中,我试图导入这个自创建的库进行数据处理步骤,然后尝试使用 Pandas DataFrame 处理它。
from Load_Data import Load_Data
import pandas as pd
test_df = Load_Data("Final_file.csv")
test_df.load()
从我的文件打印内容表没有问题。但是当我尝试将它(test_df)用作 Pandas 数据框时,例如,我想对某些属性进行分组
test_df.groupby(['width','length])
它最终显示:
'Load_Data' 对象没有属性 'groupby'
这意味着如果我想使用 groupby 函数,我必须在我自己的类中自己编写它。但我不想那样做。我只想将我的类转换为 Pandas DataFrame 并直接使用它们的包进行一些复杂的操作。
如果您有任何帮助,我将不胜感激
解决方法
您正在使用类,就好像它是一个函数。在 load
方法中推送 return 语句
import pandas as pd
class Load_Data:
def __init__(self,filename):
self.__filename = filename
def load(self):
df = pd.read_csv(self.__filename)
del df["Remarks"]
df = df.dropna()
return df # this change
用法:
test_df = Load_Data("Final_file.csv").load() #this change
# or
load_data = Load_Data("Final_file.csv")
test_df = load_data.load()
load 返回一个 DataFrame 而不是 Load_Data 实例。