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'"
Сблъскали ли сте се с тази грешка вече? Идеи?
Поздрави
Здравейте,
аз вече 3-ти ден се мъча с това .
Като правите groupby резулатата първоначално във dataframe ли го връщате или в series? Като прилагате сортирането какъв е обекта?
Аз пробвах какво ли не, но като сортирам и после превърна в dictionary всичко се чупи.
Трябва ли да е dictionary и тогава чак да се сортира?
Много благодаря предврително!
Здрасти, Маги, работя през цялото време с Dataframe и чак накрая го конвертирам до Dictionary преди да return-на резултата. Успех
Много благодаря! Това страшно много ще ми помогне.
Весел ден!
и напълно излишно да го правиш просто си оправи сепараторите... :Д както и да е след днес явно повечето ще се оправим с лаб-а :Д ние го открихме сутринта
Привет, много ви благодаря за коментарите, дадохте ми идея как да го направя (каквато си нямах). Но за съжаление получавам отговора - … 'Handlers-cleaners': 37.947445255474456 … и пак ми излиза KeyError: 'Handlers-cleaners'. Според мен не е от интервала, оправих го това (все пак отговорът ми е 'Handlers-cleaners', а не ' Handlers-cleaners'). Ако на някой му хрумва нещо… да сподели.
Поздрави и предварително благодаря!
значи за тея които още се чудят. гледаш 3то видео там Данчо ви казва каква е уловката ако ви мързи да го гледате. Слагате
sep=", " или skipinitialspace=true и ще ви тръгне нормално. Четете occupation колоната като string и се получава :
' Handlers-cleaners' а проверката нарочно е направена да е 'Handlers-cleaners' и заради този whitespace ви гърми.
Сега ако искате да ви обесня защо е така трябва да ви обесня за string и string.length но приемете че работи.Съжалявам колежката тука ви заблуждава че го е направила с dictionary ок сигурно работи,но не е нужно, тук не се търси по ключ или стойност. Просто е сложена проверка как се подават данните и като ви провери индекса на листа и всеки път ще гърми заради
whitespace който се получава в началото на стринг-а ако не го обработите. В python дали ще е речник или лист голяма разлика няма при речника няма индекси но така или иначе листа ви е с string индекси и пак ще ви върни каквото ви трябва като търсите по тях. sorry но това е особеност на python които има всичките предимства и недостатъци на скриптиран език.
Виж си и типа на изхода - при мен сработи и ми дадоха точки като върнах Dictionary.