<jupyter_start><jupyter_text>Milestone 3: <NAME>  How did the Buffalo Sabers and Vancouver Canucks play before and after their Covid-19 outbreaks and is there any correlation?I am a huge hockey fan and am curious to see how the Buffalo Sabers and Vancouver Canucks played after their Covid-19 outbreaks. Both of these teams experianced the most time off due to their outbreaks compared to many other teams and I want to see if that resulted in them playing worse when coming back. A 10 game before and after sample size to will be done to determine this. The Vancouver Canucks had 24 days off and the Buffalo Sabres 14 days off.<jupyter_code>import pandas as pd
data = pd.read_csv("../data/raw/Games - Natural Stat TrickTeam Season Totals - Natural Stat Trick.csv")
data<jupyter_output><empty_output><jupyter_text>Task 1  Conducting an EDA:<jupyter_code>import numpy as np
import matplotlib.pylab as plt
import seaborn as sns

print("How many rows and columns are there:", data.shape)
print("Columns included in this dataset:", data.columns)
data.describe(include='float64').T
data.describe(include='object').T
Histogram = data.hist(bins=10, figsize=(10,10))
boxplotforya = data.boxplot(grid=False, vert=False,fontsize=15)
plt.figure(figsize=(14,12))
sns.heatmap(data.corr(),linewidths=.1,cmap="YlGnBu", annot=True)
plt.yticks(rotation=0);<jupyter_output><empty_output><jupyter_text>Task 2  Analysis Pipline:  In this step, - I dropped the columns of 'CF', 'CA', 'SCF', 'SCA', 'PDO', 'Unnamed: 2' as we don't need them<jupyter_code>df = data.drop(columns =['CF','CA','SCF','SCA','TOI', 'Unnamed: 2'])
df.shape<jupyter_output><empty_output><jupyter_text>In this step for the Vancouver Canucks,- I dropped all the teams except the Vancouver Canucks to create its own dataframe- Reset index to make it easier to drop games that arn't needed - Dropped all of the games that arn't needed. Know we have Vancouvers 10 games before and 10 games after their outbreak- Reset index to make it easier to analyze Vancouvers Games and droped the column it added of 'level_0'- This dataframe gives me the 10 games before the Vancouver Canucks Covid outbreak- This dataframe gives me the 10 games after the Vancouver Canucks Covid outbreak- I then reset the index again for both before and after- Renamed columns to before and after for both<jupyter_code>Canucks = df.drop(data[data.Team.isin(["Arizona Coyotes", "Buffalo Sabres", "Boston Bruins", "Carolina Hurricanes", "Columbus Blue Jackets", "Calgary Flames", "Chicago Blackhawks", "Colorado Avalanche", "Dallas Stars", "Detroit Red Wings", "Florida Panthers", "Los Angeles Kings", "Minnesota Wild", "Nashville Predators", "Pittsburgh Penguins", "San Jose Sharks", "Tampa Bay Lightning", "St Louis Blues", "Vegas Golden Knights", "Edmonton Oilers", "Montreal Canadiens", "New Jersey Devils", "New York Islanders", "New York Rangers", "Ottawa Senators", "Philadelphia Flyers", "Toronto Maple Leafs", "Winnipeg Jets", "Washington Capitals", "Anaheim Ducks"])].index)
Canucks1 = Canucks.reset_index()
Canucks2 = Canucks1.drop(Canucks1.index[0:27]).drop(Canucks1.index[47:56])
Canucks3 = Canucks2.reset_index().drop(columns = "index")
Canucks4 = Canucks3.drop(columns =['level_0'])
CanucksBefore = Canucks4.drop(Canucks3.index[10:20])
CanucksBefore1 = CanucksBefore.reset_index()
CanucksBefore2 = CanucksBefore1.rename(columns={'CF%':"CF% Before",'SCF%':"SCF% Before",'SH%':"SH% Before",'SV%':"SV% Before",'PDO':"PDO Before"}).drop(columns="Team")
CanucksAfter = Canucks4.drop(Canucks3.index[0:10]).drop(Canucks3.index[20:20])
CanucksAfter1 = CanucksAfter.reset_index()
CanucksAfter2 = CanucksAfter1.rename(columns={'CF%':"CF% After",'SCF%':"SCF% After",'SH%':"SH% After",'SV%':"SV% After",'PDO':"PDO After"}).drop(columns="Team")<jupyter_output><empty_output><jupyter_text>In this step for the Vancouver Canucks,- I added the two seperate data frames of the 10 games before and 10 games after to make the visulization process easier<jupyter_code>CanucksBeforeAndAfter = pd.concat([CanucksBefore2,CanucksAfter2], axis=1)<jupyter_output><empty_output><jupyter_text>In this step for the Buffalo Sabres, - I dropped all of the teams except the Buffalo Sabres to create its own dataframe- Reset index to make it easier to drop games that arn't needed for the Buffalo Sabres- Dropped all of the games that arn't needed. Know we have Buffalos 10 games before and 10 games after their outbreak- This dataframe gives me the 10 games before the buffalo Sabres Covid outbreak- This dataframe gives me the 10 games after the Buffalo Sabres Covid outbreak- I then reset the index again for both before and after- Renamed columns to before and after for both<jupyter_code>Sabres = df.drop(data[data.Team.isin(["Arizona Coyotes", "Vancouver Canucks",  "Boston Bruins", "Carolina Hurricanes", "Columbus Blue Jackets", "Calgary Flames", "Chicago Blackhawks", "Colorado Avalanche", "Dallas Stars", "Detroit Red Wings", "Florida Panthers", "Los Angeles Kings", "Minnesota Wild", "Nashville Predators", "<NAME>", "<NAME>", "Tampa Bay Lightning", "St Louis Blues", "Vegas Golden Knights", "Edmonton Oilers", "Montreal Canadiens", "New Jersey Devils", "New York Islanders", "New York Rangers", "Ottawa Senators", "Philadelphia Flyers", "Toronto Maple Leafs", "Winnipeg Jets", "Washington Capitals", "Anaheim Ducks"])].index)
Sabres1 = Sabres.reset_index()
Sabres2 = Sabres1.drop(Sabres1.index[20:])
SabresBefore = Sabres2.drop(Sabres2.index[10:20])
SabresBefore1 = SabresBefore.reset_index()
SabresBefore2 = SabresBefore1.rename(columns={'CF%':"CF% Before",'SCF%':"SCF% Before",'SH%':"SH% Before",'SV%':"SV% Before",'PDO':"PDO Before"}).drop(columns="Team")
SabresAfter = Sabres2.drop(Sabres2.index[0:10]).drop(Sabres2.index[20:])
SabresAfter1 = SabresAfter.reset_index()
SabresAfter2 = SabresAfter1.rename(columns={'CF%':"CF% After",'SCF%':"SCF% After",'SH%':"SH% After",'SV%':"SV% After",'PDO':"PDO After"}).drop(columns="Team")<jupyter_output><empty_output><jupyter_text>In this step for the Buffalo Sabres,- I added the two seperate data frames of the 10 games before and 10 games after to make the visulization process easier<jupyter_code>SabresBeforeAndAfter = pd.concat([SabresBefore2,SabresAfter2], axis=1)<jupyter_output><empty_output><jupyter_text>Task 3  Method Chaining:<jupyter_code>import project_functions1 as pf1
DataFrameProcessed = pf1.load_and_process(path_to_csv_file = "../data/raw/Games - Natural Stat TrickTeam Season Totals - Natural Stat Trick.csv")
# Main dataframe as a function 
CanucksBeforeFinal = pf1.Canucks_Before_Data(DataFrameProcessed)
# Canucks 10 games before dataframe
CanucksAfterFinal = pf1.Canucks_After_Data(DataFrameProcessed)
# Canucks 10 games after dataframe
CanucksBandA = pf1.Canucks_Before_And_After(DataFrameProcessed)
# Canucks 10 games before and after dataframe
SabresBeforeFinal = pf1.Sabres_Before_Data(DataFrameProcessed)
# Sabres 10 games before dataframe
SabresAfterFinal = pf1.Sabres_After_Data(DataFrameProcessed)
# Sabres 10 games after dataframe
SabresBandA = pf1.Sabres_Before_After(DataFrameProcessed)
# Sabres 10 games before and after dataframe
CovidDescribeCBF = pf1.Describe(CanucksBeforeFinal)
# Statistics on Cancucks 10 games before 
CovidDescribeCAF = pf1.Describe(CanucksAfterFinal)
# Statistics on Canucks 10 games after
CovidDescribeSBF = pf1.Describe(SabresBeforeFinal)
# Statistics on Sabres 10 games before
CovidDescribeSAF = pf1.Describe(SabresAfterFinal)
# Statistics on Sabres 10 games after<jupyter_output><empty_output><jupyter_text>Task 4  Analysis To Answer Research Question:  Vancouver Canucks Before and After Covid-19 Outbreak:<jupyter_code>CanucksBandA<jupyter_output><empty_output><jupyter_text>Vancouver Canucks Visuals:The Vancouver Canucks had 24 days off between games due to their Covid-19 outbreak. From the data, it is clear that the team didn’t play well due to their time off. This will be decided by looking at 5v5 statistics and visulatizations of the variables for CF% (corsi percentage), SCF% (scoring chances for percentage), SH% (shooting percentage), SV% (save percentage), and PDO (SH% vs. SV%). The bar chart below gives a genral idea of the statistics before and after the outbreak.<jupyter_code>FCBandA1.mean().plot(kind='bar')<jupyter_output><empty_output><jupyter_text>CF% (Corsi):CF% (corsi) is used to evaluate the teams puck possession on the ice in a 5v5 setting. It is calculated by the teams total sum of shots on goal, missed shots, and blocked shots over the shots against, missed shots against and blocked shots against. The average rank of corsi is 40 to 60%. A team/player ranked above 55% is considered elite or very good. Vancouver’s CF% has seemed to increase after their 24 days off with their CF% increasing 2.5% from 43.1% to 45.6%. Vancouver doesn’t have a very high ranked coris to begin with, but does have one high outlier at 62.11% before the outbreak. What this statistic is telling us is that the Canucks had more time of possesion with the puck that resulted in more shots towrads the opponents net. This probably has to do with having more time off for rest compared to the other teams they are playing. Their CF% does seem to gain more variance and contain a larger range of values after the outbreak. This is most likely the case from having too much time off, not enough practise, and being out of their rythem on the ice.<jupyter_code>CanucksBandA.boxplot(['CF% Before','CF% After'])
sns.jointplot(data=CanucksBandA, x='CF% Before', y='CF% After', kind='hex')<jupyter_output><empty_output><jupyter_text>SCF% (Scoring Chances For Percentage):SCF% (scoring chances for percentage)  is a percentage of total scoring chances in games that team played for that team. It takes into account the rate of scoring chances for and against at 60 minutes time on ice. It allows us to determine a teams overall puck possesion, becuse the more time you have with the puck, the more scoring oppertunities you'll have. Vancouver’s SCF% fell after their outbreak but not by much (.1 0f a %). There is a larger range of values after their outbreak compared to before and much more outliers exist before the outbreak. This means that the Canucks were seeing a higher rate of scoring chnaces after the outbreak rather than before. Again, this is most likely the case due to the team having such a long period of time off the ice.<jupyter_code>CanucksBandA.boxplot(['SCF% Before','SCF% After'])
sns.jointplot(data=CanucksBandA, x="SCF% Before", y="SCF% After", kind="reg")<jupyter_output><empty_output><jupyter_text>SH% (Shooting Percentage):SH% (shooting percentage) allows us to measure if a team's shots on goal results in goals and determines if a team is scoring. The Vancouver Canucks saw a slight increase in shooting percentage after the outbreak of 1.4% from 6.3% to 7.7%. A larger range of values is also present after the outbreak as well. This is likely caused from the long time off, resulting in games were they are scoring more or less than usual. The one outlier on the SH% Before box plot was the game between the Canucks and Canadians were the Canucks were scoring at a crazy rate, resulting in a SH% of 23.1%. This box plot shows that Vancouver was scoring more on average after the outbreak, but was less consistent at doing so.<jupyter_code>CanucksBandA.boxplot(['SH% Before','SH% After'])
sns.jointplot(
    data=CanucksBandA, x="SH% Before", y="SH% After",
    marker="+", s=100, marginal_kws=dict(bins=25, fill=False),
)<jupyter_output><empty_output><jupyter_text>SV% (Save Percentage):SV% (save percentage) helps determine the play in net by analyzing the number of shots on goal a goaltender can save. This one caught me off guard a bit because I was not expecting such a drop off in save percentage. I drop in save percentage was 3.9% from 94.% before and 90.3% after. This may not seem like a large drop but in this statistic that is a drastic regression. This shows that the Canucks were getting scored on more after the outbreak rather than before. This could stem past just goaltending as well to how the team is playing in front of the goaltender. There is also more range in values after the outbreak than before. Just to clarify, some values sitting at 100% means that no goals were scored (called shutouts). This is an interesting visual because I assumed the goaltending would have been better with all the time off, but I guess that maybe too much time off can hurt you SV% stats. I guess that makes sense because if a goalie doesn’t see a large volume of shots in a game, he is more likely going to be scored on for being “cold” and not warmed up. The Canucks also had a young goaltender in net that goes by the name <NAME>, who was playing in first full NHL regular season.<jupyter_code>CanucksBandA.boxplot(['SV% Before','SV% After'])
g = sns.jointplot(data=CanucksBandA, x="SV% Before", y="SV% After")
g.plot_joint(sns.kdeplot, color="r", zorder=0, levels=6)
g.plot_marginals(sns.rugplot, color="r", height=-.15, clip_on=False)<jupyter_output><empty_output><jupyter_text>PDO:PDO is the sum of a team's shooting percentage and its save percentage. The sum is then multiplied by ten and that total is the teams PDO. PDO is often viewed as a proxy for how lucky a team is. A PDO over 102 is “probably not as good as they seem”, while a team below 98 is likely better than they appear. The Canucks had a PDO of 1.0 before the outbreak and a 0.98 after the outbreak. This means that the Canucks were likely better than they appeared after the outbreak. This is such a cool statistics to look at because it can actually determine a teams play, which will help with this analysis greatly. I assumed the Canucks would have played worse after the outbreak rather than before. It’s important to note that the overall score of the game doesn’t determine how a team played as a whole. Luck is massively involved in the game of hockey and can make people believe things that aren’t completely true. The Canucks won 6 games in the in their 10 games before the outbreak and only won 3 games in their 10 games afterwards. But what the PDO is telling us is that the team played better statistically after the outbreak, but the final score of those games and record wouldn’t be able to tell you that.<jupyter_code>CanucksBandA.boxplot(['PDO Before','PDO After'])
plt.figure(figsize=(12,5))
sns.countplot(CanucksBandA['PDO Before'])
plt.xticks(fontsize=8)<jupyter_output>/opt/miniconda3/lib/python3.9/site-packages/seaborn/_decorators.py:36: FutureWarning: Pass the following variable as a keyword arg: x. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.
  warnings.warn(<jupyter_text>Buffalo Sabres Before and After Covid-19 Outbreak:<jupyter_code>SabresBandA<jupyter_output><empty_output><jupyter_text>Buffalo Sabres Visuals:The Buffalo Sabres had 14 days off between games due to their Covid-19 outbreak. From the data, it is clear that the team didn’t play well due to their time off. This will be decided by looking at the 5v5 statistics and visulatizations of the variables for CF% (corsi percentage), SCF% (scoring chances for percentage), SH% (shooting percentage), SV% (save percentage), and PDO (SH% vs. SV%). The bar chart below gives a genral idea of the statistics before and after the outbreak.<jupyter_code>FSBandA1.mean().plot(kind='bar')<jupyter_output><empty_output><jupyter_text>CF% (Corsi):CF% (corsi) is used to evaluate the teams puck possession on the ice in a 5v5 setting. It is calculated by the teams total sum of shots on goal, missed shots, and blocked shots over the shots against, missed shots against and blocked shots against. The average rank of corsi is 40 to 60%. A team/player ranked above 55% is considered elite or very good. The Buffalo Sabres CF% dropped 1.7% from 50.7% before and 49% after the outbreak. This means the Sabres saw more shot attempts directed at them after their outbreak. This shows that the team was not playing as good after their outbreak. The range of values doesn’t seem to change as much as well for the play before and after. However, they did seem to have some games with higher CF% after, but the average CF% is brought down by some lower valued CF% games. I expected the Sabres to have a lower CF% as they are a poorly managed and coached team. I did expect the CF% to be lower, but it wasn’t that drastic of a change.<jupyter_code>SabresBandA.boxplot(['CF% Before','CF% After'])
plt.figure(figsize=(12,5))
sns.countplot(SabresBandA['CF% After'])
plt.xticks(fontsize=8)<jupyter_output>/opt/miniconda3/lib/python3.9/site-packages/seaborn/_decorators.py:36: FutureWarning: Pass the following variable as a keyword arg: x. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.
  warnings.warn(<jupyter_text>SCF% (Scoring Chances For Percentage):SCF% (scoring chances for percentage)  is a percentage of total scoring chances in games that team played for that team. It takes into account the rate of scoring chances for and against at 60 minutes time on ice. It allows us to determine a teams overall puck possesion, becuse the more time you have with the puck, the more scoring oppertunities you'll have. The Sabres have a lower SCF% after their outbreak compared to before. It dropped a drastic 5.1% from 51.6% before to 46.5% after the outbreak. This means the team saw less scoring opportunities, which makes sense as the CF% dropped showing they lost time with the puck, resulting in less shots on net. I expected there to be quite a drop off like this as the team was already struggling in their first 10 games before the outbreak. On the boxplot, there is a large range of lower values below the average SCF% After, helping us visualize their scoring struggles.<jupyter_code>SabresBandA.boxplot(['SCF% Before','SCF% After'])
sns.jointplot(data=SabresBandA, x="SCF% Before", y="SCF% After", kind="reg")<jupyter_output><empty_output><jupyter_text>SH% (Shooting Percentage):SH% (shooting percentage) allows us to measure if a team's shots on goal results in goals and determines if a team is scoring. The Sabres SH% dropped massively as expected from the previous two statistics of CF% and SCF%. The SH% dropped from a decent value of 6.8% to 3.3% (3.5% decrease). This just goes to help support how much this team struggled after their outbreak. It represents how many of their shots are registering into goals, and the main problem is that their total scoring chances have already decreased, resulting in less opportunities to score. This visual backs up my research question on the how much the Sabres struggled.<jupyter_code>SabresBandA.boxplot(['SH% Before','SH% After'])
sns.jointplot(
    data=SabresBandA, x="SH% Before", y="SH% After",
    marker="+", s=100, marginal_kws=dict(bins=25, fill=False),
)<jupyter_output><empty_output><jupyter_text>SV% (Save Percentage):SV% (save percentage) helps determine the play in net by analyzing the number of shots on goal a goaltender can save. This statistic caught me off guard because the team is struggling to score with a loss in SH%, SCF% and less time with the puck analyzed in with the CF%.  Somehow the Sabres managed to increase their SV% after their outbreak from 90.7% before to 91.2% after the outbreak. This means the Sabres goaltending played quite well along with the team’s defensive structure. I was not expecting this considering the trend in decreases seen above in the other statistics showing their struggles to contain the puck and score. The Sabres don’t have a strong goaltending core to start with. This must mean the break either helped the goalies, or the team played a strong defensive structured game in front of the goaltenders along with some good play from the goalies as well.<jupyter_code>SabresBandA.boxplot(['SV% Before','SV% After'])
g = sns.jointplot(data=SabresBandA, x="SV% Before", y="SV% After")
g.plot_joint(sns.kdeplot, color="r", zorder=0, levels=6)
g.plot_marginals(sns.rugplot, color="r", height=-.15, clip_on=False)<jupyter_output><empty_output><jupyter_text>PDO:PDO is the sum of a team's shooting percentage and its save percentage. The sum is then multiplied by ten and that total is the teams PDO. PDO is often viewed as a proxy for how lucky a team is. A PDO over 102 is “probably not as good as they seem”, while a team below 98 is likely better than they appear. The Sabres PDO is 0.98 before the outbreak and 0.95 after the outbreak. They saw a (0.3 drop in PDO before to after). By the rules of PDO, the Sabres are likely better than they appear. This is hard to visualize as they seemed to have struggles containing puck possession and having a decrease in scoring changes and shooting percentage. But the team’s overall defensive structure  and great goaltending resulting in an increase in SV% is the only thing that is helping them seem better than they appear. The Sabres only won 5 games in their 10 games before their outbreaks compared to the 3 games they won in their 10 games after the outbreak. This means that the Sabres were a bit more lucky in their 10 games before the outbreak rather than the 10 games after. The teams overall play decreased on the offensive side of the puck and increased on the defensive side of the puck after the outbreak. The Sabres seemed to be in a lot of more high scoring games before the outbreak which only supports this analysis of increased defensive play.<jupyter_code>SabresBandA.boxplot(['PDO Before','PDO After'])
sns.jointplot(data=SabresBandA, x='PDO Before', y='PDO After', kind='kde')<jupyter_output><empty_output><jupyter_text>Overall Analysis:Diving in deeper to these two teams has shown me a lot on how cool statistics are in hockey and that they actual do work! The Vancouver Canucks were interesting because they saw an increase in a lot of statistics such as CF% and SH% were the Sabres did not. The PDO was a great addition for a statistic as it shows the reader if this team is getting lucky and if they aren’t. I chose these two teams specifically because the Vancouver Canucks were in a division that contained more teams of their skill level where as the Sabres are looked at more as a team trying to exit a rebuild stage and become a team that can start making playoffs. I was mostly surprised about my findings with the Sabres. I knew they would experience a decrease in offensive play, but was not expecting to find an increase in goaltending and defensive play. I will have to do more digging into that because I was not expecting that. The box plots really helped visualize the before and after play side by side to help the reader really understand how drastic of a change occurred from Covid-19 outbreaks. This analysis taught me a great deal and I can’t wait to create a beautiful looking bar chart for a better visualization.  Final Dataframe for Tableau - Combining Canucks and Sabres dataframes into one for Tableau program- Renamed columns for this process<jupyter_code>FCBandA = CanucksBandA.drop(columns = "Game")
FCBandA1 = FCBandA[['CF% Before', 'CF% After', 'SCF% Before', 'SCF% After', 'SV% Before', 'SV% After', 'SH% Before', 'SH% After', 'PDO Before', 'PDO After']]
FSBandA = SabresBandA.drop(columns = "Game")
FSBandA1 = FSBandA[['CF% Before', 'CF% After', 'SCF% Before', 'SCF% After', 'SV% Before', 'SV% After', 'SH% Before', 'SH% After', 'PDO Before', 'PDO After']]
CanucksColumn = CanucksBandA.rename(columns = {"CF% Before" : "Canucks CF% Before", "SCF% Before" : "Canucks SCF% Before", "SH% Before" : "Canucks SH% Before", "SV% Before" : "Canucks SV% Before", "PDO Before" : "Canucks PDO Before", "CF% After" : "Canucks CF% After", "SCF% After" : "Canucks SCF% After", "SH% After" : "Canucks SH% After", "SV% After" : "Canucks SV% After", "PDO After" : "Canucks PDO After"})
SabresColumn = SabresBandA.rename(columns = {"CF% Before" : "Sabres CF% Before", "SCF% Before" : "Sabres SCF% Before", "SH% Before" : "Sabres SH% Before", "SV% Before" : "Sabres SV% Before", "PDO Before" : "Sabres PDO Before", "CF% After" : "Sabres CF% After", "SCF% After" : "Sabres SCF% After", "SH% After" : "Sabres SH% After", "SV% After" : "Sabres SV% After", "PDO After" : "Sabres PDO After"})
FinalCovidDataFrame = pd.concat([CanucksColumn,SabresColumn], axis=1)
FinalCovidDataFrame.head()
# csv file for FinalCovidDataFrame
FinalCovidDataFrame.to_csv("FinalCovidDataFrame.csv", index=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08376750244220124, 'fraction_numerical': 0.014246173884728102, 'mean_word_length': 5.510068892421834, 'pattern_counts': {'":': 0, '<': 95, '<?xml version=': 0, '>': 95, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '23', 'dir': 'jupyter-structured-clean-dedup', 'id': '429085', 'license': 'MIT', 'n_tokens_mistral': 7344, 'n_tokens_neox': 7000, 'n_words': 3309, 'path': 'notebooks/analysis1.ipynb', 'repo_name': 'data301-2021-winter1/project-group23-project', 'size': '24605'}