163Python数据分析师课程考核项目04

多场景下的图表可视化表达

excel数据概览

运动员信息

运动员CP热度

题目1

2016年奥运运动员数据,数据格式为xlsx,分3个sheet
1、分男女分别分析运动员的身高分布,并制作图表,数据为“奥运运动员数据.xlsx,sheet → 运动员信息”
要求:
① 制作分布密度图② 计算出男女平均身高,并绘制辅助线表示
提示:
① 可视化制图方法 → sns.distplot()② 辅助线制图方法 → plt.axvline()③ 分男女分别筛选数据并制作图表④ 不需要创建函数

题目1思路

1. 创建工作路径,查看读取数据。
2. 提取身高信息,提取性别和身高,去除空值。
3. 根据男女分类,reset_index()重新设置标签
4. 计算平均值
5. 绘制分布密度图,创建绘图区域,设置图表大小,绘制平均身高辅助线。

题目1 代码
# 1. 创建工作路径,查看读取数据。
import os
os.chdir('C:\\Users\\WQQ\\Desktop\\163data\\项目题目和项目答案\\考核项目04_多场景下的图表可视化表达\\')
df=pd.read_excel('奥运运动员数据.xlsx',sheetname='运动员信息')
df_len=len(df)
df_col=df.columns.tolist()
# 2. 提取身高信息,提取性别和身高,去除空值。
data_height=pd.DataFrame(df['gender'],df['height'])
data_height.dropna(inplace=True)
# 3. 根据男女分类,reset_index()重新设置标签
data_male=data_height.groupby(['gender']).get_group('男').reset_index()
data_famale=data_height.groupby(['gender']).get_group('女').reset_index()
# 4. 计算平均值
male_mean=data_male['height'].mean()
famale_mean=data_famale['height'].mean()
print('男性运动员平均身高:%i,\n女性运动员平均身高:%i' %(male_mean,famale_mean))
5. 绘制分布密度图,创建绘图区域,设置图表大小,绘制平均身高辅助线。
plt.figure(figsize=(6,4))
sns.distplot(data_male['height'],hist=False,kde=True,rug=True,color='blue',axlabel='运动员身高',label='男性运动员身高分布')
sns.distplot(data_famale['height'],hist=False,kde=True,rug=True,color='red',axlabel='运动员身高',abel='女性运动员身高分布')
plt.grid()
plt.axvline(male_mean,color='blue',linestyle=':')
plt.text(male_mean+2,0.005,'男性运动员身高平均值:%i' %male_mean,color='blue')
plt.axvline(famale_mean,color='red',linestyle='--')
plt.text(famale_mean,0.003,'女性运动员身高平均值:%i' %famale_mean,color='red')
题目1成果

题目2

2、综合指标判断运动员的身材,并找到TOP8的运动员,并制作图表,数据为“奥运运动员数据.xlsx,sheet → 运动员信息”
要求:① 针对不同指标,绘制面积堆叠图② TOP8的运动员,绘制雷达图表示
提示:① 四个指标评判运动员身材,并加权平均
a. BMI 指数(BMI =体重kg ÷ 身高m
2,详细信息可百度查询)→ 越接近22分数越高
b. 腿长/身高 指数 → 数据筛选,只选取小于0.7的数据,越大分数越高
c. 臂展/身高 指数 → 数据筛选,只选取大于0.7的数据,比值越接近1分数越高
d. 年龄 指数 → 年龄越小分数越高
对上述abcd指标分别标准化得到n1,n2,n3,n4(划分到0-1的分值), 最后评分: finalscore = (n1 + n2 + n3 + n4)/4
② 制作堆叠面积图,data.plot.area()
③ 雷达图需要构建子图 + for循环遍历得到
**

题目2思路

1.创建工作路径,查看读取数据;
2.选出需要进行处理的数据,计算四个指标:BMI,筛选出腿长/身高<0.7,筛选出臂展/身高>0.7,年龄指数;
3. 参数评估:BMI 越接近22分数越高;腿长/身高 越大分数越高;臂展/身高比值越接近1分数越高;年龄指数年龄越小分数越高;
4. 对上述指标分别标准化得到n1,n2,n3,n4,划分到0-1的分值;
5. 最后评分: finalscore = (n1 + n2 + n3 + n4)/4;
6. 排序设定index;
7. 绘制面积图。
8. 筛选出top08的运动员
9. 分别绘制每个运动员的评分雷达图

