python数据分析案例(Python项目实例)

 2025-08-10 16:12:01  阅读 376  评论 0

摘要:特别说明:为了保证网站数据的使用,以下所有关于网站地址信息全部隐藏!项目需求获取X球Xapp中利物浦球队3年的数据进行分析。分析内容:主客场平均进球数S主客场平均失球数赛季进球数、丢球数、平均进球数、平均丢球数年度进球数、传球成功率、犯规数、黄牌数、红牌数相关工

特别说明:为了保证网站数据的使用,以下所有关于网站地址信息全部隐藏!

项目需求

获取X球Xapp中利物浦球队3年的数据进行分析。分析内容:

主客场平均进球数S主客场平均失球数赛季进球数、丢球数、平均进球数、平均丢球数年度进球数、传球成功率、犯规数、黄牌数、红牌数

相关工具

抓包工具Fiddler夜游神模拟器(安卓)VsCode编辑器Python3.8.5编辑器Python需要的包requests(自带)json(自带)openpyxl(pandas生成excel需要)pandas(数据分析)plotly(数据分析)

数据抓取

使用Fiddler+夜游神模拟器分析系统,找出关键性url,相关配置及抓取方法再次不做说明!

3年内所有技术统计数据获取及分析

获取数据

url地址:

ID对应年份:14931 2019-202017139 2020-202118252 2021-2022

代码实例

获取数据代码-保存到本地
 def lwp_jstj():
     # ! 利物浦的技术统计
     # ? 2021-2022的技术统计
     url = 'https://xxx.xxx.xxx/soccer/biz/dqd/team/statistic/50000516?app=dqd&lang=zh-cn&season_id=18252'
     r_resopnse = get(url=url, headers=headers)
     with open('C://lwp_2021_2022.json', 'w', encoding='utf-8') as f:
         json.dump(r_resopnse.json(), f, ensure_ascii=False)
     # ? 2020-2021的技术统计
     url = 'https://xxx.xxx.xxx/soccer/biz/dqd/team/statistic/50000516?app=dqd&lang=zh-cn&season_id=17139'
     r_resopnse = get(url=url, headers=headers)
     with open('C://lwp_2020_2021.json', 'w', encoding='utf-8') as f:
         json.dump(r_resopnse.json(), f, ensure_ascii=False)
     # ? 2019-2020的技术统计
     url = 'https://xxx.xxx.xxx/soccer/biz/dqd/team/statistic/50000516?app=dqd&lang=zh-cn&season_id=14931'
     r_resopnse = get(url=url, headers=headers)
     with open('C://lwp_2019_2020.json', 'w', encoding='utf-8') as f:
         json.dump(r_resopnse.json(), f, ensure_ascii=False)
     print('利物浦的技术统计')
提取关键数据,保存为excel文件
 def lwp_jstj_to_excel():
     # ! 读取利物浦技术统计数据保存excel文件
     name_list = ['lwp_2019_2020.json','lwp_2020_2021.json','lwp_2021_2022.json']
     jq = []
     kq = []
     fg = []
     y_p = []
     r_p = []
     for i in name_list:
         with open(f'C:/Users/Administrator/Desktop/dqd/lwp/{i}','r',encoding='utf-8') as f:
             obj = json.load(f)
             # ? 进球数
             jq.append(obj['statistics']['attack'][0]['number']) 
             # ? 传球成功率
             kq.append(obj['statistics']['organize'][1]['number']) 
             # ? 犯规
             fg.append(obj['statistics']['discipline'][0]['number'])
             # ? 黄牌
             y_p.append(obj['statistics']['discipline'][1]['number'])
             # ? 红牌
             r_p.append(obj['statistics']['discipline'][2]['number']) 
         df = pd.DataFrame({'进球数':jq,'传球成功率':kq,'犯规':fg,'黄牌':y_p,'红牌':r_p})
         df.insert(loc=0,column='年份',value=pd.Series(['2019-2020','2020-2021','2021-2022']))
         df.to_excel('C:/Users/Administrator/Desktop/dqd/lwp/lwp_jstj.xlsx',index=False)
     print('OK')
