Распечатайте фрейм данных после загрузки данных из csv

#python #pandas #dataframe

Вопрос:

Прежде всего, извините, если на этот вопрос уже дан ответ, я искал ответ, но не нашел способа решить свою проблему, и спасибо вам за вашу удивительную поддержку. Я изучаю Python, и вся информация, которую я нашел здесь, очень полезна.

     #Define a function to import data
def import_data(): 
    data = pd.read_csv('Sales_Transactions_Dataset_Weekly.csv',sep=';',index_col=0,header=0) 
    df=data.iloc[:,0:52]
    return df
 

У меня есть файл .csv с временными рядами в столбцах (w1,w2,w3…), и я хочу сохранить только первые 52 столбца в своем фрейме данных. Для этого я выполнил эту функцию:

После этого я не могу распечатать свой фрейм данных, я хотел бы использовать его в другой функции, которую я создал. но я всегда получаю одну и ту же ошибку:

     ---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-159-e6cb9dbb3286> in <module>
      1 import_data()
----> 2 print(df)

NameError: name 'df' is not defined 
 

Ответ №1:

Вам просто нужно установить df

df = import_data()

Комментарии:

1. Спасибо!! Я забыл назначить его df.

Ответ №2:

Ваш подход хорош, но проблема в том, что ваша функция возвращает фрейм данных, который вы не сохраняете в переменной после вызова функции. узнайте больше о возврате функций в Python

Поэтому, когда вы попытались отобразить фрейм данных с помощью переменной df (которая является локальной для функции import_data() ), вы получаете ошибку » df » не определен, что означает, что он не может найти переменную с именем df в текущей области. Прочтите эту ссылку, чтобы узнать больше о области видимости в Python

Чтобы устранить эту проблему, просто сделайте это

 df=import_data() 

#import_data will return a dataframe which will be saved in df variable and then you can use this "df" variable to display your data   

df
 

Комментарии:

1. Спасибо! Я понял, в чем была моя ошибка. Я должен назначить переменную.

2. нет проблем, пожалуйста, озвучьте ответ, так как это помогает другим знать, что он был правильным, и помогает новым аккаунтам расти Спасибо