题目2 代码
# 1.创建工作路径,查看读取数据
import os
os.chdir('C:\\Users\\WQQ\\Desktop\\163data\\项目题目和项目答案\\考核项目04_多场景下的图表可视化表达\\')
df=pd.read_excel('奥运运动员数据.xlsx',sheetname='运动员信息')
df_len=len(df)
df_col=df.columns.tolist()
# 2.选出需要进行处理的数据,计算四个指标:BMI,筛选出腿长/身高<0.7,筛选出臂展/身高>0.7,年龄指数
data=df[['name','birthday','height','arm','leg','weight','age']]
data.dropna(inplace=True)
data02=data.reset_index()
data02['BMI']=data02['weight']/(data02['height']/100)**2
data02['leg/height']=data02['leg']/data02['height']
data02['arm/height']=data02['arm']/data02['height']
data02['age']
data01=data02[['name','BMI','leg/height','arm/height','age']]
data01=data01[data01['leg/height']<0.7]
data01=data01[data01['arm/height']>0.7]
# 3. 参数评估:BMI 越接近22分数越高;腿长/身高 越大分数越高;臂展/身高  比值越接近1分数越高;年龄 指数 年龄越小分数越高
data01['reBMI']=np.abs(data01['BMI']-22)
data01['releg/height']=data01['leg/height']
data01['rearm/height']=np.abs(data01['arm/height']-1)
data01['reage']=data01['age']
# 4. 对上述abcd指标分别标准化得到n1,n2,n3,n4,划分到0-1的分值)
data01['BMI_sta']=(data01['reBMI'].max()-data01['reBMI'])/(data01['reBMI'].max()-data01['reBMI'].min())
data01['leg/h_sta']=(data01['releg/height']-data01['releg/height'].min())/(data01['releg/height'].max()-data01['releg/height'].min())
data01['arm/h_sta']=(data01['rearm/height'].max()-data01['rearm/height'])/(data01['rearm/height'].max()-data01['rearm/height'].min())
data01['age_sta']=(data01['reage'].max()-data01['reage'])/(data01['reage'].max()-data01['reage'].min())
# 5. 最后评分: finalscore = (n1 + n2 + n3 + n4)/4
data01['final']=(data01['BMI_sta']+data01['leg/h_sta']+data01['arm/h_sta']+data01['age_sta'])/4
# 6. 排序设定index
plt.figure(figsize=(10,6))
data01.sort_values(by='final',inplace=True,ascending=False)
data01.reset_index(inplace=True)
# 7. 绘制面积图
data01[['BMI_sta','leg/h_sta','arm/h_sta','age_sta']].plot.area(colormap='autumn',alpha=0.3,figsize=(10,6))
plt.ylim([0,4])
plt.grid()
# 8. 筛选出top08的运动员
datatop08=data01[:8]
datatop08=datatop08[['name','BMI_sta','leg/h_sta','arm/h_sta','age_sta','final']]
fig=plt.figure(figsize=(16,8))
plt.subplots_adjust(wspace=0.35,hspace=0.5)
# 9. 分别绘制每个运动员的评分雷达图
n = 0
for i in datatop08['name'].tolist():n += 1axi = plt.subplot(2,4,n, projection = 'polar')datai = datatop08[['BMI_sta','leg/h_sta','arm/h_sta','age_sta']][datatop08['name']==i].Tscorei = datatop08['final'][datatop08['name']==i]angles = np.linspace(0, 2*np.pi, 4, endpoint=False)plt.polar(angles, datai, 'o-', linewidth=1)axi.fill(angles,datai,alpha=0.3)axi.set_thetagrids(np.arange(0.0, 360.0, 90),['BMI','腿长/身高','臂长/身高','年龄'])axi.set_rgrids(np.arange(0.2,1.5,0.2),'--')plt.title('Top%i %s: %.3f\n' %(n,i,scorei))
题目成果
运动员身体指标面积图