数据分析,绘制柱状图
 def lwp_sjfx_num3():
     # ! 分析3个赛季的进球数 传球成功率 犯规数 黄牌数 红牌数
     df = pd.read_excel(r'C:/Users/Administrator/Desktop/dqd/lwp/lwp_jstj.xlsx')
     animals = ['2019-2020年', '2020-2021年', '2021-2022年']
     fig = go.Figure(data=[
         go.Bar(name='进球数', x=animals, y=df['进球数']),
         go.Bar(name='传球成功率', x=animals, y=df['传球成功率']),
         go.Bar(name='犯规数', x=animals, y=df['犯规']),
         go.Bar(name='黄牌数', x=animals, y=df['黄牌']),
         go.Bar(name='红牌书', x=animals, y=df['红牌']),
     ])
     fig.update_layout(barmode='group')
     fig.show()
最后形成的图样如下

3年来所有场次数据获取及分析

获取数据

URL地址

年份对应修改seanson后面对应的值,可以得到相应的数据

代码实例

获取数据,并保存到本地
 def lwp_all_score():
     # ! 所有比赛场次比分。分主客场。胜负
     # ? 2021-2022年数据
     url = 'https://xxx.xxx.xxx/soccer/biz/dqd/team/schedule/50000516?app=dqd&version=284&lang=zh-cn&season=2021-2022'
     r_response = get(url=url, headers=headers)
     with open(r'C:\Users\Administrator\Desktop\dqd\lwp\lwp_all_scorse_2021_2022.json', 'w', encoding='utf-8') as f:
         json.dump(r_response.json(), f, ensure_ascii=False)
     # ? 2020-2021年数据
     url = 'https://xxx.xxx.xxx/soccer/biz/dqd/team/schedule/50000516?app=dqd&version=284&lang=zh-cn&season=2020-2021'
     r_response = get(url=url, headers=headers)
     with open(r'C:\Users\Administrator\Desktop\dqd\lwp\lwp_all_scorse_2020_2021.json', 'w', encoding='utf-8') as f:
         json.dump(r_response.json(), f, ensure_ascii=False)
     # ? 2019-2020年数据
     url = 'https://xxx.xxx.xxx/soccer/biz/dqd/team/schedule/50000516?app=dqd&version=284&lang=zh-cn&season=2019-2020'
     r_response = get(url=url, headers=headers)
     with open(r'C:\Users\Administrator\Desktop\dqd\lwp\lwp_all_scorse_2019_2020.json', 'w', encoding='utf-8') as f:
         json.dump(r_response.json(), f, ensure_ascii=False)
     print('利物浦3年比赛数据保存完毕')
提取关键数据,保存excel文件
 def lwp_all_scorse_to_excel():
     name_list = ['lwp_all_scorse_2019_2020','lwp_all_scorse_2020_2021','lwp_all_scorse_2021_2022']
     df = pd.DataFrame(columns=['team_a','team_b','fs_A','fs_B','score_color'])
     n = 1
     for i in name_list:
         with open(f'C:/Users/Administrator/Desktop/dqd/lwp/{i}' + '.json','r',encoding='utf-8') as f:
             obj = json.load(f)
             for key in obj['data']:
                 team_a = key["team_A_name"]
                 team_b = key["team_B_name"]
                 fs_A = key["fs_A"]
                 fs_B = key["fs_B"]
                 score_color = key["score_color"] 
                 # ! 循环增加一行
                 df.loc[n]=[team_a,team_b,fs_A,fs_B,score_color]
                 n += 1
         df.to_excel(f'C:/Users/Administrator/Desktop/dqd/lwp/{i}' + '.xlsx',index=False)
     print('OK')  
