Metrics - Version, Downloads, etc. #7

Open
opened 2025-10-08 04:47:57 +00:00 by serrindipity · 2 comments
Member

Use branch metrics

Use branch `metrics`

Descriptive Statistics for downloaded:
Mean: 240046.51333118603
Median: 2757.0
Standard Deviation: 6850631.178687502
Variance: 46931147546405.305
Minimum: 0
Maximum: 862378311
Sum: 13414759351

Percentiles:
25th Percentile: 1248.0
50th Percentile (Median): 2757.0
75th Percentile: 9007.5
90th Percentile: 48709.700000000004

Descriptive Statistics for rating:
Mean: 46.012597523441414
Median: 40.0
Standard Deviation: 46.36869587925876
Variance: 2150.055957543188
Minimum: 0
Maximum: 100
Sum: 2571368

Percentiles:
25th Percentile: 0.0
50th Percentile (Median): 40.0
75th Percentile: 100.0
90th Percentile: 100.0

Descriptive Statistics for active_installs:
Mean: 6089.0397967217805
Median: 20.0
Standard Deviation: 124200.36122887746
Variance: 15425729729.383648
Minimum: 0
Maximum: 10000000
Sum: 340279900

Percentiles:
25th Percentile: 10.0
50th Percentile (Median): 20.0
75th Percentile: 100.0
90th Percentile: 1000.0

Descriptive Statistics for num_ratings:
Mean: 14.758070288454656
Median: 1.0
Standard Deviation: 195.3196365356121
Variance: 38149.76041640362
Minimum: 0
Maximum: 27774
Sum: 824740

Percentiles:
25th Percentile: 0.0
50th Percentile (Median): 1.0
75th Percentile: 3.0
90th Percentile: 12.0

Descriptive Statistics for downloaded: Mean: 240046.51333118603 Median: 2757.0 Standard Deviation: 6850631.178687502 Variance: 46931147546405.305 Minimum: 0 Maximum: 862378311 Sum: 13414759351 Percentiles: 25th Percentile: 1248.0 50th Percentile (Median): 2757.0 75th Percentile: 9007.5 90th Percentile: 48709.700000000004 Descriptive Statistics for rating: Mean: 46.012597523441414 Median: 40.0 Standard Deviation: 46.36869587925876 Variance: 2150.055957543188 Minimum: 0 Maximum: 100 Sum: 2571368 Percentiles: 25th Percentile: 0.0 50th Percentile (Median): 40.0 75th Percentile: 100.0 90th Percentile: 100.0 Descriptive Statistics for active_installs: Mean: 6089.0397967217805 Median: 20.0 Standard Deviation: 124200.36122887746 Variance: 15425729729.383648 Minimum: 0 Maximum: 10000000 Sum: 340279900 Percentiles: 25th Percentile: 10.0 50th Percentile (Median): 20.0 75th Percentile: 100.0 90th Percentile: 1000.0 Descriptive Statistics for num_ratings: Mean: 14.758070288454656 Median: 1.0 Standard Deviation: 195.3196365356121 Variance: 38149.76041640362 Minimum: 0 Maximum: 27774 Sum: 824740 Percentiles: 25th Percentile: 0.0 50th Percentile (Median): 1.0 75th Percentile: 3.0 90th Percentile: 12.0
from time import sleep

import requests
import json

from tqdm import tqdm

starting_page = 1
request_per_page = 100
response = requests.get(f"https://api.wordpress.org/plugins/info/1.2/?action=query_plugins"
                        f"&request[page]={starting_page}"
                        f"&request[per_page]={request_per_page}")
response_json = response.json()
# print(response_json)

page_no = response_json['info']['pages']
plugins_info_list = []
plugins_info_str = ""
for i in tqdm(range(page_no)):
    response = requests.get(f"https://api.wordpress.org/plugins/info/1.2/?action=query_plugins"
                            f"&request[page]={i+1}"
                            f"&request[per_page]={request_per_page}")
    response_json = response.json()
    plugins_info_list.append(response_json['plugins'])
    # plugins_info_str += str(response_json['plugins'])
    sleep(0.1)

flattened_list = [item for sublist in plugins_info_list for item in sublist]

plugins_info_json = json.dumps(flattened_list, indent=4)
print(plugins_info_json)

filename = "output.json"

# Open the file in write mode ('w') and use json.dump() to write the data
with open(filename, 'w') as f:
    f.write(plugins_info_json)
import json
import matplotlib.pyplot as plt
import numpy as np

def print_info(name, data):
    # Convert the list to a NumPy array
    data_np = np.array(data)

    # Calculate basic statistics
    mean = np.mean(data_np)
    median = np.median(data_np)
    std_dev = np.std(data_np)
    variance = np.var(data_np)
    min_val = np.min(data_np)
    max_val = np.max(data_np)
    sum_val = np.sum(data_np)

    # Calculate percentiles
    percentile_25 = np.percentile(data_np, 25)
    percentile_50 = np.percentile(data_np, 50)  # This is the same as the median
    percentile_75 = np.percentile(data_np, 75)
    percentile_90 = np.percentile(data_np, 90)

    # Print the results
    print(f"\n\nDescriptive Statistics for {name}:")
    print(f"Mean: {mean}")
    print(f"Median: {median}")
    print(f"Standard Deviation: {std_dev}")
    print(f"Variance: {variance}")
    print(f"Minimum: {min_val}")
    print(f"Maximum: {max_val}")
    print(f"Sum: {sum_val}")
    print("\nPercentiles:")
    print(f"25th Percentile: {percentile_25}")
    print(f"50th Percentile (Median): {percentile_50}")
    print(f"75th Percentile: {percentile_75}")
    print(f"90th Percentile: {percentile_90}")


