预测足球世界杯比赛

目录

1. 背景

2. 输入特征选择

3. 数据集-特征获取

4. 数据预处理

5. 模型训练与选择

6. 预测

7. 2018后新的数据

8. 个人总结


1. 背景

        在这四年一次的足球世界杯即将来临之际,公司将要举办一个模型预测与人工预测的比赛活动,虽然本人不是足球迷也不是伪球迷,但是绷着对机器学习的热爱,决定凭借自己匮乏的足球知识建个模型参加这个比赛。无论成败与否,享受其中即可。

2. 输入特征选择

        特征的选择通俗的讲就是选择什么特征最能影响足球比赛。能我让这个不懂足球的人想到的是下面这些特征:

1. 明星队员:比如梅西,C罗,姆巴佩,内马尔等等。但是这些球员的实力怎么衡量呢?还有就是不断有新的球星出现,是不是这个特征有点多?再有这个数据是不是好得到呢?

2. 主客场:听说篮球这个特征很重要,但是世界杯就只有主办方一家是主场,其它是客场。

3. 裁判:有些比赛裁判可能偏向一个国家队,这就操成该罚球的不罚,但是裁判这个特征随机性太强,每届都在变,而且你也不知道他偏向哪个队。

4. 教练:感觉也是特征,而且比较稳定。但是怎么衡量呢

5.球队状态:影响是有,但感觉无从下手的样子。

6. 观众:历史数据应该还有办法,但是新比赛拿不到。

最后就是球队了,如果球队的整体实力比较高,哪怕是没有明星队员,结果也不差,而且球队的整体实力其实暗含教练,球员和明星球员的这几个特征的。综合这些特征个方面的因素和提取的难易程度,最后选择了球队名字作为输入特征。

3. 数据集-特征获取

        由于比赛来的太突然,就几天就要开始比赛当时,所以带着侥幸的心理在网上搜了一下是不是有相关的数据集,果然有很多。最终选择Kaggle里下载已经整理好的数据而且还是免费的。

下载数据集

下载后数据如下:

FIFA World Cup | Kaggle

百度网盘也可以下载

链接: https://pan.baidu.com/s/1ky-73f9YTe2o1YI1TyMt9A 提取码: 1pt6

4. 数据预处理

        虽然Kaggle这里提供的数据有很多特征,但是我们只需要三个特征,模型的输入是两个队的名字,模型的输出是结果(2:Home Team队胜,1:平,0:Away Team 队胜)。

数据预处理大致的步骤是

  1. 从Excel里加载数据;
  2. 根据每队的得分生成新队列Winning_Team;
  3. 去掉和本次世界杯无关的国家队;
  4. 去掉无关的特征;
  5. winning_team数值化;
  6. 保持新的Excel;

代码如下:

import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
import joblib
root_path = "models"#load data
results = pd.read_csv('datasets/WorldCupMatches.csv', encoding='gbk')#Adding goal difference and establishing who is the winner
winner = []
for i in range (len(results['Home Team Name'])):if results ['Home Team Goals'][i] > results['Away Team Goals'][i]:winner.append(results['Home Team Name'][i])elif results['Home Team Goals'][i] < results ['Away Team Goals'][i]:winner.append(results['Away Team Name'][i])else:winner.append('Draw')
results['winning_team'] = winner#adding goal difference column
results['goal_difference'] = np.absolute(results['Home Team Goals'] - results['Away Team Goals'])# narrowing to team patcipating in the world cup, totally there are 32 football teams in 2022
worldcup_teams = ['Qatar','Germany','Denmark', 'Brazil','France','Belgium', 'Serbia','Spain','Croatia', 'Switzerland', 'England','Netherlands', 'Argentina',' Iran','Korea Republic','Saudi Arabia', 'Japan', 'Uruguay','Ecuador','Canada','Senegal', 'Poland', 'Portugal','Tunisia',  'Morocco','Cameroon','USA','Mexico','Wales','Australia','Costa Rica', 'Ghana']
df_teams_home = results[results['Home Team Name'].isin(worldcup_teams)]
df_teams_away = results[results['Away Team Name'].isin(worldcup_teams)]
df_teams = pd.concat((df_teams_home, df_teams_away))
df_teams.drop_duplicates()
df_teams.count()#dropping columns that wll not affect matchoutcomesdf_teams_new =df_teams[[ 'Home Team Name','Away Team Name','winning_team']]
print(df_teams_new.head()  )#Building the model
#the prediction label: The winning_team column will show "2" if the home team has won, "1" if it was a tie, and "0" if the away team has won.df_teams_new = df_teams_new.reset_index(drop=True)
df_teams_new.loc[df_teams_new.winning_team == df_teams_new['Home Team Name'],'winning_team']=2
df_teams_new.loc[df_teams_new.winning_team == 'Draw', 'winning_team']=1
df_teams_new.loc[df_teams_new.winning_team == df_teams_new['Away Team Name'], 'winning_team']=0print(df_teams_new.count()   )
df_teams_new.to_csv('datasets/raw_train_data.csv', encoding='gbk', index =False)

