Loading...
miolov avatar miolov 0 Точки

Data Tidying and Cleaning Lab - грешка при assert_equal(car_names.shape, (4,)) ?

Тука има грешка в описанието, във теста, или аз порсто нещо пропускам?

Във лаба пише:

Write a function to find the cars which have the smallest number of cylinders and print their model names. Return a dataframe, NOT a list of car names.

Ок, ама после теста който проверява е:

nose.tools.assert_equal(car_names.shape, (4,))

...което минава само със  class 'pandas.core.series.Series' (пробвах със DataFrame).

По принцип тази клетка със теста е read-only. Сигурно има начин да се едитне на място, въпроса ми обаче е като се оценява сървъра ще го пренапише ли както е първоначално?

 

0
Data Science
iordan_93 avatar iordan_93 Trainer 407 Точки
Best Answer

Грешката е моя. Накарай го да минава (да връща колонка, Series). Аз го оправих това и който свали notebook-a след мен, ще му е коригирано.

Ако промениш read-only клетка няма да ти даде точки за нея, а аз ще получа alert, че в предаденото домашно има променена клетка.

0
Mik761000 avatar Mik761000 39 Точки

Колега,

оромно благодаря за коментарът ти. Благодарение на него успях да си реша Lab-a :)

 

0
Kanov avatar Kanov 14 Точки

Здравейте.

Неразбирам дали в мен е причината или теста не е ОК, но изпълнявам условието да изкарам list от car_names а теста си гърми.

Write a function to find the cars which have the smallest number of cylinders and print their model names. Return a list of car names.

In [18]:

 

def get_model_names_smallest_cylinders(dataframe):
    """
    Returns the names of the cars with the smallest number of cylinders
    """
    number = 0  
    dfList = mpg_data['cylinders'].tolist()
    dfList.sort(reverse=False)
    for i in range(len(dfList)-1):
        if (dfList[i] < dfList[i+1]):
            number = i+1
            break
    car_names1 = mpg_data.nsmallest(number,['cylinders'])
    car_names = car_names1['car_name'].tolist()
    return car_names

In [19]:

 

car_names = get_model_names_smallest_cylinders(mpg_data)
print(car_names)
nose.tools.assert_equal(car_names.shape, (4,))
['"mazda rx2 coupe"', '"maxda rx3"', '"mazda rx-4"', '"mazda rx-7 gs"']
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-19-6ed284648b0d> in <module>()
      1 car_names = get_model_names_smallest_cylinders(mpg_data)
      2 print(car_names)
----> 3 nose.tools.assert_equal(car_names.shape, (4,))

AttributeError: 'list' object has no attribute 'shape'
0
miolov avatar miolov 0 Точки

Ако имаш dataframe df просто може да кажеш df["car_name"] и ще върне Series от тази колона. То е като list ама има повече неща и е клас на pandas, и има shape свойство.
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html

Няма нужда да викаш: .tolist()

Заданието може би те е подвело да го направиш обкновен python sequence/list но ако съдим по assert-а, май е баш за Series.

0
aggeorgiev avatar aggeorgiev 326 Точки

Здравейте,

клетките с готовия код не са заключени случайно wink.

Предлагам Ви  едно по-простичко и работещо решение:

 

    car_names = None
    
    # YOUR CODE HERE
    
    selection = dataframe.cylinders.min()
    car_names = dataframe.loc[dataframe['cylinders'] == selection].car_name
       
    # raise NotImplementedError()
    
    return  car_names
0
11/12/2017 23:50:57
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.