Професионална програма
Loading...
m_nikolova93 avatar m_nikolova93 22 Точки

Lab 2 | Data Visualization and EDA Lab | Last Task - Series vs Dataframe

Привет, колеги, 

Последната задача на Лаба за визуализация (Data Visualization and EDA Lab) гласи:

Which people are most overworked? Group all data by occupation and calculate the mean hours per week for each group. Write a function that calculates and returns all mean hours per week as a Series Sort the results in descending order (most hours to fewestt hours).

След като изпъля задачата връщам Series със сортираните средни стойности (както според мен се иска). След това, обаче, тестът ми гърми:

hours = get_mean_working_hours_by_income(income_data)
print(hours)
nose.tools.assert_almost_equal(hours["Handlers-cleaners"], 37.95, delta = 0.01)

След като функцията връща Series, не виждам как hours["Handlers-cleaners"]  се очаква да върне нещо различно от грешка. В моя случай ми дава "KeyError: 'Handlers-cleaners'"

Сблъскали ли сте се с тази грешка вече? Идеи?

Поздрави

 

Тагове:
0
Data Science 16/12/2017 20:37:55
m_nikolova93 avatar m_nikolova93 22 Точки

В крайна сметка с Dictionary тръгна при мен :)

0
magggie avatar magggie 19 Точки

Здравейте,

аз вече 3-ти ден се мъча с това crying.

Като правите groupby резулатата първоначално във dataframe ли го връщате или в series? Като прилагате сортирането какъв е обекта?

Аз пробвах какво ли не, но като сортирам и после превърна в dictionary всичко се чупи. 

Трябва ли да е dictionary и тогава чак да се сортира?

Много благодаря предврително!

 

0
m_nikolova93 avatar m_nikolova93 22 Точки

Здрасти, Маги, работя през цялото време с Dataframe и чак накрая го конвертирам до Dictionary преди да return-на резултата. Успех

0
magggie avatar magggie 19 Точки

Много благодаря! Това страшно много ще ми помогне.

Весел ден!

0
TeodorStefanovPld avatar TeodorStefanovPld 1276 Точки

и напълно излишно да го правиш просто си оправи сепараторите... :Д както и да е след днес явно повечето ще се оправим с лаб-а :Д ние го открихме сутринта 

0
DilyanAtanasov avatar DilyanAtanasov 11 Точки

Привет, много ви благодаря за коментарите, дадохте ми идея как да го направя  (каквато си нямах). Но за съжаление получавам отговора - … 'Handlers-cleaners':  37.947445255474456 … и пак ми излиза KeyError:  'Handlers-cleaners'. Според мен не е от интервала, оправих го това (все пак отговорът ми е 'Handlers-cleaners', а не '  Handlers-cleaners').  Ако на някой му хрумва нещо… да сподели.

Поздрави и предварително благодаря!

0
TeodorStefanovPld avatar TeodorStefanovPld 1276 Точки

значи за тея които още се чудят. гледаш 3то видео там Данчо ви казва каква е уловката ако ви мързи да го гледате. Слагате 

sep=", "  или skipinitialspace=true и ще ви тръгне нормално. Четете occupation колоната като string и се получава :

 '  Handlers-cleaners' а проверката нарочно е направена да е 'Handlers-cleaners'  и заради този  whitespace ви гърми. 

Сега ако искате да ви обесня защо е така трябва да ви обесня за string и string.length но приемете че работи.Съжалявам колежката тука ви заблуждава че го е направила с dictionary ок сигурно работи,но не е нужно, тук не се търси по ключ или стойност. Просто е сложена проверка как се подават данните и като ви провери индекса на листа и всеки път ще гърми заради 

whitespace който се получава в началото на стринг-а ако не го обработите. В python дали ще е речник или лист голяма разлика няма при речника няма индекси но така или иначе листа ви е с string индекси и пак ще ви върни каквото ви трябва като търсите по тях. sorry но това е особеност на python които има всичките предимства и недостатъци на скриптиран език.

0
m_nikolova93 avatar m_nikolova93 22 Точки

Виж си и типа на изхода - при мен сработи и ми дадоха точки като върнах Dictionary.

0