数据预处理后会在datasets文件下生成raw_train_data.csv,里面的数据如下:

保持数据集大致步骤如下:

  1. 加载数据集;
  2. 利用DictVectorizer对两个队伍的名字进行数字化;
  3. 保持数据集方便后面训练模型用。

代码如下:

df_teams_new = pd.read_csv('datasets/raw_train_data.csv', encoding='gbk')feature = df_teams_new[['Home Team Name', 'Away Team Name']]
vec = DictVectorizer(sparse=False)print(feature.to_dict(orient='records'))
X = vec.fit_transform(feature.to_dict(orient='records'))
X = X.astype('int')
print("===")
print(vec.get_feature_names())
print(vec.feature_names_)
y = df_teams_new[['winning_team']]
y = y.astype('int')
print(X.shape)
print(y.shape)
joblib.dump(vec, root_path + "/vec.joblib")
np.savez('datasets/train_data', x=X, y=y)

以上代码会在datasets文件下生成train_data.npz文件

数据预处理的完整代码如下:

import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
import joblib
root_path = "models"def reprocess_dataset():#load dataresults = pd.read_csv('datasets/WorldCupMatches.csv', encoding='gbk')#Adding goal difference and establishing who is the winnerwinner = []for i in range (len(results['Home Team Name'])):if results ['Home Team Goals'][i] > results['Away Team Goals'][i]:winner.append(results['Home Team Name'][i])elif results['Home Team Goals'][i] < results ['Away Team Goals'][i]:winner.append(results['Away Team Name'][i])else:winner.append('Draw')results['winning_team'] = winner#adding goal difference columnresults['goal_difference'] = np.absolute(results['Home Team Goals'] - results['Away Team Goals'])# narrowing to team patcipating in the world cup, totally there are 32 football teams in 2022worldcup_teams = ['Qatar','Germany','Denmark', 'Brazil','France','Belgium', 'Serbia','Spain','Croatia', 'Switzerland', 'England','Netherlands', 'Argentina',' Iran','Korea Republic','Saudi Arabia', 'Japan', 'Uruguay','Ecuador','Canada','Senegal', 'Poland', 'Portugal','Tunisia',  'Morocco','Cameroon','USA','Mexico','Wales','Australia','Costa Rica', 'Ghana']df_teams_home = results[results['Home Team Name'].isin(worldcup_teams)]df_teams_away = results[results['Away Team Name'].isin(worldcup_teams)]df_teams = pd.concat((df_teams_home, df_teams_away))df_teams.drop_duplicates()df_teams.count()#dropping columns that wll not affect matchoutcomesdf_teams_new =df_teams[[ 'Home Team Name','Away Team Name','winning_team']]print(df_teams_new.head()  )#Building the model#the prediction label: The winning_team column will show "2" if the home team has won, "1" if it was a tie, and "0" if the away team has won.df_teams_new = df_teams_new.reset_index(drop=True)df_teams_new.loc[df_teams_new.winning_team == df_teams_new['Home Team Name'],'winning_team']=2df_teams_new.loc[df_teams_new.winning_team == 'Draw', 'winning_team']=1df_teams_new.loc[df_teams_new.winning_team == df_teams_new['Away Team Name'], 'winning_team']=0print(df_teams_new.count()   )df_teams_new.to_csv('datasets/raw_train_data.csv', encoding='gbk', index =False)def save_dataset():df_teams_new = pd.read_csv('datasets/raw_train_data.csv', encoding='gbk')feature = df_teams_new[[ 'Home Team Name','Away Team Name']]vec = DictVectorizer(sparse=False)print(feature.to_dict(orient='records'))X =vec.fit_transform(feature.to_dict(orient='records'))X = X.astype('int')print("===")print(vec.get_feature_names())print(vec.feature_names_)y = df_teams_new[[ 'winning_team']]y =y.astype('int')print(X.shape)print(y.shape)joblib.dump(vec, root_path+"/vec.joblib")np.savez('datasets/train_data', x= X, y = y)if __name__ == '__main__':reprocess_dataset()save_dataset();

