31 按年度和地区分析全球幸福报告

31 按年度和地区分析全球幸福报告_第1张图片
image.png
31 按年度和地区分析全球幸福报告_第2张图片
image.png
31 按年度和地区分析全球幸福报告_第3张图片
这个按照多列分组是有先后顺序的,先按谁分组谁就得写前面
31 按年度和地区分析全球幸福报告_第4张图片
透视表
import os
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300 #分辨率
# 默认的像素:[6.0,4.0],分辨率为100,图片尺寸为 600&400
# 指定dpi=200,图片尺寸为 1200*800
# 指定dpi=300,图片尺寸为 1800*1200
# 设置figsize可以在不改变分辨率情况下改变比例

outpath = '/Users/miraco/PycharmProjects/DataMining/output3'
filepath = '/Users/miraco/PycharmProjects/DataMining/data_pd/happiness_report.csv'

#获取数据
data_df= pd.read_csv(filepath)

#数据处理
data_df.dropna(inplace = True)
# 先按照年份从小到大排序、同一年份内再按照幸福指数从大到小排序,默认是升序的
data_df.sort_values(['Year', 'Happiness Score'], ascending = [True, False], inplace= True)
print(data_df.head(),'\n--以上是多维排序结果--------------------------') #输出来看看

#按年度和区域进行分析,每年每个区的均值,这个是个多级索引的series
year_region_grouped_results = data_df.groupby(by = ['Year', 'Region'])['Happiness Score'].mean()
print(year_region_grouped_results.head(),'\n--以上是按年和地区的幸福指数均值聚合结果--------------------------')
#生成透视表,纵向按照地区,横向逐年查看,
year_region_pivot_results = pd.pivot_table(data_df,
                                     index = 'Region',
                                     columns ='Year',
                                     values = ['Happiness Score', 'Economy (GDP per Capita)'],
                                     aggfunc = 'mean',
                                     )
print(year_region_pivot_results.head(),'\n--以上是按年聚类的幸福指数和人均GDP结果--------------------------')

#储存数据
year_region_grouped_results.to_csv(os.path.join(outpath, 'year_region_grouped_results.csv'))
year_region_pivot_results.to_csv(os.path.join(outpath, 'year_region_pivot_results.csv'))

#幸福指数绘图
year_region_pivot_results['Happiness Score'].plot(kind = 'bar',title = 'Happiness Score')
plt.tight_layout()
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.) #这里如果不指定位置,会使图例盖住柱状图
plt.show()

#人均GDP绘图
year_region_pivot_results['Economy (GDP per Capita)'].plot(kind = 'bar',title = 'Economy (GDP per Capita)')
plt.tight_layout()
# legend(loc = 'best')
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.)  #这里如果不指定位置,会使图例盖住柱状图
plt.show()

运行结果

         Country          Region  ...   Economy (GDP per Capita)  Year
141  Switzerland  Western Europe  ...                    1.39651  2015
60       Iceland  Western Europe  ...                    1.30232  2015
38       Denmark  Western Europe  ...                    1.32548  2015
108       Norway  Western Europe  ...                    1.45900  2015
25        Canada   North America  ...                    1.32629  2015

[5 rows x 6 columns] 
--以上是多维排序结果--------------------------
Year  Region                         
2015  Australia and New Zealand          7.285000
      Central and Eastern Europe         5.332931
      Eastern Asia                       5.626167
      Latin America and Caribbean        6.144682
      Middle East and Northern Africa    5.406900
Name: Happiness Score, dtype: float64 
--以上是按年和地区的幸福指数均值聚合结果--------------------------
                                Economy (GDP per Capita)       ...       Happiness Score
Year                                                2015       ...                  2017
Region                                                         ...                      
Australia and New Zealand                       1.291880       ...              7.299000
Central and Eastern Europe                      0.942438       ...              5.409931
Eastern Asia                                    1.151780       ...              5.646667
Latin America and Caribbean                     0.876815       ...              5.957818
Middle East and Northern Africa                 1.066973       ...              5.369684

[5 rows x 6 columns] 
--以上是按年聚类的幸福指数和人均GDP结果--------------------------
31 按年度和地区分析全球幸福报告_第5张图片
幸福指数排名
31 按年度和地区分析全球幸福报告_第6张图片
人均GDP排名

输出的文件


31 按年度和地区分析全球幸福报告_第7张图片
year_region_grouped_results
31 按年度和地区分析全球幸福报告_第8张图片
year_region_pivot_results

需要注意的地方

  • 多维升降序排序
    data_df.sort_values(['Year', 'Happiness Score'], ascending = [True, False], inplace= True)

  • 多维求均值,这个的得到的是一个series
    year_region_grouped_results = data_df.groupby(by = ['Year', 'Region'])['Happiness Score'].mean()

  • 双索引列表变透视表并均值聚合

year_region_pivot_results = pd.pivot_table(data_df,
                                     index = 'Region',
                                     columns ='Year',
                                     values = ['Happiness Score', 'Economy (GDP per Capita)'],
                                     aggfunc = 'mean',
                                     )
31 按年度和地区分析全球幸福报告_第9张图片
image.png

练习:对PM2.5值按年月两列进行统计分析

  • 题目描述:对PM2.5值按年月两列进行统计分析,并使用分组柱状图可视化分析结果

  • 题目要求:

  • 使用Pandas进行数据分析及可视化

  • 数据文件:

  • 数据源下载地址:https://video.mugglecode.com/pm2.csv

  • pm2.csv,包含了2013-2015年某地区每天的PM2.5值。每行记录为1天的数据。

  • 共4列数据,分别表示:

  1. Year: 年
  2. Month: 月
  3. Day: 日
  4. PM: PM2.5值
import pandas as pd
import matplotlib.pyplot as plt
import os

outpath = '/Users/miraco/PycharmProjects/DataMining/output3'

if not os.path.exists(outpath):
    os.makedirs(outpath)

filepath = '/Users/miraco/PycharmProjects/DataMining/data_pd/pm2.csv'

#数据获取

data_df = pd.read_csv(filepath).dropna()

#数据处理
data_df_group = data_df.groupby(['Year','Month'])['PM'].mean()

pivot_results = pd.pivot_table(data_df,
                               index = 'Year',
                               columns= 'Month',
                               values = 'PM',
                               aggfunc = 'mean'
               )
data_df_group.to_csv(os.path.join(outpath, 'data_df_group.csv'))
pivot_results.to_csv(os.path.join(outpath, 'pivot_results'))

data_df_group.plot(kind = 'bar')
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.) #这里如果不指定位置,会使图例盖住柱状图
plt.tight_layout()

plt.show()

pivot_results.plot(kind = 'bar')
plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.) #这里如果不指定位置,会使图例盖住柱状图
plt.tight_layout()
plt.show()



运行结果


31 按年度和地区分析全球幸福报告_第10张图片
月平均,如果想更改x内容,需要用https://blog.csdn.net/u014134138/article/details/78510367,但是我认为这里的方法并不好,最好还是用字典
31 按年度和地区分析全球幸福报告_第11张图片
年透视表

你可能感兴趣的:(31 按年度和地区分析全球幸福报告)