Софтуерно Инженерство
Loading...
+ Нов въпрос
Spitfire avatar Spitfire 0 Точки

Data Visualization and EDA Lab Problem 6

Здравейте,

Идеята ми е да разкарам US и от новия dataframe да си дръпна max-a groupby по size за native_country.

 

income_data.native_country[income_data.groupby('native_country').size().max()] 

=> резултат 

'United-States'

new_income_data = income_data[~income_data.native_country.str.contains
                              ('United-States')]

new_income_data.native_country[new_income_data.groupby('native_country').size().max()]

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-337-9414f069507f> in <module>
----> 1 new_income_data.native_country[new_income_data.groupby('native_country').size().max()]

~\Anaconda3\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
    866         key = com.apply_if_callable(key, self)
    867         try:
--> 868             result = self.index.get_value(self, key)
    869 
    870             if not is_scalar(result):

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key)
   4373         try:
   4374             return self._engine.get_value(s, k,
-> 4375                                           tz=getattr(series.dtype, 'tz', None))
   4376         except KeyError as e1:
   4377             if len(self) > 0 and (self.holds_integer() or self.is_boolean()):

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

KeyError: 643

 

Бих бил благодарен за предложения/насоки.

0
Data Science
g.stoyanov avatar g.stoyanov 776 Точки
Best Answer

Привет,

Според мен подхода ти е неправилен, защото ако се подаде друг дейта сет, който въобще няма US или US не е топ, то тогава функцията ти няма да работи! Също така в условието е споменато следното правило: "DO NOT hardcode the answer, e.g. return "Germany"." - погледнато реално ти правиш това, въпреки, че не е точно отговора а е условие участващо в намирането на отговора! Просто трябва да групираш по държавата и да вземеш броят, след което да подредиш по брой и да върнеш втория резултат. Ето и моето решение:

def get_second_highest_num_people(dataframe):
    dataframe = dataframe.groupby("native_country")["native_country"].count()
    dataframe = dataframe.sort_values(ascending=False)
    num_people, country = dataframe[1], dataframe.index[1]
    return num_people, country

 

0
nzihi avatar nzihi 2 Точки

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

и аз я мислих тази задача известно време, но накрая стигнах до работещо решение:

def get_second_highest_num_people(dataframe):
    
    num_people, country = dataframe['native_country'].value_counts()[dataframe['native_country'].value_counts !=                    dataframe['native_country'].mode().any()], dataframe['native_country'].value_counts().keys().tolist()[1]
    
    return num_people, country

0
jbojilova avatar jbojilova 2 Точки

При мен проработи това:

    # returns top 2 from the Series
    top2 = dataframe.groupby("native-country")["native-country"].count().nlargest(2)
    
    # get the 2nd row, t.e. Mexico, 643
    country = top2.index[1]
    num_people = top2.values[1]
 

0