reprocess_dataset() 方法是数据进行预处理。

save_dataset() 方法是对预处理过的数据,进行向量化。

由于这个数据集里没有2018年后的数据,所以我自己又手动收集了一下2018后新的数据。可以把这个新的数据集和上面预处理后数据集合在一起。

2018年和2022年的数据可以下面百度网盘下载
链接: https://pan.baidu.com/s/1fe_z6kRXB8T69wx1HBxO8g 提取码: o55d

5. 模型训练与选择

用不同的传统机器学习方法进行训练,训练后的模型比较

ModelTraining AccuracyTest Accuracy
Logistic Regression(逻辑回归)67.40%61.60%
SVM(支持向量机)67.30%62.70%
Naive Bayes(朴素贝叶斯)65.50%63.80%
Random Forest(随机森林)90.80%65.50%
XGB(X (Extreme) GBoosted)75.30%62.00%

可以看到随机森林模型在测试集上准确率最高,所以我们可以用它来做预测。

下面是完整训练代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.ticker as ticker
import matplotlib.ticker as plticker
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import svm
import sklearn as sklearn
from sklearn.feature_extraction import DictVectorizer
from sklearn.naive_bayes import  MultinomialNB
from sklearn.ensemble import RandomForestClassifier
import joblib
from sklearn.metrics import classification_report
from xgboost import XGBClassifier
from sklearn.metrics import confusion_matrixroot_path = "models"def get_dataset():train_data = np.load('datasets/train_data.npz')return train_datadef train_by_LogisticRegression(train_data):X = train_data['x']y = train_data['y']# Separate train and test setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)logreg = LogisticRegression()logreg.fit(X_train, y_train)joblib.dump(logreg, root_path+'/LogisticRegression_model.joblib')score = logreg.score(X_train, y_train)score2 = logreg.score(X_test, y_test)print("LogisticRegression Training set accuracy: ", '%.3f'%(score))print("LogisticRegression Test set accuracy: ", '%.3f'%(score2))def train_by_svm(train_data):X = train_data['x']y = train_data['y']# Separate train and test setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)model = svm.SVC(kernel='linear', verbose=True, probability=True)model.fit(X_train, y_train)joblib.dump(model, root_path+'/svm_model.joblib')score = model.score(X_train, y_train)score2 = model.score(X_test, y_test)print("SVM Training set accuracy: ", '%.3f' % (score))print("SVM Test set accuracy: ", '%.3f' % (score2))def train_by_naive_bayes(train_data):X = train_data['x']y = train_data['y']# Separate train and test setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)model = MultinomialNB()model.fit(X_train, y_train)joblib.dump(model, root_path+'/naive_bayes_model.joblib')score = model.score(X_train, y_train)score2 = model.score(X_test, y_test)print("naive_bayes Training set accuracy: ", '%.3f' % (score))print("naive_bayes Test set accuracy: ", '%.3f' % (score2))def train_by_random_forest(train_data):X = train_data['x']y = train_data['y']# Separate train and test setsX_train = Xy_train = yX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)model = RandomForestClassifier(criterion='gini', max_features='sqrt')model.fit(X_train, y_train)joblib.dump(model, root_path+'/random_forest_model.joblib')score = model.score(X_train, y_train)score2 = model.score(X_test, y_test)print("random forest Training set accuracy: ", '%.3f' % (score))print("random forest Test set accuracy: ", '%.3f' % (score2))def train_by_xgb(train_data):X = train_data['x']y = train_data['y']# Separate train and test setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)model = XGBClassifier(use_label_encoder=False)model.fit(X_train, y_train)joblib.dump(model, root_path+'/xgb_model.joblib')score = model.score(X_train, y_train)score2 = model.score(X_test, y_test)print("xgb Training set accuracy: ", '%.3f' % (score))print("xgb Test set accuracy: ", '%.3f' % (score2))y_pred = model.predict(X_test)report = classification_report(y_test, y_pred, output_dict=True)# show_confusion_matrix(y_test, y_pred)print(report)def show_confusion_matrix(y_true, y_pred, pic_name = "confusion_matrix"):confusion = confusion_matrix(y_true=y_true, y_pred=y_pred)print(confusion)sns.heatmap(confusion, annot=True, cmap= 'Blues', xticklabels=['0','1','2'], yticklabels=['0','1','2'], fmt = '.20g')plt.xlabel('Predicted class')plt.ylabel('Actual Class')plt.title(pic_name)# plt.savefig('pic/' + pic_name)plt.show()if __name__ == '__main__':train_data = get_dataset()train_by_LogisticRegression(train_data)train_by_svm(train_data)train_by_naive_bayes(train_data)train_by_random_forest(train_data)train_by_xgb(train_data)

