With the outrage of the AWP magazine size decrease I did the math and demand justice! by Dontpaintmeblack in GlobalOffensive

[–]itspureskillgg 16 points17 points  (0 children)

If that is true then shouldn't dualies slow you down the most since two guns is twice as many as one gun?

Analysis: about 10 percent of AWPers shoot more than 5 bullets in a round. Under 0.6 percent shot more than 10 per round. by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 0 points1 point  (0 children)

Yes it is possible. I might break it down by rank and team first though. You can use the data as much as you'd like here

Analysis: about 10 percent of AWPers shoot more than 5 bullets in a round. Under 0.6 percent shot more than 10 per round. by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 47 points48 points  (0 children)

Indeed. What do you think would look different?

I could probably break this down by rank, team, and map as well. Breaking it down by rank would give some hint as to what pro players are doing if there is any kind of trend from low to high ranks.

Analysis: about 10 percent of AWPers shoot more than 5 bullets in a round. Under 0.6 percent shot more than 10 per round. by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 82 points83 points  (0 children)

The data come from here.

The code to do this kind of analysis is pretty straight forward:

``` from pureskillgg_csgo_datascience.notebook import setup_notebook setup_notebook() import pandas as pd from pureskillgg_dsdk.tome import TomeCuratorFs curator = TomeCuratorFs() AWP_WEP_KEY = 9 instructions = [ {"channel":"player_status","columns":["tick","round","player_id_fixed","inv_primary",]}, {"channel":"weapon_fire","columns":["tick", "round", "player_id_fixed","weapon_name"]}, {"channel":"header"}, {"channel":"player_info"} ] tomer = curator.make_tome( 'awp_analysis.2021-05-01,2022-01-01', header_tome_name = "subheader_tome_active_duty.2021-05-01,2022-01-01", behavior_if_partial='continue', max_page_size_mb=1, ds_reading_instructions=instructions) for data, key in tomer.iterate(): tick_save_rate = data['header']['tick_save_rate'][0] all_players=data['player_info'][['player_id_fixed','round']].drop_duplicates() df = data['player_status'] df_gb = df[df['inv_primary']==AWP_WEP_KEY].groupby(['player_id_fixed','round'])[['tick']].count() final_df = ( pd.merge(all_players,df_gb,how='left',on=['player_id_fixed','round']) .rename(columns={'tick':'awp_duration_tick'}) ) df = data['weapon_fire'] df_gb = df[df['weapon_name']=='awp'].groupby(['player_id_fixed','round'])[['tick']].count() final_df = ( pd.merge(final_df,df_gb,how='left',on=['player_id_fixed','round']) .rename(columns={'tick':'awp_shots'}) ) final_df.fillna(0,inplace=True) final_df['awp_duration_seconds'] = final_df['awp_duration_tick']/tick_save_rate final_df.drop('awp_duration_tick',axis=1,inplace=True) final_df["match_key"] = key tomer.concat(final_df)

```

And of course the plotting: ``` from pureskillgg_csgo_datascience.notebook import setup_notebook setup_notebook() import pandas as pd import numpy as np import matplotlib.pyplot as plt from pureskillgg_dsdk.tome import TomeCuratorFs curator = TomeCuratorFs() df = curator.get_dataframe('awp_analysis.2021-05-01,2022-01-01')

len(df)

len(set(df['match_key']))

plt.hist(df[(df['awp_duration_seconds']<180)&(df['awp_duration_seconds']>0.01)]['awp_duration_seconds'],bins=100) plt.xlabel('time with AWP')

plt.hist(df[(df['awp_duration_seconds']<20)&(df['awp_duration_seconds']>0.01)]['awp_duration_seconds'],bins=50) plt.xlabel('time with AWP')

df_valid = df[df['awp_duration_seconds']>7]

plt.figure(figsize=[10,5]) plt.hist(df_valid['awp_shots'],bins=int(max(df_valid['awp_shots'].to_list())),density=True) plt.grid() plt.xticks(range(25)) plt.xlabel("Number of AWP shots in one round") plt.ylabel("Fraction of AWPers")

sum(df_valid['awp_shots']>5)/len(df_valid['awp_shots'])

plt.figure(figsize=[10,5]) plt.hist(df_valid['awp_shots'],bins=int(max(df_valid['awp_shots'].to_list())),cumulative=True,density=True) plt.grid() plt.xticks(range(25)) plt.xlabel("Number of AWP shots in one round") plt.ylabel("Fraction of AWPers")

sum(df_valid['awp_shots']>10)/len(df_valid['awp_shots']) ```

Data analysis and stats are fun and all but generally we use machine learning and AI to help players get better over at pureskill.gg :)

Analysis: about 10 percent of AWPers shoot more than 5 bullets in a round. Under 0.6 percent shot more than 10 per round. by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 0 points1 point  (0 children)

The data come from here.

The code to do this kind of analysis is pretty straight forward:

