2017-02-20 130 views
0

使用的數據是Gapminder的數據 - > employment_above_15.csv如何在以下分析中進行進一步的分類?

# defining functions for finding correlation 
    def correlation(x,y): 
     std_x = (x-x.mean())/(x.std(ddof = 0)) 
     std_y = (y-y.mean())/(y.std(ddof=0)) 
     return (std_x * std_y).mean() 

    #function for calculating correlation for each country with time 
    def emp_country(country,df): 
     emp_country=df.loc[country] 
     year_are=df.columns.values.astype(str).astype(int) 
     return correlation(emp_country.values, year_are)`def 

    determing_cor_level(data): 
     data1 = abs(data) 
     if data1 < 0.4: 
      return "Low" 
     elif data1 < 0.7: 
      return "Medium" 
     else: 
      return "High" 

    def corr_type(data): 
     if data > 0: 
      return "(-)ve" 
     elif data == 0: 
      return "Null" 
     else: 
      return "(+)ve" 

    def finding_corr(df): 
     corr_list=[] 
     corr_level=[] 
     corr_types=[] 
     for country in df.index.values.astype('str'): 
      corr_value=emp_country(country,df) 
      corr_list.append(corr_value) 
      corr_level.append(determing_cor_level(corr_value)) 
      corr_types.append(corr_type(corr_value)) 
      df1= pd.DataFrame({'Correlation': corr_list,'Correlation Strength':corr_level, 'Correlation Type' : corr_types} , 
        index= df.index.values.astype('str')) 
     return df1 

    finding_corr(employment_rate).head() 
    finding_corr(employment_rate).groupby('Correlation Strength').count()['Correlation'] 

而且我得到以下的輸出: 相關強度 高99 低29 中50 名稱:相關性,D型:Int64的

但是現在我想進一步分類並找出具有相關強度的每個類型的多少個國家有(+)ve和( - )ve的相關性。也就是說有多少國家有高度相關(+)正相關和有多少( - )正相關。怎麼做?

回答

0

finding_corr(employment_rate).groupby([ '相關強度', '國家'])。COUNT() '相關']

- 這可能有助於

+0

也許你可以在闡述爲什麼這是一個更好的功能? – Degan