执行上面代码会生成下面文件:

6. 预测

预测逻辑大致如下:

  1. 输入两个队伍名字
  2. 对队伍名字进行验证
  3. 加载模型
  4. 利用模型进行预测并输出每个的概率

 执行下面预测代码,结果是Ecuador胜于Qatar, 英国队胜于伊朗队。

[2]
[[0.05       0.22033333 0.72966667]]
Probability of  Ecuador  winning: 0.730
Probability of Draw: 0.220
Probability of  Qatar  winning: 0.050
[2]
[[0.02342857 0.21770455 0.75886688]]
Probability of  England  winning: 0.759
Probability of Draw: 0.218
Probability of   Iran  winning: 0.023

预测的完整代码如下:

import joblibworldcup_teams = ['Qatar','Germany','Denmark', 'Brazil','France','Belgium', 'Serbia','Spain','Croatia', 'Switzerland', 'England','Netherlands', 'Argentina',' Iran','Korea Republic','Saudi Arabia', 'Japan', 'Uruguay','Ecuador','Canada','Senegal', 'Poland', 'Portugal','Tunisia',  'Morocco','Cameroon','USA','Mexico','Wales','Australia','Costa Rica', 'Ghana']
root_path = "models"
def verify_team_name(team_name):for worldcup_team in worldcup_teams:if team_name==worldcup_team:return Truereturn Falsedef predict(model_dir =root_path+'/LogisticRegression_model.joblib', team_a='France', team_b = 'Mexico'):if not verify_team_name(team_a):print(team_a, ' is not correct')returnif not verify_team_name(team_b) :print(team_b, ' is not correct')returnlogreg = joblib.load(model_dir)input_x = [{'Home Team Name': team_a, 'Away Team Name': team_b}]vec = joblib.load(root_path+"/vec.joblib")input_x = vec.transform(input_x)result = logreg.predict(input_x)print(result)result1 = logreg.predict_proba(input_x)print(result1)print('Probability of ',team_a , ' winning:', '%.3f'%result1[0][2])print('Probability of Draw:', '%.3f' % result1[0][1])print('Probability of ', team_b, ' winning:', '%.3f' % result1[0][0])if __name__ == '__main__':team_a = 'Ecuador'team_b = 'Qatar'predict('models/random_forest_model.joblib', team_a, team_b)team_a = 'England'team_b = ' Iran'predict('models/random_forest_model.joblib', team_a, team_b)

7. 2018后新的数据

2018年和2022年的数据可以下面百度网盘下载
链接: https://pan.baidu.com/s/1fe_z6kRXB8T69wx1HBxO8g 提取码: o55d

8. 个人总结

        特征少的可怜,如果可以加一些球员的信息和状态的特征会更好,数据也相对太少,如果可以把欧洲杯,亚洲杯,非洲杯和美洲杯的每届数据加入进来就好了。数据有点旧(1930年后所有数据),这也是没办法,因为没有其它数据了。

        如果预测的是比分,是不是也可以用分类做呢?比如最多可以踢入4个球每个队,当然像西班牙队可以踢进去7个球太罕见了,我们可以忽略不计,哈哈。那就是25个类别。效果会不会好呢?有待检验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63175.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式openwrt平台(mt7688)上使用讯飞语音服务

