【问题标题】:Why is my pandas dataframe data type turning into 'None' type?为什么我的 pandas 数据框数据类型变成了“无”类型?
【发布时间】: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


【解决方案1】:

你的函数没有返回任何东西,只是打印中间操作。而且您将 nothing 分配给您的数据框 data_df,因此它不再是数据框。在上层for循环之外使用return data_df,定义稍后需要分配给data_df的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2017-10-27
    • 2023-01-21
    相关资源
    最近更新 更多