【发布时间】:2022-07-06 22:56:34
【问题描述】:
在运行特定代码并检查 head() 函数后,我正在处理数据框,但出现错误“AttributeError: 'NoneType' object has no attribute 'head' "
相关代码如下:
import numpy as np
import pandas as pd
rfilepath="Advertising.csv"
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats
from sklearn.model_selection import train_test_split
def loaddata(rfilepath):
data=pd.read_csv(rfilepath)
return(data)
try:
data_df=loaddata(rfilepath)
print(data_df)
except:
print("error")
data_df.head() #Here no error is showing
def processdata(data_df):
for (columnName, columnData) in data_df.iteritems():
print(columnName)
sns.boxplot(data_df[columnName])
plt.show()
q1=stats.scoreatpercentile(data_df[columnName],25)
print("Q1",q1)
q3=stats.scoreatpercentile(data_df[columnName],75)
print("Q3",q3)
iqr=stats.iqr(data_df[columnName])
print("iqr",iqr)
lower_bound= q1- 1.5*(iqr)
print("Lowebound",lower_bound)
upper_bound= q3+ 1.5*(iqr)
print("upperbound",upper_bound)
print("\n")
outliers= data_df[columnName][((data_df[columnName]<lower_bound) | (data_df[columnName]>upper_bound))]
outliers
median=stats.scoreatpercentile(data_df[columnName],99)
median
for i in outliers:
data_df[columnName]=np.where(data_df[columnName]==i,median,data_df[columnName])
sns.boxplot(data_df[columnName])
plt.show()
try:
data_df=processdata(data_df)
except:
print("error")
data_df.head()#after calling the function processdata(data_df) here shows the "AttributeError: 'NoneType' object has no attribute 'head'"
我认为问题在于函数 processdata(data_df)。如果有人知道究竟是什么问题?
【问题讨论】:
-
您的 processdata() 函数不会返回您的数据,因此在调用 data_df=processdata(data_df) 时,您基本上不会向 data_df 返回任何内容。由于 processdata() 函数不会更改数据,因此您无需调用 data_df=processdata(data_df),而只需调用 processdata(data_df)。
标签: python python-3.x data-science