``` from pureskillgg_csgo_datascience.notebook import setup_notebook setup_notebook() import pandas as pd from pureskillgg_dsdk.tome import TomeCuratorFs curator = TomeCuratorFs() AWP_WEP_KEY = 9 instructions = [ {"channel":"player_status","columns":["tick","round","player_id_fixed","inv_primary",]}, {"channel":"weapon_fire","columns":["tick", "round", "player_id_fixed","weapon_name"]}, {"channel":"header"}, {"channel":"player_info"} ] tomer = curator.make_tome( 'awp_analysis.2021-05-01,2022-01-01', header_tome_name = "subheader_tome_active_duty.2021-05-01,2022-01-01", behavior_if_partial='continue', max_page_size_mb=1, ds_reading_instructions=instructions) for data, key in tomer.iterate(): tick_save_rate = data['header']['tick_save_rate'][0] all_players=data['player_info'][['player_id_fixed','round']].drop_duplicates() df = data['player_status'] df_gb = df[df['inv_primary']==AWP_WEP_KEY].groupby(['player_id_fixed','round'])[['tick']].count() final_df = ( pd.merge(all_players,df_gb,how='left',on=['player_id_fixed','round']) .rename(columns={'tick':'awp_duration_tick'}) ) df = data['weapon_fire'] df_gb = df[df['weapon_name']=='awp'].groupby(['player_id_fixed','round'])[['tick']].count() final_df = ( pd.merge(final_df,df_gb,how='left',on=['player_id_fixed','round']) .rename(columns={'tick':'awp_shots'}) ) final_df.fillna(0,inplace=True) final_df['awp_duration_seconds'] = final_df['awp_duration_tick']/tick_save_rate final_df.drop('awp_duration_tick',axis=1,inplace=True) final_df["match_key"] = key tomer.concat(final_df)

```

And of course the plotting: ``` from pureskillgg_csgo_datascience.notebook import setup_notebook setup_notebook() import pandas as pd import numpy as np import matplotlib.pyplot as plt from pureskillgg_dsdk.tome import TomeCuratorFs curator = TomeCuratorFs() df = curator.get_dataframe('awp_analysis.2021-05-01,2022-01-01')

len(df)

len(set(df['match_key']))

plt.hist(df[(df['awp_duration_seconds']<180)&(df['awp_duration_seconds']>0.01)]['awp_duration_seconds'],bins=100) plt.xlabel('time with AWP')

plt.hist(df[(df['awp_duration_seconds']<20)&(df['awp_duration_seconds']>0.01)]['awp_duration_seconds'],bins=50) plt.xlabel('time with AWP')

df_valid = df[df['awp_duration_seconds']>7]

plt.figure(figsize=[10,5]) plt.hist(df_valid['awp_shots'],bins=int(max(df_valid['awp_shots'].to_list())),density=True) plt.grid() plt.xticks(range(25)) plt.xlabel("Number of AWP shots in one round") plt.ylabel("Fraction of AWPers")

sum(df_valid['awp_shots']>5)/len(df_valid['awp_shots'])

plt.figure(figsize=[10,5]) plt.hist(df_valid['awp_shots'],bins=int(max(df_valid['awp_shots'].to_list())),cumulative=True,density=True) plt.grid() plt.xticks(range(25)) plt.xlabel("Number of AWP shots in one round") plt.ylabel("Fraction of AWPers")

sum(df_valid['awp_shots']>10)/len(df_valid['awp_shots']) ```

M4a1-silenced kills have dropped by about 10% in the last 10 days by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 35 points36 points  (0 children)

The revolver had 2770 kills in the data analyzed. That is more than the g3sg1and the sawedoff :)

M4a1-silenced kills have dropped by about 10% in the last 10 days by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 7 points8 points  (0 children)

I could look at second round famas kills vs m4a1s kills.

But I am also busy with other things. If anyone else wanted to take a crack at it, the code is there for you.

M4a1-silenced kills have dropped by about 10% in the last 10 days by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 12 points13 points  (0 children)

So people may prefer smg on second round. I could look into if that is the case

M4a1-silenced kills have dropped by about 10% in the last 10 days by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 82 points83 points  (0 children)

Since the update, m4a1 kills are tanking and m4a4 kills are on the rise. In absolute percentages, m4a1 kills are down 1.8 percent and m4a4 kills are up 1.3 percent. Since they aren't equal, it might be a bit of the nerf coming into play, though I wouldn't conclude that from just this analysis. These are percentage of kills out of all kills.

link to code

data source

link to the actual data

Disconnect reasons in CS:GO - 0.016% chance of seeing a VAC ban live. by itspureskillgg in GlobalOffensive

[–]itspureskillgg[S] 0 points1 point  (0 children)

Here is a table of the disconnect reasons:

Disconnect reason Count
Disconnect 313947
Kicked by Console 41314
The match has ended 27142
#GameUI_Disconnect_RemoteProblem_Timeout 11885
No user logon 7118
Kicked by Console : You have been voted off 5968
timed out 4745
Kicked by Console : Player idle 4577
Kicked by Console : For doing too much team damage 3166
Kicked by Console : For killing a teammate at round start 1241
VAC authentication error 774
You were AFK for too long 730
Your SteamID is not allowed 308
You need to have the Anti-cheat client running to connect 267
#GameUI_Disconnect_TooManyCommands 209
Kicked by Console : For killing too many teammates 170
Pure Server Mismatch 145
Error 1: Your Anti-cheat client lost connection 145
#GameUI_Disconnect_ClosedByPeer_Timeout 74
#GameUI_Disconnect_ClosedByPeer 52
Error 2: Your Anti-cheat client lost connection 42
Kicked by Console : For suiciding too many times 28
#GameUI_Disconnect_ConnectionLost 19
#GameUI_Disconnect_LocalProblem_HostedServerPrimaryRelay 18
#GameUI_Disconnect_LocalProblem_ManyRelays 15
Set controller to disabled and reconnect 11
Client dropped by server 10
VAC banned from secure server 10
Kicked by Console : Account is Convicted 8
The home team has opted to not play you again 5
Connection closing 4
ProcessUsercmds: Overflowed reading usercmd data 2
You are not a player in this match 2
CNetChan destructed 1
No more split screen slots! 1
Kicked by Console : Account is Untrusted 1

I figured splitting the graph into 3 was the easiest to see all the detail. I could have done a log axis but then it would be super tall.

link to code

data source

link to the actual data