数据分析:三个赛季分别进多少球,丢多少球,平均进球数,平均失球数
 def lwp_sjfx_num1():
     # ! 三个赛季分别的进多少球,丢多少球,平均进球数,平均失球数
     name_list = ['lwp_all_scorse_2019_2020','lwp_all_scorse_2020_2021','lwp_all_scorse_2021_2022']
     jqs_sum = []
     jqs_mean = []
     sqs_sum = []
     sqs_mean = []
     for i in name_list:   
         df = pd.read_excel( f'C:/Users/Administrator/Desktop/dqd/lwp/{i}' + '.xlsx')
         # ? 主场进球和失球统计
         team_a= df[df['team_a']=='利物浦']
         team_b= df[df['team_b']=='利物浦']        
         jqs_sum.append(team_a['fs_A'].sum()+team_b['fs_B'].sum())
         sqs_sum.append(team_a['fs_B'].sum()+team_b['fs_A'].sum())
         # ! int型目前无法保存3位
         jqs_mean.append((team_a['fs_A'].sum()+team_b['fs_B'].sum())/len(df))
         sqs_mean.append((team_a['fs_B'].sum()+team_b['fs_A'].sum())/len(df))
     print(jqs_sum,sqs_sum,jqs_mean,sqs_mean)    
     # ! 折线图
     animals = ['2019-2020年', '2020-2021年', '2021-2022年']
     fig = go.Figure(data=[
         go.Scatter(name='进球数', x=animals, y=jqs_sum),
         go.Scatter(name='丢球数', x=animals, y=sqs_sum),
         go.Scatter(name='平均进球数', x=animals, y=jqs_mean),
         go.Scatter(name='平均失球数', x=animals, y=sqs_mean),
     ])
     fig.show()
数据分析:三个赛季分别的主场平均进球&失球数,客场平均进球&失球数
 def lwp_sjfx_num2():
     # ! 三个赛季分别的主场平均进球&失球数,客场平均进球&失球数
     name_list = ['lwp_all_scorse_2019_2020','lwp_all_scorse_2020_2021','lwp_all_scorse_2021_2022']
     team_a_jqs = []
     team_a_sqs = []
     team_b_jqs = []
     team_b_sqs = []
     for i in name_list:   
         df = pd.read_excel( f'C:/Users/Administrator/Desktop/dqd/lwp/{i}' + '.xlsx')
         # ? 筛选主场
         team_a = df[df.team_a=='利物浦']
         # ? 主场平均进球数 
         # ! round 是保留小数点后2位 float型可以,int型不可以
         team_a_jqs.append(team_a['fs_B'].mean().round(2))
         # ? 主场平均失球数
         team_a_sqs.append(team_a['fs_A'].mean().round(2))
         # ? 筛选客场
         team_b = df[df.team_b=='利物浦']
         # # ? 客场总数
         # len_lwp_team_b = len(lwp_team_b)
         # ? 客场平均进球数
         team_b_jqs.append(team_b['fs_B'].mean().round(2))
         # ? 客场平均失球数
         team_b_sqs.append(team_b['fs_A'].mean().round(2))
     # print(team_a_jqs,team_a_sqs,team_b_jqs,team_b_sqs)
     # ! 折线图
     animals = ['2019-2020年', '2020-2021年', '2021-2022年']
     fig = go.Figure(data=[
         go.Scatter(name='主场平均进球数', x=animals, y=team_a_jqs),
         go.Scatter(name='主场平均失球数', x=animals, y=team_a_sqs),
         go.Scatter(name='客场平均进球数', x=animals, y=team_b_jqs),
         go.Scatter(name='客场平均失球数', x=animals, y=team_b_sqs),
     ])
     fig.show()
图样展示结果

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【python数据分析案例(Python项目实例)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/2054698.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.0352秒, 内存占用1.93 MB, 访问数据库24次

陕ICP备14005772号-15