top08运动员的身体指标雷达图

题目3

根据运动员CP数据,分析出CP综合热度,通过python处理数据并导出,在Gephi中绘制图表,数据为“奥运运动员数据.xlsx,sheet → 运动员CP热度”
要求:① 用python计算出综合热度指标② 用Gephi绘制关系可视化图表
提示:① 三个指标评判运动员CP综合热度,并加权平均
a. cp微博数量 → 数量越多分数越高
b. cp微博话题阅读量 → 阅读量越多分数越高
c. B站cp视频播放量 → 播放量越大分数越高
对上述abcd指标分别标准化得到n1,n2,n3,n4(划分到0-1的分值),最后评分: finalscore = n1
0.5 + n2
0.3 + n3
0.2
② Gephi中布局模式选择“ForceAtlas2”
③ Gephi中通过模块化计算,给关联结果做分组,并且以此分组设定点颜色***

题目3思路

1. 加载读取数据
2. 数据清洗:
3. 计算综合指标:
a. cp微博数量 → 数量越多分数越高
b. cp微博话题阅读量 → 阅读量越多分数越高
c. B站cp视频播放量 → 播放量越大分数越高
4. 最后评分: finalscore = n1
0.5 + n2
0.3 + n3
0.2
5. 数据排序设定标签
6. 导出excel文件***

题目3 代码
# 1. 加载读取数据
import os
os.chdir('C:\\Users\\WQQ\\Desktop\\163data\\项目题目和项目答案\\考核项目04_多场景下的图表可视化表达\\')
df=pd.read_excel('奥运运动员数据.xlsx',sheetname='运动员CP热度')
df_len=len(df)
df_col=df.columns.tolist()
# 2. 数据清洗:
df.replace([np.nan,'无数据'],0,inplace=True)
# 3. 计算综合指标
# a. cp微博数量 → 数量越多分数越高#
# b. cp微博话题阅读量 → 阅读量越多分数越高
# c. B站cp视频播放量 → 播放量越大分数越高
# 4. 最后评分: finalscore = n1*0.5 + n2*0.3 + n3*0.2
df['微博排行']=(df['cp微博数量']-df['cp微博数量'].min())/(df['cp微博数量'].max()-df['cp微博数量'].min())
df['阅读排行']=(df['cp微博话题阅读量']-df['cp微博话题阅读量'].min())/(df['cp微博话题阅读量'].max()-df['cp微博话题阅读量'].min())
df['B站排行']=(df['B站cp视频播放量']-df['B站cp视频播放量'].min())/(df['B站cp视频播放量'].max()-df['B站cp视频播放量'].min())
df['final']=df['微博排行']*0.5+df['阅读排行']*0.3+df['B站排行']*0.2
# 5. 数据排序设定标签
df.sort_values('final',inplace=True,ascending=False)
df.reset_index(inplace=True)
# 6. 导出excel文件
result=df[['p1','p2','final']]
writer=pd.ExcelWriter('CP_sort.xlsx')
result.to_excel(writer,'sheet1')
writer.save
题目成果

根据‘箭头’大小能看粗,福原爱-张怡宁,林丹-李宗伟,孙杨-朴泰恒,宁泽涛-孙燕姿啊,傅园慧-孙杨,田亮-叶一西,以上这几对CP最热门。

