python数据分析最后的作业
课程论⽂
python多线程threadingPython课程最终考核⽅式是课程论⽂,要求就是做⼀个数据分析,提交⽂档、源码及数据源。
数据源
我的数据源来⾃的。
⽬标
分析的主要⽬标有,本次调查所有国家或地区的全世界区域数量分布状况,由此展开区域整体幸福感对⽐,如各⼤地区幸福指数对⽐,各⼤地区幸福指数区间分布,2020年世界幸福报告前10名和后10名,最后通过可视化,如热⼒图分布,直观体现幸福指数与调查项⽬中相关关系,幸福地图,直观体现各国家地区幸福指数对⽐。
⽅法及类库
其中主要分析⽅法是Python的numpy和pandas的相关数据分析⽅法,再加上⼀些可视化库⽅法主要有m
atplotlib和seaborn,更重要的是pyecharts的各种⼯具,库⾥的很多可视化都⾮常漂亮,尤其是世界地图。经过分析数据和可视化,得出分析结论。
参考
开始
类库导⼊
import numpy as np
import pandas as pd
# 可视化
import matplotlib.pyplot as plt
import seaborn as sns
from pyecharts.charts import Bar, Map, Line, Page, Pie, Grid
from pyecharts import options as opts
import statsmodels.api as sm
import statsmodels.formula.api as smf
读取数据及数据处理
# 读⼊数据与数据处理
s = r'C:\Users\86183\Desktop\课程论⽂\data'
df_2018 = pd.read_csv(s+'/2018.csv', encoding='gbk')
df_2019 = pd.read_csv(s+'/2019.csv', encoding='gbk')
df_2020 = pd.read_csv(s+'/2020.csv', encoding='gbk')
# 删除不必要的信息
df_2020 = df_2020.iloc[:,:12]
columns =['Standard error of ladder score','upperwhisker','lowerwhisker']
df_2020.drop(columns, axis=1, inplace=True)
# 数据信息
def data_info():
print(df_2020.info())
print(df_2020.describe())
主体
# 幸福地图
def HappinessMap():
x_data = df_2020['Country name'].tolist()
y_data = df_2020['Ladder score'].round(2).tolist()
# 地图
map1 = Map()
map1.add('',[list(z)for z in zip(x_data, y_data)], maptype='world',)
map1.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
map1.set_global_opts(title_opts=opts.TitleOpts(title='Happiness Score'),    visualmap_opts=opts.VisualMapOpts(max_=8, is_piecewise=True,
pieces=[{'max':3,'min':0,'label':'0-3'},
{'max':4,'min':3.1,
'label':'3-4'},
{'max':5,'min':4.1,
'label':'4-5'},
{'max':6,'min':5.1,
'label':'5-6'},
{'max':7,'min':6.1,
'label':'6-7'},
{'max':8,'min':7.1,'label':'7-8'}]
),
)
# 各⼤地区的平均幸福指数
def country_score_of_every_region():
df_m = upby('Regional indicator')['Ladder score'].mean().sort_values()
x_data = df_m .list()
y_data = df_m .und(2).tolist()
grid = Grid()
bar1 = Bar()
bar1.add_yaxis('',y_data)
bar1.add_xaxis(x_data)
css手册 百度网盘bar1.set_global_opts(title_opts=opts.TitleOpts(title='Average Happiness Score by Regional Indicator'))
bar1.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='right'),
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="average", name="平均值")]))
bar1.set_colors('CadetBlue')
grid.add(bar1, grid_opts=opts.GridOpts(pos_left="20%"))
# 各幸福区间的百分⽐
def regions_country_pie():
python数据分析基础教程答案df2 = df_2020.iloc[:,:3]
df2['score_group']= pd.cut(x=df2['Ladder score'],bins=[0,1,2,3,4,5,6,7,8]).astype('str')
c =(
Pie()
.add(
'',
[list(z)for z in upby('score_group').unt().list(),upby('score_group').unt().list())],            radius=["30%","75%"],
rosetype="area",
label_opts = opts.LabelOpts(position='right'),
)web前端培训班寻的你
.set_global_opts(
title_opts=opts.TitleOpts(title='Number of Countries by Happiness Score Categories'),
legend_opts=opts.LegendOpts(is_show=False),
)html中标签的作用
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:\n {c} ({d}%)"))
)
# 所有国家在不同区域内的分部
def every_regions_country_num():
plt_cols =['Regional indicator','Ladder score','Country name']
plt_da = df_2020[plt_cols]
plt.figure()
plt.title('Country name count of Regional indicator')
plt.show()
# 2020前10后10
def Top_and_Bottem_10_country_happiness():
rank_top10 = df_2020.head(
10)[['Country name','Ladder score']]
last_top10 = df_2020.tail(
10)[['Country name','Ladder score']]
plt.figure()
ax = plt.subplot(1,2,1)
sns.barplot(x='Country name', y='Ladder score', data=rank_top10)    icks(rotation='vertical')
plt.title('Top 10 Country name')
ax = plt.subplot(1,2,2, sharey=ax)
sns.barplot(x='Country name', y='Ladder score', data=last_top10)    icks(rotation='vertical')
plt.title('Bottem 10 Country name')
plt.show()
# 幸福指数相关性热⼒图
def Heat_map():
cor = ()
sql添加check约束
plt.figure(figsize=(8,8))
plt.title('Correlation between numeric variables', fontsize=18)
sns.heatmap(cor, square=True, cmap="vlag", annot=True, linewidths=0.5)    plt.show()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。