Python数据分析

数据分析西甲联赛,积分榜动态显示

2019-03-13  本文已影响2人  f5065e26181b

文章首发于公众号:1024程序开发者社区

作为一名资深球迷和二把刀程序员,一直想将数据分析用于足球比赛分析。年前有段时间,30年GDP动态变化图着实让人看着心潮澎湃。近期,五大联赛都进入了争冠的冲刺期,因此以西甲为例,看一看动态积分排名和数据分析在足球联赛中的应用。
按照惯例,先上图:


动态显示.gif

文章主要分三个部分:

  1. 数据获取;
  2. 动态显示程序的使用;
  3. 其他西甲数据分析。

/1/数据获取

网络上实时的联赛积分数据很容易找到,但是每一轮的历史数据记录极少,千辛万苦,找到“一比分”网站,链接:https://data.13322.com/league-31/scjf.html。网页截图为:

网页截图
对网页进行分析,必须通过点击选择“轮次”才能获取该轮积分数据,这就使传统的爬虫方法失效了。
image
因此,调用“selenium”模拟浏览器进行登录。
browser = webdriver.Chrome()
wait = WebDriverWait(browser ,10)

通过CSS_SELECTOR定位触发轮次数据变化的位置,如图:


image

定义触发语句,并获取当页数据:

page = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,lst[i])))
page.click()
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#Standings')))
html1 = browser.page_source

通过BeautifulSoup对数据进行定位和提取:

for item in soup.find(id='Standings').find_all('tr'):
   result_cache = []
   for td in item.find_all('td'):
      result_cache.append(td.get_text().replace("‘", "").replace("’", ""))
   result_cache[15] = i+1

最后调用xlwt,将结果数据写入XLS文件中:

row = len(result)
col = len(result[0])
workbook = xlwt.Workbook('ascii')
worksheet = workbook.add_sheet('my_worksheet1')
for x in range(row):
   for y in range(col):
      worksheet.write(x, y, result[x][y])
workbook.save(r'西甲.xls')

/2/动态数据显示

本文所使用动态排名数据可视化项目是jannchie建立的开源项目,基于D3.js。能够将历史数据排名转化为动态柱状图图表。网址为:
https://github.com/Jannchie/Historical-ranking-data-visualization-based-on-d3.js

image
使用方法,只需打开src目录下的bargraph.html。然后点击页面中间的选择文件按钮,接着选择csv格式的数据文件,便可以看到可视化的结果。
example有四个参数,name,type,value,date。根据爬取数据进行整理即可:
image
通过定义config.js和visual.js对显示参数进行调整。如添加图标路径:
image
最终结果如开头所示。

/3/其他数据分析

除做出积分动态变化图外,还对其他数据进行分析。

  1. 联赛胜率排行top10


    image

    巴萨不说了,皇马和马竞的差别就在于防守。
    2.联赛进球排行top10


    image
    3.联赛失球排行top10
    image

    对于武球王来说,好消息是球队很能进球,坏消息是丢球也不少,目前收支还不平衡,期待武磊更好的表现。


    image
    4.积分变化和球队人事调整的关系
    image
    image
    从排名来看,洛佩特吉下课确实是战绩不佳,而救火队长索拉里上任后,球队战绩有明显好转,然而近期一波三连败,将国王杯、欧冠葬送,联赛夺冠也几乎不可能。这对于皇马这样的顶级豪门来说是不能接受的,因此,齐玄宗又回来了:
    image

(图片来源:懂球帝APP)

关注公众号,回复“积分动态排名”获取代码和数据。

关注公众号,送海量学习资源~

image
上一篇下一篇

猜你喜欢

热点阅读