首页 > 解决方案 > 尝试在 python 中构建折线图 - 使用基于一列的过滤器和线条的平均值

问题描述

所以我有我从 Draftkings 中提取的数据——实况篮球比分,显示原始传播、实时传播、传播方差、一半和剩余时间。我有实时脚本提取这些信息,然后将其附加到一个数据帧中。我想使用这个包含所有信息的数据框,以便在玩游戏时运行分析。所以我想看看剩余时间的线变化。我的问题是,当同时进行两场比赛时(通常是在体育赛事中),我希望能够快速过滤我试图查看线路差异的比赛。我还希望能够过滤比赛所在的半场,所以我确定我看到的是上半场或下半场的数据。我真的不知道该怎么做。我还需要确保我取的是线方差的平均值。由于我的数据是从 Draftkings 中提取的,当有商业休息时间或中场休息时,我会同时提取数据,所以当我第一次尝试做这个时,我得到了一个总和或我的线路差异。我将在下面展示我一直在使用的代码。感谢大家!

from datetime import date
import pandas as pd
import matplotlib.pyplot as plt
      
today = date.today()
    
path_to_file = f'C:/Users/X/Desktop/Gambling Data/Consolidated_Data_{today}.csv'
data = pd.read_csv(path_to_file, encoding='utf-8')
data.drop(data.columns[[0, 1]], axis=1, inplace=True) 
print(data)
    
# plot data
fig, ax = plt.subplots(figsize=(15,7))
# use unstack()
data.groupby(['Time Remaining','Team']).count()['Line Variance'].unstack().plot(ax=ax)
ax.set_xlabel('Time Remaining', fontsize = 14)
# set axis labels
ax.set_ylabel('Line Variance', fontsize = 14)
# set markers
markers = ['o', 's', 'd', '^', 'v']
for i, line in enumerate(ax.get_lines()):
    line.set_marker(markers[i])
    
# update legend
ax.legend(ax.get_lines(), data['Team'], loc='best', ncol=2)
    
plt.tight_layout()

在此处输入图像描述

标签: pythonmatplotlib

解决方案


推荐阅读