# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
list0 = [['19', '阿森纳', 32], ['20', '阿斯顿维拉', 27], ['24', '切尔西', 33], ['25', '利物浦', 33], ['26', '曼彻斯特城', 33],
['27', '曼彻斯特联', 33], ['28', '纽卡斯尔联', 26], ['29', '富勒姆', 28], ['31', '埃弗顿', 27], ['33', '托特纳姆热刺', 31],
['35', '水晶宫', 26], ['46', '伯恩利', 26], ['49', '诺丁汉森林', 29], ['51', '谢菲尔德联队', 28], ['52', '狼队', 27],
['60', '布莱顿', 28], ['62', '西汉姆联', 29], ['348', '伯恩茅斯', 27], ['365', '布伦特福德', 27], ['372', '卢顿', 28]]
data = pd.DataFrame(columns=['比赛', '时间', '主队', '比分', '客队', '犯规', '黄牌', '红牌', '控球率', '射门(射正)', '传球(成功)', '传球成功率',
'过人次数', '角球', '越位', '头球(成功)', '救球', '铲球', '射门不中', '射门被挡', '界外球', '评分', '总胜', '总平',
'总负', '总胜率', '总犯规', '总黄牌', '总红牌', '总控球率', '总射门(射正)', '总传球(成功)', '总传球成功率', '总过人次数',
'总角球', '总越位', '总头球(成功)', '总救球', '总铲球', '总射门不中', '总射门被挡', '总界外球', '总评分'])
for i in list0:
df = pd.read_csv(f'{i[1]}球赛信息.csv', header=None)
df.columns = ['比赛', '时间', '主队', '比分', '客队', '犯规', '黄牌', '红牌', '控球率', '射门(射正)', '传球(成功)', '传球成功率', '过人次数',
'角球', '越位', '头球(成功)', '救球', '铲球', '射门不中', '射门被挡', '界外球', '评分', '总胜', '总平', '总负', '总胜率',
'总犯规', '总黄牌', '总红牌', '总控球率', '总射门(射正)', '总传球(成功)', '总传球成功率', '总过人次数', '总角球', '总越位',
'总头球(成功)', '总救球', '总铲球', '总射门不中', '总射门被挡', '总界外球', '总评分']
data = pd.concat([data, df], axis=0)
# 选择英超比赛数据
data = data[data['比赛'] == '英超']
# 数据类型转换
numeric_columns = ['犯规', '黄牌', '红牌', '角球', '越位', '过人次数', '救球', '铲球', '射门不中', '射门被挡', '界外球', '总胜', '总平', '总负',
'总犯规', '总黄牌', '总红牌', '总过人次数', '总角球', '总越位', '总救球', '总铲球', '总射门不中', '总射门被挡', '总界外球']
data[numeric_columns] = data[numeric_columns].astype(int)
# 处理日期范围
start_date = pd.to_datetime('2022-01-01')
end_date = pd.to_datetime('2023-12-31')
data['时间'] = pd.to_datetime(data['时间'])
filtered_data = data[(data['时间'] >= start_date) & (data['时间'] <= end_date)]
# 提取得分、射门和传球相关列数据
filtered_data[['射门']] = filtered_data['射门(射正)'].str.extract('(\d+)').astype(int)
filtered_data[['射正']] = filtered_data['射门(射正)'].str.extract('\((\d+)\)').astype(int)
filtered_data[['传球']] = filtered_data['传球(成功)'].str.extract('(\d+)').astype(int)
filtered_data[['传球成功']] = filtered_data['传球(成功)'].str.extract('\((\d+)\)').astype(int)
filtered_data[['头球']] = filtered_data['头球(成功)'].str.extract('(\d+)').astype(int)
filtered_data[['头球成功']] = filtered_data['头球(成功)'].str.extract('\((\d+)\)').astype(int)
filtered_data[['总射门']] = filtered_data['总射门(射正)'].str.extract('(\d+)').astype(int)
filtered_data[['总射正']] = filtered_data['总射门(射正)'].str.extract('\((\d+)\)').astype(int)
filtered_data['总传球成功率']= filtered_data['总传球成功率'].str.replace('%','').astype(float)
filtered_data['总控球率'] = filtered_data['总控球率'].str.replace('%','').astype(float)
filtered_data['总胜率'] = filtered_data['总胜率'].str.replace('%','').astype(float)
filtered_data['传球成功率'] = filtered_data['传球成功率'].str.replace('%','').astype(float)
filtered_data['控球率'] = filtered_data['控球率'].str.replace('%','').astype(float)
filtered_data['主队得分'] = filtered_data['比分'].str.split('-',expand=True)[0].astype(int)
filtered_data['客队得分'] = filtered_data['比分'].str.split('-',expand=True)[1].astype(int)
# 删除多余的列
filtered_data.drop(['比分', '射门(射正)', '传球(成功)', '头球(成功)', '总射门(射正)', '总传球(成功)', '总头球(成功)'], axis=1, inplace=True)
df_1=pd.read_csv('队员详细信息.csv',header=None)
df_1.columns = ['比赛','时间','主队','比分','客队','球员进球','球员点球','球员乌龙','球员黄牌','球员红牌','效力球队','位置','国籍','预计身价','合同截止','首发次数/进球','替补次数/进球','助攻','链接']
data2 = df_1[df_1['比赛'] == '英超']
data2['时间'] = pd.to_datetime(data2['时间'])
data2['球员首发次数']=data2['首发次数/进球'].str.split('/',expand=True)[0]
data2['球员首发进球']=data2['首发次数/进球'].str.split('/',expand=True)[1]
data2['球员替补次数']=data2['替补次数/进球'].str.split('/',expand=True)[0]
data2['球员替补进球']=data2['替补次数/进球'].str.split('/',expand=True)[1]
data2.drop(['比分','国籍','预计身价','合同截止','链接','首发次数/进球','替补次数/进球'],axis=1,inplace=True)
data2.fillna('0',axis=0,inplace=True)
# 数据类型转换
data2['助攻'] = data2['助攻'].str.replace('-','0').astype(int)
data2['球员首发次数'] = data2['球员首发次数'].str.replace('-','0').astype(int)
data2['球员首发进球'] = data2['球员首发进球'].str.replace('-','0').astype(int)
data2['球员替补次数'] = data2['球员替补次数'].str.replace('-','0').astype(int)
data2['球员替补进球'] = data2['球员替补进球'].str.replace('-','0').astype(int)
# 横向合并两个DataFrame
merged_data = pd.merge(data2, filtered_data, on=['比赛', '时间', '主队', '客队'], how='outer')
merged_data['主队输赢']=None
for k in range(merged_data.shape[0]):
if merged_data.iloc[k,56]>merged_data.iloc[k,57]:
merged_data.iloc[k, 58]=1
elif merged_data.iloc[k,56]<merged_data.iloc[k,57]:
merged_data.iloc[k, 58] = 0
else:
merged_data.iloc[k, 58] = 2
merged_data['主队输赢']=merged_data['主队输赢'].astype('int')
print(merged_data.columns.tolist())
print(merged_data.info())
#
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
merged_data.dropna(axis=0,inplace=True)
# 计算特征之间的相关系数
correlation_matrix = merged_data[['主队输赢','球员进球', '球员点球', '球员乌龙', '球员黄牌', '球员红牌', '助攻', '球员首发次数', '球员首发进球', '球员替补次数', '球员替补进球', '犯规', '黄牌', '红牌', '控球率', '传球成功率', '过人次数', '角球', '越位', '救球', '铲球', '射门不中', '射门被挡', '界外球', '评分', '总胜', '总平', '总负', '总胜率', '总犯规', '总黄牌', '总红牌', '总控球率', '总传球成功率', '总过人次数', '总角球', '总越位', '总救球', '总铲球', '总射门不中', '总射门被挡', '总界外球', '总评分', '射门', '射正', '传球', '传球成功', '头球', '头球成功', '总射门', '总射正', '主队得分', '客队得分']].corr()
# 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('特征相关系数热力图')
plt.show()
print(correlation_matrix['主队输赢'])
# 选择需要进行灰色关联分析的列
columns_to_analyze =['球员进球', '球员点球', '球员乌龙', '球员黄牌', '球员红牌', '助攻', '球员首发次数', '球�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
球赛预测.zip (45个子文件)
球赛预测
富勒姆队员信息.csv 4KB
布莱顿球赛信息.csv 3.38MB
托特纳姆热刺队员信息.csv 5KB
纽卡斯尔联队员信息.csv 5KB
切尔西球赛信息.csv 4.85MB
数据处理.py 12KB
伯恩利队员信息.csv 5KB
伯恩茅斯队员信息.csv 4KB
布伦特福德球赛信息.csv 3.26MB
埃弗顿队员信息.csv 4KB
阿斯顿维拉球赛信息.csv 3.3MB
狼队队员信息.csv 4KB
利物浦球赛信息.csv 4.84MB
曼彻斯特联队员信息.csv 5KB
卢顿球赛信息.csv 3.27MB
西汉姆联队员信息.csv 3KB
队员详细信息.csv 1.51MB
利物浦队员信息.csv 4KB
阿森纳球赛信息.csv 4.48MB
曼彻斯特联球赛信息.csv 5.02MB
水晶宫球赛信息.csv 2.96MB
采集球员数据.py 6KB
布莱顿队员信息.csv 5KB
诺丁汉森林队员信息.csv 5KB
伯恩利球赛信息.csv 3MB
切尔西队员信息.csv 5KB
埃弗顿球赛信息.csv 3.2MB
狼队球赛信息.csv 3.12MB
阿森纳队员信息.csv 4KB
托特纳姆热刺球赛信息.csv 4.42MB
谢菲尔德联队球赛信息.csv 3.44MB
曼彻斯特城球赛信息.csv 4.94MB
卢顿队员信息.csv 4KB
西汉姆联球赛信息.csv 3.66MB
诺丁汉森林球赛信息.csv 3.82MB
曼彻斯特城队员信息.csv 4KB
纽卡斯尔联球赛信息.csv 3.07MB
布伦特福德队员信息.csv 5KB
队员详情采集.py 6KB
富勒姆球赛信息.csv 3.41MB
采集球队数据.py 7KB
水晶宫队员信息.csv 4KB
谢菲尔德联队队员信息.csv 5KB
阿斯顿维拉队员信息.csv 4KB
伯恩茅斯球赛信息.csv 3.23MB
共 45 条
- 1
资源评论
python编程狮
- 粉丝: 875
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功