mirror of
https://github.com/nprasad2077/nbaStats.git
synced 2026-11-05 17:45:48 +00:00
usage rates histogram view and url
This commit is contained in:
1 parent
7a2392ea5e
commit
2694753d08
2 files changed
+35
-2
No files matched your search
+2
-1
@@ -1,5 +1,5 @@
|
||||
from django.urls import path
|
||||
from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect, OverallDBStats, TopScorersbySeasonTotalsList, TopAssistsBySeasonTotalsList, TopReboundsbySeasonTotalsList, TopStealsbySeasonTotalsList, TopBlocksbySeasonTotalsList, TopDefensiveReboundsBySeasonTotalsList, TopOffensiveReboundsbySeasonTotalsList
|
||||
from .views import PlayerDataList, PlayerDataByTeamList, PlayerDataBySeasonList, PlayerDataByNameList, TopScorersbySeasonList, TopScorersbySeasonListPlayoffs, ThreeTwoTopPointTrends, TopAssistsBySeasonList, TopReboundsBySeasonList, TopBlocksBySeasonList, TopStealsBySeasonList, TopOffensiveReboundsBySeasonList, TopDefensiveReboundsBySeasonList, PointsPerGameHistogramBySeasonList, TopPtsScatterPlotData, TopPtsScatterPlotDataFast, TopPtsScatterPlotDataFast2018, Top20ScorersPost2009WS, Top20ScorersPost2014WS, Top20ScorersPost2018WS, TopAssistsBySeasonListPlayoffs, Top25ScorersPostSeasonPlayoffs, TopPtsScatterPlotDataFastSelect, OverallDBStats, TopScorersbySeasonTotalsList, TopAssistsBySeasonTotalsList, TopReboundsbySeasonTotalsList, TopStealsbySeasonTotalsList, TopBlocksbySeasonTotalsList, TopDefensiveReboundsBySeasonTotalsList, TopOffensiveReboundsbySeasonTotalsList, UsageRateHistogramView
|
||||
|
||||
urlpatterns = [
|
||||
path('api/playerdata/', PlayerDataList.as_view(), name='playerdata_list'),
|
||||
@@ -24,6 +24,7 @@ urlpatterns = [
|
||||
path('api/top_rebounds_defensive/<int:season>/', TopDefensiveReboundsBySeasonList.as_view(), name='top_rebounds_DRB'),
|
||||
path('api/top_rebounds_defensive/totals/<int:season>/', TopDefensiveReboundsBySeasonTotalsList.as_view(), name='top_rebounds_DRB_totals'),
|
||||
path('api/points_per_game_histogram/<int:season>/', PointsPerGameHistogramBySeasonList.as_view(), name='points_per_game_histogram'),
|
||||
path('api/usage_histogram/<int:season>/', UsageRateHistogramView.as_view(), name='usage_histogram'),
|
||||
path('api/top_pts_scatter_plot/', TopPtsScatterPlotData.as_view(), name='top_pts_scatter_plot'),
|
||||
path('api/top_pts_scatter_plot_fast/', TopPtsScatterPlotDataFast.as_view(), name='top_pts_scatter_plot_fast'),
|
||||
path('api/top_pts_scatter_plot_fast_2018/', TopPtsScatterPlotDataFast2018.as_view(), name='top_pts_scatter_plot_fast_2018'),
|
||||
|
||||
+33
-1
@@ -245,8 +245,40 @@ class PointsPerGameHistogramBySeasonList(generics.ListAPIView):
|
||||
|
||||
return histogram_list
|
||||
|
||||
# USG Percent Histogram
|
||||
|
||||
# Scatter Plot - Top 30 players by total PTS across all seasons in DB. Then map those 30 players on a scatter plot against total PTS/WS for each season.
|
||||
class UsageRateHistogramView(generics.ListAPIView):
|
||||
serializer_class = HistogramDataSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
season = self.kwargs['season']
|
||||
queryset = PlayerAdvancedData.objects.filter(season=season)
|
||||
|
||||
# Get the usage rates for each player, ignoring null values
|
||||
usage_rate_list = [player.usg_percent for player in queryset if player.usg_percent is not None]
|
||||
|
||||
# Define histogram bins for usage rate ranges
|
||||
bin_ranges = [i * 5 for i in range(21)] # 0, 5, 10, ..., 100
|
||||
histogram_data = Counter()
|
||||
|
||||
# Fill the histogram with data
|
||||
for usage_rate in usage_rate_list:
|
||||
bin_index = next(
|
||||
(i for i, r in enumerate(bin_ranges) if r >= usage_rate), -1)
|
||||
if bin_index >= 1:
|
||||
bin_label = f"{bin_ranges[bin_index - 1]}-{bin_ranges[bin_index]}"
|
||||
histogram_data[bin_label] += 1
|
||||
|
||||
# Convert histogram_data to list of dicts for serialization
|
||||
histogram_list = [{"range": k, "count": v}
|
||||
for k, v in histogram_data.items()]
|
||||
|
||||
return histogram_list
|
||||
|
||||
|
||||
|
||||
|
||||
# Scatter Plot - Top 25 players by total PTS across all seasons in DB. Then map those 25 players on a scatter plot against total PTS/WS for each season.
|
||||
|
||||
class TopPtsScatterPlotData(APIView):
|
||||
def get(self, request, *args, **kwargs):
|
||||
|
||||
Reference in new issue
Block a user