diff --git a/resultados/calcula-media-aritmetica.py b/resultados/calcula-media-aritmetica.py
new file mode 100644
index 0000000000000000000000000000000000000000..227abb0b05fc7d62c4e5ab9a50bbd6c4066a9eb0
--- /dev/null
+++ b/resultados/calcula-media-aritmetica.py
@@ -0,0 +1,73 @@
+import csv
+import numpy as np
+
+# Function to process the files and calculate the mean for each field
+def compute_means(file_pattern, num_files):
+    # Create a list to store the data from each file
+    data = []
+    
+    # Read each file and parse its content
+    for i in range(1, num_files + 1):
+        file_name = file_pattern.format(i)
+        with open(file_name, newline='', encoding='utf-8') as f:
+            reader = csv.reader(f, delimiter=',')
+            file_data = []
+            
+            for row in reader:
+                # Strip leading/trailing spaces from each field and convert to float
+                cleaned_row = [field.strip() for field in row]
+                file_data.append(cleaned_row)
+                
+            data.append(file_data)
+
+    # Assuming the structure is consistent across all files, i.e., same rows and columns
+    num_rows = len(data[0])  # Number of rows
+    num_columns = len(data[0][0])  # Number of columns (excluding the identifier)
+    
+    # We need to store the means for each field (row, column)
+    means = []
+    
+    # Iterate over each row and each column (excluding the first column, which is the identifier)
+    for row_index in range(num_rows):
+        row_means = []
+        
+        for col_index in range(1, num_columns):  # Starting from 1 to exclude the first column
+            values = []
+            for file_data in data:
+                # Extract the value from the current row and column (skip the identifier)
+                value = file_data[row_index][col_index]
+                try:
+                    values.append(float(value))
+                except ValueError:
+                    values.append(np.nan)  # Handle any non-numeric values (e.g., NaN or missing data)
+            
+            # Calculate the mean for the current field (ignoring NaN values)
+            mean_value = np.nanmean(values)
+            row_means.append(mean_value)
+        
+        means.append(row_means)
+    
+    return means
+
+# Function to save the computed means to a new CSV file
+def save_means_to_file(means, file_name="media-aritmetica-resultados.csv"):
+    with open(file_name, 'w', newline='', encoding='utf-8') as f:
+        writer = csv.writer(f)
+        
+        # Assuming we have the same rows and columns as the original files, 
+        # write the means to a new file.
+        for row in means:
+            writer.writerow(row)
+
+# Main function to execute the program
+if __name__ == "__main__":
+    file_pattern = "resultados-{}.txt"
+    num_files = 8
+    
+    # Step 1: Compute the means
+    means = compute_means(file_pattern, num_files)
+    
+    # Step 2: Save the results to a CSV file
+    save_means_to_file(means, "media-aritmetica-resultados.csv")
+    
+    print("Mean values have been computed and saved to 'media-aritmetica-resultados.csv'.")
diff --git a/resultados/calcula-media-geometrica-resumida.py b/resultados/calcula-media-geometrica-resumida.py
new file mode 100644
index 0000000000000000000000000000000000000000..ae2a0f44e5771285159bbb90eabab502c603b321
--- /dev/null
+++ b/resultados/calcula-media-geometrica-resumida.py
@@ -0,0 +1,53 @@
+import csv
+import math
+import numpy as np
+
+def clean_field(value):
+    return value.strip()
+
+def arithmetic_mean(values):
+    return sum(values) / len(values)
+
+def geometric_mean(values):
+    product = math.prod(values)
+    return product**(1/len(values))
+
+def geometric_std_dev(values):
+    geo_mean = geometric_mean(values)
+    log_ratios = [math.log(v / geo_mean) for v in values]
+    variance = sum(r ** 2 for r in log_ratios) / len(log_ratios)
+    return math.exp(math.sqrt(variance))
+
+data = {}
+file_count = 8
+
+for n in range(1, file_count + 1):
+    filename = f"resultados-{n}.txt"
+    with open(filename, "r") as f:
+        reader = csv.reader(f)
+        for row in reader:
+            key = clean_field(row[0])
+            values = list(map(lambda x: float(clean_field(x)), row[1:]))
+
+            if key not in data:
+                data[key] = []
+
+            data[key].append(values)
+
+output = []
+for key, all_values in data.items():
+    num_cols = len(all_values[0])
+    col_means = [arithmetic_mean([values[c] for values in all_values]) for c in range(num_cols)]
+    line_geo_mean = geometric_mean(col_means)
+    line_geo_means = [geometric_mean(values) for values in all_values]
+    line_geo_std_dev = geometric_std_dev(line_geo_means)
+    col_means_excl_12 = [arithmetic_mean([values[c] for values in all_values]) for c in range(num_cols) if c != 10]
+    line_geo_mean_excl_12 = geometric_mean(col_means_excl_12)
+    line_geo_means_excl_12 = [geometric_mean([v for i, v in enumerate(values) if i != 10]) for values in all_values]
+    line_geo_std_dev_excl_12 = geometric_std_dev(line_geo_means_excl_12)
+    output.append([key, round(line_geo_mean, 2), round(line_geo_std_dev, 3), round(line_geo_mean_excl_12, 2), round(line_geo_std_dev_excl_12, 3)])
+
+with open("tabela-medias-geometricas.csv", "w", newline="") as f:
+    writer = csv.writer(f)
+    writer.writerow(["FLAGS", "GEOMEAN", "GEOSD", "GEOMEANEXLUD", "GEOSDEXLUD"])
+    writer.writerows(output)