# 导入数据分析包:numpy(科学计算)、pandas(处理数据框)和 matplotlib/seaborn(可视化)
import numpy as np
import pandas as pd
#表示调用Matplotlib子类pyplot绘图,并as重命名为plt,方便代码调用。
import matplotlib.pyplot as plt
import seaborn as sns
# 导入数据:世界杯成绩汇总表
worldcup_chengji = pd.read_csv('WorldCupsSummary.csv')
#print(worldcup_chengji)
# 统一"Germany FR"和"Germany" 归一化
worldcup_chengji = worldcup_chengji.replace(['Germany FR'],'Germany')
#print(worldcup_chengji)
# 设置全局绘图参数
font = {
'weight': 'bold',
'size': '20'}#字体为加粗、大小为20
plt.rc('font', **font)
fig, ax= plt.subplots(figsize=(12,8)) #figure图片大小
#世界杯参加人数绘制:
plt.title('Attendance Number') #表名称
worldcup_chengji.plot.scatter(x='Attendance',c="red",y='Year',ax=ax,zorder=2,s=100) #绘制散点图 设置标签获取表格参加人数与年份,设置s散点大小
#去掉上下左右边框
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
#设置坐标轴标签 例如年份和人数 year
#ax.set_ylabel(None)
#ax.set_xlabel(None)
#ax.grid()添加网格线。颜色为绿
ax.grid(visible=True,color='blue')
#设置x与y主刻度
ax.tick_params(axis='both',which='major',labelsize=15,colors='gold')
ax.set_yticks(worldcup_chengji['Year'].tolist())#获取表格年份信息并设置y刻度
ax.set_xticks([500000,1000000,1500000,2000000,2500000,3000000,3500000,4000000])#设置x的刻度
#禁止科学计数
ax.ticklabel_format(style='plain')
#设置绘图区四个边框线上的的刻度线是否显示,此处不显示刻度
#plt.tick_params(bottom=False, left=False)
#plt.show()#打印在屏幕
plt.savefig('观众人数散点图')#表格的储存
fig, ax= plt.subplots(figsize=(12,8))
plt.title('Goals Number')
worldcup_chengji.plot.scatter(x='GoalsScored',y='Year',ax=ax,zorder=2,s=100)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.set_ylabel(None)
ax.set_xlabel(None)
ax.grid(visible=True)
ax.tick_params(axis='both', which='major', labelsize=15)
ax.set_yticks(worldcup_chengji['Year'].tolist())
ax.set_xticks([50,75,100,125,150,175,200])
plt.tick_params(bottom=False, left=False)
#plt.savefig("进球总数散点图")
plt.show()
#国家冠军数
palette=['yellow','red','red','blue','purple','yellow','yellow','purple'] #调色板
fig, ax= plt.subplots(figsize=(16,8))#设置画布大小
plt.title('总冠军数')
sns.countplot(x = worldcup_chengji['Winner'], palette=palette,linewidth=2.5, edgecolor=".2")#调用成绩汇总表绘图
#去除上下左右边框
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
#设置x,y轴标签
ax.set_ylabel("冠军数",fontsize=14)
ax.set_xlabel("国家",fontsize=14)
plt.rcParams['font.sans-serif']=["SimHei"]#防止中文乱码
#plt.tick_params(labelleft=False, left=False,labelsize=14)
#提取并显示条形图中的条形值
for i in ax.containers:
plt.bar_label(i, fontsize=15)
#plt.savefig("获得冠军的国家")
plt.show()
#夺冠队伍所在大洲分布
index1 = worldcup_chengji['WinnerContinent'].value_counts().index.tolist()#标签文本,value_count用于数据表的计数
value1 = worldcup_chengji['WinnerContinent'].value_counts().values.tolist()#饼图的比例,格式为数组或占比的序列,决定扇形面积
palette = ['yellow', 'blue']
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(16, 8))
sns.countplot(ax=ax[0], x=worldcup_chengji['WinnerContinent'], palette=palette, linewidth=2.5, edgecolor=".2")
ax[0].set_title('Champion Continent Numbers')
ax[0].spines['right'].set_visible(False)
ax[0].spines['top'].set_visible(False)
ax[0].spines['left'].set_visible(False)
ax[0].spines['bottom'].set_visible(False)
ax[0].set_ylabel(None)
ax[0].set_xlabel(None)
ax[0].tick_params(labelleft=False, left=False, labelsize=14)
for i in ax[0].containers:
ax[0].bar_label(i, fontsize=15);
plt.pie(value1, labels=index1, autopct='%.0f%%', colors=['blue', 'yellow'],
wedgeprops={"edgecolor": "0", 'linewidth': 2.5,
'antialiased': True}, startangle=90, textprops={'fontsize': 20})
ax[1].set_title('Champion Continent Ratios', size=20, weight='bold');
#plt.imsave("夺冠大洲分布")
plt.show()
# 东道主夺冠概率
worldcup_chengji['HostWinner']= worldcup_chengji['HostCountry']== worldcup_chengji['Winner']#将winner和hostcountry作比较,赋值ture和false
index = worldcup_chengji['HostWinner'].value_counts().index.tolist()#标签文本,value_count用于数据表的计数
value = worldcup_chengji['HostWinner'].value_counts().values.tolist()#饼图的比例,格式为数组或占比的序列,决定扇形面积
palette = ['blue', 'yellow']
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(16, 8))
sns.countplot(ax=ax[0], x=worldcup_chengji['HostWinner'], palette=palette, linewidth=2.5, edgecolor=".2")
ax[0].set_title('Champion Number', size=20, weight='bold')
ax[0].spines['right'].set_visible(False)
ax[0].spines['top'].set_visible(False)
ax[0].spines['left'].set_visible(False)
ax[0].spines['bottom'].set_visible(False)
ax[0].set_ylabel(None)
ax[0].set_xlabel(None)
ax[0].tick_params(labelleft=False, left=False, labelsize=25)
for i in ax[0].containers:
ax[0].bar_label(i, fontsize=15);
plt.pie(value, labels=index, autopct='%.0f%%', colors=['blue', 'yellow'],
wedgeprops={"edgecolor": "0", 'linewidth': 2.5,
'antialiased': True}, startangle=90, textprops={'fontsize': 20})
ax[1].set_title('Champion Probability', size=20, weight='bold');
#plt.savefig("东道主夺冠概率")
plt.show()
# 导入数据:比赛信息表
matches = pd.read_csv('WorldCupMatches.csv')
#print(matches)
# 中国队参加的比赛
#matches[(matches['Away Team Name'] == 'China PR') | (matches['Home Team Name'] == 'China PR')]
# 统一“联邦德国”和“德国”
matches = matches.replace(['Germany FR'],'Germany')
# 类型转化
matches['Home Team Goals']= matches['Home Team Goals'].astype(int)#astype()函数可用于转化dateframe某一列的数据类型
matches['Away Team Goals']= matches['Away Team Goals'].astype(int)
# 格式化比赛结果,如 3-2
matches['result'] = matches['Home Team Goals'].astype(str)+"-"+matches['Away Team Goals'].astype(str)
#比赛进球数分析
matches['total_goals'] = matches['Home Team Goals'] + matches['Away Team Goals']#总进球数
matches['VS'] = matches['Home Team Name'] + " VS " + matches['Away Team Name']#哪两个队比赛
top10_goals = matches.sort_values(by='total_goals', ascending=False)[:10]#排序函数,将total_goals排序
#print(top10_goals)
top10_goals['VS'] = top10_goals['Home Team Name'] + " VS " + top10_goals['Away Team Name']
top10_goals['total_goals_str'] = top10_goals['total_goals'].astype(str) + " goals scored" #总进球数
top10_goals['Home Team Goals'] = top10_goals['Home Team Goals'].astype(int)#主队进球数
top10_goals['Away Team Goals'] = top10_goals['Away Team Goals'].astype(int)#客队进球数
top10_goals['result'] = top10_goals['Home Team Goals'].astype(str) + "-" + top10_goals['Away Team Goals'].astype(str)#主客队的比分
plt.figure(figsize=(30, 30))
ax = sns.barplot(y=top10_goals['VS'], x=top10_goals['total_goals'])#绘制柱状图,调用vs数据并显示在y轴上
sns.despine(right=True)
plt.ylabel('Match',fontsize=25)
plt.xlabel('Goals',fontsize=25)
plt.yticks(size=15)
plt.xticks(size=15)
plt.title('Top10 Goals Match', size=20)
for i, s in enumerate("Stadium " + top10_goals['Stadium'] + ", Date: " + top10_goals['Datetime'] + "\
没有合适的资源?快使用搜索试试~ 我知道了~
基于python的世界杯数据可视化分析,高分课程设计+源代码+详细注释
共12个文件
png:7个
csv:3个
gitignore:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 62 浏览量
2024-04-20
02:30:52
上传
评论
收藏 1.19MB ZIP 举报
温馨提示
<项目介绍> 基于python的世界杯数据可视化分析,高分课程设计+源代码+详细注释 东道主夺冠概率.png 夺冠大洲分布.png 比赛总进球数排名.png 获得冠军的国家.png 观众人数散点图.png 进球总数散点图.png - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
-python--main.zip (12个子文件)
-python--main
shiyan.png 57KB
main.py 8KB
WorldCupsSummary.csv 2KB
进球总数散点图.png 58KB
获得冠军的国家.png 32KB
WorldCupMatches.csv 165KB
夺冠大洲分布.png 50KB
观众人数散点图.png 57KB
.gitignore 270B
WorldCupPlayers.csv 2.05MB
比赛总进球数排名.png 850KB
东道主夺冠概率.png 44KB
共 12 条
- 1
资源评论
奋斗奋斗再奋斗的ajie
- 粉丝: 597
- 资源: 2284
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于java开发的密码解锁APP,包含手势密码解锁+指纹密码解锁+源码+项目界面展示(毕业设计&课程设计&项目开发)
- 基于单片机的智能窗帘设计
- 基于STM32F103C8T6+LCD1602+MCP6S28的8通道模拟可编程增益放大器Proteus仿真
- 5G RAN NR TDD单用户峰值吞吐率计算过程.pptx
- 基于Objective-C开发的手势密码解锁和面容解锁(代码简洁高效通俗易懂)+源码+开发文档+源码解析(毕业设计&课程设计)
- LangChain学习之 Question And Answer的操作附带数据文件
- linux常用命令大全.zip
- CATIA入门操作案例-正八边异形带孔凸台绘制,等距点绘制正多边形,凸台绘制
- 大型代码语言模型的项目级提示生成pdf
- 纸片战争The War of paper.sb3
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功