还记得第一次接触嵌入式开发&#xff0c;boss拿着一块widora的mt7688板子让我去开发openwrt环境下的使用讯飞语音技术的应用。我的天啊&#xff0c;我第一次接触&#xff0c;这是什么东西。因此&#xff0c;我这个新手走了不少弯路&#xff0c;但是最后成功使程序跑起来了&…

16K个大语言模型的进化树;81个在线可玩的AI游戏;AI提示工程的终极指南;音频Transformers课程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; LLM 进化树升级版&#xff01;清晰展示 15821 个大语言模型的关系 这张进化图来自于论文 「On the Origin of LLMs: An Evolutionary …

如何做好 PPT(蔡学镛演讲稿)

2019独角兽企业重金招聘Python工程师标准>>> 四大困扰,一个对策;告别损伤,呈现完美!你所需要的 【PPT 修复精华】,都在这一瓶 "学镛小黑瓶"。万千讲师的挚爱,你 值得拥有。 大家好,我是蔡学镛,我今天的讲题是「可卡因+海洛因: 超亢奋的 PPT 设计…

英文演讲稿(3-5分钟)

为什么80%的码农都做不了架构师&#xff1f;>>> 大学生英语演讲稿I believe in our future I believe in our future Honorable Judges, fellow students: Good afternoon! Recently, ther is a heated debate in our society. The college students are the benef…

意图识别与槽填充(填槽的概念)

转载于&#xff1a;https://blog.csdn.net/u010159842/article/details/80759428 原文链接&#xff1a;http://t.cn/RE0FkgD 跳槽&#xff0c;吐槽&#xff0c;匹诺曹都听过&#xff0c;这个填槽&#xff0c;emmmm&#xff0c;黑人问号脸&#xff1f;&#xff1f;&#xff1f;…

人才“选用育留”难?做好这步,人力资源或许比你想象的更轻松

人才作为企业生存和发展最重要的资源之一&#xff0c;如何发现、使用、培养、留住优秀人才是所有企业人力资源管理的关键。但在实际场景当中&#xff0c;“招聘流程长造成人才流失”、“员工招聘不精准、效率低”、“员工培育周期长、成本高”、“优秀人才留不住”等问题正深深…

偷偷爆料下国内比较大型的 IT 软件外包公司名单(2023 最新版!)

点关注公众号&#xff0c;回复“1024”获取2TB学习资源&#xff01; 根据网上的资料&#xff0c;整理出来的一份国内软件外包公司的名单。 找工作的同学都要看看&#xff0c;根据自身的情况&#xff0c;学历低的 、没有经验的&#xff0c;可以先到外包公司试试&#xff0c;或者…

明星热图|欧阳娜娜、张艺兴代言新品牌;吴彦祖、高圆圆、全智贤演绎服装新品;关晓彤、欧阳靖、张云龙出席品牌活动...

图片是企业新闻传播的要素之一&#xff0c;优秀的图片使读者能更直观地了解新闻内容。“一周热图”栏目为大家展示每周通过美通社发布的最具代表性的企业新闻图片。 服装 潮流运动品牌FILA FUSION正式签约首位品牌代言人欧阳娜娜&#xff0c;这位出生于艺术世家的00后&#xff…

剧版浪姐口碑爆了!数据告诉你,《三十而已》凭什么这么戳中观众的心

▼ 更多精彩推荐&#xff0c;请关注我们 ▼ 作者&#xff1a;Mika 数据&#xff1a;真达 后期&#xff1a;泽龙 【导读】 最近《三十而已》这部剧频频霸占微博热搜&#xff0c;今天我们就来聊一聊。 Python技术部分请直接看第四部分。公众号后台&#xff0c;回复关键字“三十…

数据告诉你,剧版“浪姐“-《三十而已》凭什么这么戳中观众的心