163Python数据分析师课程考核项目04相关推荐

  1. 618终极剁手攻略,收割全套数据分析师课程!

    (文末有超大大大福利) 小伙砸~小菇娘,恭喜你!!! 你即将收获2018年最最最最最大的福利! 你是否曾为没有更好的学习机会而夜不能寐 你是否曾为没有更好的学习资源而郁郁寡欢 你是否曾为没有更好的学习 ...

  2. 大数据训练营课程大纲项目简介

    文章目录 课程大纲 模块一:大数据的"三驾马车":HDFS.MapReduce/YARN.HBase 模块二:大数据时代数据仓库实践:Hive 模块三:更快的数据处理引擎:Spar ...

  3. CDA数据分析师课程分享

    CDA数据分析师 经管之家CDA数据分析师,北风网数据分析大师 链接: http://pan.baidu.com/s/1mhPOYt6 密码: aeds 如果连接失效,可以加我扣发你,17546406 ...

  4. 数据分析师课程(ArcGIS按属性选数据、各种数据分析案例)

    选择属性数据 1.打开属性表选择 2.点击远则,按属性选择.名称Like'重庆%'选择以重庆开头的数据,%重庆%,可以选择包含重庆的数据. 3.选择,按位置选,将属性数据与栅格数据相交的选出来 4.按 ...

  5. 成都python数据分析师培训_python数据分析师

    企业想要在竞争激烈的市场中胜出,决策的速度和反应的效率尤为重要.根据调查显示,75%的企业在面临拟定策略时,常常无法获得实时且有根据的决策信息.什么样的数据.要透过什么样的方法,才能且实时的转变成决策 ...

  6. 转型到数据分析师(我的一些心得体会)

    只要有坚强的持久心,一个庸俗平凡的人也会有成功的一天. 数据说·梦想季 转型到数据分析师 Transformation data analysis ●●●● 作者:红星 简介:中国商业联合会数据分析专 ...

  7. 公司重金求数据分析师:为什么90%的公司都需要它?

    全世界只有3.14 % 的人关注了 青少年数学之旅 混迹互联网的同学们,或多或少都对"数据分析师"这一职业有所耳闻.即使你不认识任何数据分析师,也一定看到过这类研究报告或者文章: ...

  8. 系统分析师资料_如何成为一名数据分析师?

    随着大数据的逐渐普及,数据分析越来越普遍应用到各个职能岗位,也就是说,不论你在哪个行业,都会需要数据分析技能.数据岗位的薪资水涨船高,成为目前最有潜力的职业选择之一. 根据猎聘发布<猎聘2019 ...

  9. udacity开源的数据_评论:Udacity数据分析师纳米学位计划

    udacity开源的数据 by David Venturi 大卫·文图里(David Venturi) 评论:Udacity数据分析师纳米学位计划 (Review: Udacity Data Anal ...

最新文章

  1. UML之交互图(协作图和顺序图)
  2. windows批量创建用户
  3. 博客园官方 NuGet镜像上线试运行
  4. java之通过FileChannel实现文件复制
  5. em模型补缺失值_基于EM算法数据单变量缺失处理方法研究
  6. 隐隐约约 听 RazorEngine 在 那里 据说 生成代码 很 美。
  7. nginx+keepalived高可用性负载均衡
  8. 事件内核对象 CreateEvent
  9. java azure blobs sas_使用 Java 的 Azure 存储示例 | Azure Docs
  10. java runnable 启动_Java多线程:线程的创建与启动
  11. PHP substr(),mb_substr(),mb_strcut()比较
  12. C# 中返回星期的函数
  13. 爬取百度迁徙2021年春运迁徙数据(仅省份级别)
  14. ios Segue传值
  15. 空间直线与球面的相交算法
  16. 从街舞导师王一博.fans机舱生日趴,看“线上应援”新形式
  17. MATLAB学习笔记(注释超详细)
  18. python算闰年和平年的天数_如何判断闰年和平年的方法有哪些-百度经验
  19. VS2019c++配置GDAL和HDF库新手入门
  20. LaTeX入门必备视频教程

热门文章

  1. 从NNLM到Bert,NLP语言模型发展概述
  2. 147-155 李游前端精品课程笔记
  3. 一年交易2000亿 闲鱼到底有多膨胀?
  4. 从三星到摩托罗拉、华为,“万元手机”还能存在多久?
  5. Android手机应用接口大全
  6. Python 使用pandas设置整列单元格格式
  7. 共轭传热拓扑优化算例分享
  8. 【JAVA修行之路】--新手村入门(根据自己的学习进度更新)
  9. 阿里的招商团长,行业认知。
  10. android onresume 焦点,Android – 是否有一个回调,在onResume()之后被调用?