SpringClean.py
· 2.3 KiB · Python
Raw
import pandas as pd
import glob
import os
# ---------------------------------------------------------
# STEP 1 - Ask user which spring to process
# ---------------------------------------------------------
spring_name = input("Enter spring number (example: 1040_01): ").strip()
# ---------------------------------------------------------
# STEP 2 - Find all matching test files
# ---------------------------------------------------------
file_pattern = f"Spring_{spring_name}_Test_*.csv"
file_list = glob.glob(file_pattern)
# Make sure files are processed in order
file_list.sort()
if len(file_list) == 0:
print(f"No files found matching: {file_pattern}")
exit()
# ---------------------------------------------------------
# STEP 3 - Variables used while combining files
# ---------------------------------------------------------
combined_data = []
time_offset = 0
# ---------------------------------------------------------
# STEP 4 - Process each test file
# ---------------------------------------------------------
for test_number, file in enumerate(file_list, start=1):
print(f"Processing: {file}")
# Read CSV
df = pd.read_csv(file)
# Remove rows containing empty data
df = df.dropna()
# Time column name
time_column = "Time (s)"
# Create Test column
df["Test"] = test_number
# Create continuous time column
df["Continuous Time (s)"] = df[time_column] + time_offset
# Determine ending time for next test
last_time = df[time_column].iloc[-1]
time_offset += last_time
# Store cleaned data
combined_data.append(df)
# ---------------------------------------------------------
# STEP 5 - Combine all tests into one dataframe
# ---------------------------------------------------------
final_df = pd.concat(combined_data, ignore_index=True)
# ---------------------------------------------------------
# STEP 6 - Create output filename
# ---------------------------------------------------------
output_file = f"Spring_{spring_name}_Cleaned.csv"
# ---------------------------------------------------------
# STEP 7 - Save cleaned data
# ---------------------------------------------------------
final_df.to_csv(output_file, index=False)
print()
print(f"Finished!")
print(f"Output saved as: {output_file}")
| 1 | import pandas as pd |
| 2 | import glob |
| 3 | import os |
| 4 | |
| 5 | |
| 6 | # --------------------------------------------------------- |
| 7 | # STEP 1 - Ask user which spring to process |
| 8 | # --------------------------------------------------------- |
| 9 | spring_name = input("Enter spring number (example: 1040_01): ").strip() |
| 10 | |
| 11 | |
| 12 | # --------------------------------------------------------- |
| 13 | # STEP 2 - Find all matching test files |
| 14 | # --------------------------------------------------------- |
| 15 | file_pattern = f"Spring_{spring_name}_Test_*.csv" |
| 16 | |
| 17 | file_list = glob.glob(file_pattern) |
| 18 | |
| 19 | # Make sure files are processed in order |
| 20 | file_list.sort() |
| 21 | |
| 22 | if len(file_list) == 0: |
| 23 | print(f"No files found matching: {file_pattern}") |
| 24 | exit() |
| 25 | |
| 26 | |
| 27 | # --------------------------------------------------------- |
| 28 | # STEP 3 - Variables used while combining files |
| 29 | # --------------------------------------------------------- |
| 30 | combined_data = [] |
| 31 | |
| 32 | time_offset = 0 |
| 33 | |
| 34 | |
| 35 | # --------------------------------------------------------- |
| 36 | # STEP 4 - Process each test file |
| 37 | # --------------------------------------------------------- |
| 38 | for test_number, file in enumerate(file_list, start=1): |
| 39 | |
| 40 | print(f"Processing: {file}") |
| 41 | |
| 42 | # Read CSV |
| 43 | df = pd.read_csv(file) |
| 44 | |
| 45 | # Remove rows containing empty data |
| 46 | df = df.dropna() |
| 47 | |
| 48 | # Time column name |
| 49 | time_column = "Time (s)" |
| 50 | |
| 51 | # Create Test column |
| 52 | df["Test"] = test_number |
| 53 | |
| 54 | # Create continuous time column |
| 55 | df["Continuous Time (s)"] = df[time_column] + time_offset |
| 56 | |
| 57 | # Determine ending time for next test |
| 58 | last_time = df[time_column].iloc[-1] |
| 59 | |
| 60 | time_offset += last_time |
| 61 | |
| 62 | # Store cleaned data |
| 63 | combined_data.append(df) |
| 64 | |
| 65 | |
| 66 | # --------------------------------------------------------- |
| 67 | # STEP 5 - Combine all tests into one dataframe |
| 68 | # --------------------------------------------------------- |
| 69 | final_df = pd.concat(combined_data, ignore_index=True) |
| 70 | |
| 71 | |
| 72 | # --------------------------------------------------------- |
| 73 | # STEP 6 - Create output filename |
| 74 | # --------------------------------------------------------- |
| 75 | output_file = f"Spring_{spring_name}_Cleaned.csv" |
| 76 | |
| 77 | |
| 78 | # --------------------------------------------------------- |
| 79 | # STEP 7 - Save cleaned data |
| 80 | # --------------------------------------------------------- |
| 81 | final_df.to_csv(output_file, index=False) |
| 82 | |
| 83 | print() |
| 84 | print(f"Finished!") |
| 85 | print(f"Output saved as: {output_file}") |