CDA数据分析师 出品 作者&#xff1a;Mika 数据&#xff1a;真达 后期&#xff1a;泽龙 【导读】 最近《三十而已》这部剧频频霸占微博热搜&#xff0c;今天我们就来聊一聊。 Python技术部分请直接看第四部分。 Show me data&#xff0c;用数据说话 今天我们聊一聊 《三…

数据告诉你,剧版浪姐-《三十而已》凭什么这么戳中观众的心

image CDA数据分析师 出品 作者&#xff1a;Mika 数据&#xff1a;<typo id"typo-29" data-origin"真达" ignoretag"true">真达</typo> 后期&#xff1a;泽龙 【导读】 最近《三十而已》这部剧频频霸占微博热搜&#xff0c;今天我们…

剧版浪姐口碑爆了!数据告诉你《三十而已》凭什么火

来源&#xff1a;CDA数据分析师 本文约3100字&#xff0c;建议阅读8分钟。 最近《三十而已》这部剧频频霸占微博热搜&#xff0c;今天我们就来聊一聊。 《乘风破浪的姐姐》已成为这个夏天最火爆的话题&#xff0c;前有国综"浪姐"高歌猛进&#xff0c;后有这部剧版&qu…

广汽三菱携手M-SPACE重塑车主关系,奕歌燃情版潮现广州车展

北京时间11月20日,2020年广州车展隆重启幕。一时间,来自全球各地的顶尖汽车品牌齐聚一堂,为观众来一场史无前例的视觉盛宴。在令人眼花缭乱的车型当中,广汽三菱携手旗下多款车型亮相,成为全场的焦点。并正式发布以客户为中心的“M-SPACE”数字化服务平台以及2021款奕歌燃情版,通…

【CV】国内外优秀的计算机视觉团队汇总|最新版

文章来源于极市平台&#xff0c;作者CV开发者都爱看的 国内高校研究团队 北京 清华大学&#xff1a;龙明盛&#xff0c;黄高&#xff0c;艾海舟&#xff0c;张长水(Big eyes laboratory 大眼睛实验室)&#xff0c;丁贵广(Multimedia Intelligence Group)&#xff0c;朱文武&…

关于电影的HTML网页设计-威海影视网站首页-电影主题HTM5网页设计作业成品

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录 一、网页介绍一…

国内外优秀的计算机视觉团队汇总|最新版

国内高校研究团队 北京 清华大学&#xff1a;龙明盛&#xff0c;黄高&#xff0c;艾海舟&#xff0c;张长水(Big eyes laboratory 大眼睛实验室)&#xff0c;丁贵广(Multimedia Intelligence Group)&#xff0c;朱文武&#xff0c;朱军&#xff0c;苏航&#xff0c;鲁继文&…

DBeaver Ultimate Edtion 23 Multilingual (macOS, Linux, Windows) - 通用数据库工具,现已集成 ChatGPT

请访问原文链接&#xff1a;https://sysin.org/blog/dbeaver-23/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 通用数据库工具 DBeaver 是一个通用的数据库管理工具&#xff0c;适用于需要以专业方式处理数据的每个人。…

chatgpt赋能python:Python如何实现将数据结果导出

Python如何实现将数据结果导出 在Python编程中&#xff0c;我们经常需要将代码运行的结果导出保存在文件中&#xff0c;或在其他程序中使用。下面我们将介绍Python中几种将数据结果导出的方法。 方法一&#xff1a;使用文件输出 使用Python内置的open方法来打印输出的结果到…

chatgpt赋能python:Python如何生成表格——探索多种方法

Python如何生成表格——探索多种方法 表格是我们在日常生活中经常需要使用的一种数据展示形式&#xff0c;无论是在学术报告、商业汇报或者个人记录中&#xff0c;都十分实用。Python作为一门高效、简洁和易用的编程语言&#xff0c;也具有生成表格的能力。本文将探索Python生…

ThinkPHP 6 模板导出Excel

PhpOffice\PhpSpreadsheet安装和基本的导入导出本文不在介绍&#xff0c;主要用来实现用设定好样式的模板&#xff0c;填充数据&#xff0c;导出Excel文件功能。 相关文章&#xff1a; 《ThinkPHP6 excel 导入功能完整实现》 《ThinkPHP6 excel 导出功能完整实现》 《ThinkP…