with open('output.json', 'r') as f:
    json_data = json.load(f)

# print(len(data))
downloaded = [plugin["downloaded"] for plugin in json_data]
rating = [plugin["rating"] for plugin in json_data]
active_installs = [plugin["active_installs"] for plugin in json_data]
num_ratings = [plugin["num_ratings"] for plugin in json_data]

print_info("downloaded", downloaded)
print_info("rating", rating)
print_info("active_installs", active_installs)
print_info("num_ratings", num_ratings)

# plt.hist(downloaded, bins=500, log=True)
# plt.show()
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 6))
axs[0,0].hist(downloaded, bins=100, log=True)
axs[0,0].set_title("Distribution of downloaded")

axs[0,1].hist(rating, bins=20, log=True)
axs[0,1].set_title("Distribution of rating")

axs[1,0].hist(active_installs, bins=10, log=True)
axs[1,0].set_title("Distribution of active_installs")

axs[1,1].hist(num_ratings, bins=100, log=True)
axs[1,1].set_title("Distribution of num_ratings")

# Add labels and title
# plt.xlabel("Value")
# plt.ylabel("Frequency (log)")

# Display the plot
plt.show()
``` from time import sleep import requests import json from tqdm import tqdm starting_page = 1 request_per_page = 100 response = requests.get(f"https://api.wordpress.org/plugins/info/1.2/?action=query_plugins" f"&request[page]={starting_page}" f"&request[per_page]={request_per_page}") response_json = response.json() # print(response_json) page_no = response_json['info']['pages'] plugins_info_list = [] plugins_info_str = "" for i in tqdm(range(page_no)): response = requests.get(f"https://api.wordpress.org/plugins/info/1.2/?action=query_plugins" f"&request[page]={i+1}" f"&request[per_page]={request_per_page}") response_json = response.json() plugins_info_list.append(response_json['plugins']) # plugins_info_str += str(response_json['plugins']) sleep(0.1) flattened_list = [item for sublist in plugins_info_list for item in sublist] plugins_info_json = json.dumps(flattened_list, indent=4) print(plugins_info_json) filename = "output.json" # Open the file in write mode ('w') and use json.dump() to write the data with open(filename, 'w') as f: f.write(plugins_info_json) ``` ``` import json import matplotlib.pyplot as plt import numpy as np def print_info(name, data): # Convert the list to a NumPy array data_np = np.array(data) # Calculate basic statistics mean = np.mean(data_np) median = np.median(data_np) std_dev = np.std(data_np) variance = np.var(data_np) min_val = np.min(data_np) max_val = np.max(data_np) sum_val = np.sum(data_np) # Calculate percentiles percentile_25 = np.percentile(data_np, 25) percentile_50 = np.percentile(data_np, 50) # This is the same as the median percentile_75 = np.percentile(data_np, 75) percentile_90 = np.percentile(data_np, 90) # Print the results print(f"\n\nDescriptive Statistics for {name}:") print(f"Mean: {mean}") print(f"Median: {median}") print(f"Standard Deviation: {std_dev}") print(f"Variance: {variance}") print(f"Minimum: {min_val}") print(f"Maximum: {max_val}") print(f"Sum: {sum_val}") print("\nPercentiles:") print(f"25th Percentile: {percentile_25}") print(f"50th Percentile (Median): {percentile_50}") print(f"75th Percentile: {percentile_75}") print(f"90th Percentile: {percentile_90}") with open('output.json', 'r') as f: json_data = json.load(f) # print(len(data)) downloaded = [plugin["downloaded"] for plugin in json_data] rating = [plugin["rating"] for plugin in json_data] active_installs = [plugin["active_installs"] for plugin in json_data] num_ratings = [plugin["num_ratings"] for plugin in json_data] print_info("downloaded", downloaded) print_info("rating", rating) print_info("active_installs", active_installs) print_info("num_ratings", num_ratings) # plt.hist(downloaded, bins=500, log=True) # plt.show() fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 6)) axs[0,0].hist(downloaded, bins=100, log=True) axs[0,0].set_title("Distribution of downloaded") axs[0,1].hist(rating, bins=20, log=True) axs[0,1].set_title("Distribution of rating") axs[1,0].hist(active_installs, bins=10, log=True) axs[1,0].set_title("Distribution of active_installs") axs[1,1].hist(num_ratings, bins=100, log=True) axs[1,1].set_title("Distribution of num_ratings") # Add labels and title # plt.xlabel("Value") # plt.ylabel("Frequency (log)") # Display the plot plt.show() ```
devcheezy self-assigned this 2025-10-08 05:21:37 +00:00
douglastsui was assigned by devcheezy 2025-10-08 05:21:55 +00:00
kuljit added reference metrics 2025-10-08 22:28:03 +00:00
This repo is archived. You cannot comment on issues.
No labels
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Committee/Secure-OCF-Web-Hosting#7