Team Ai
Apppublic

ifw-arz/data_analysis

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
data_analysis.py67 linesDownload Raw Back to root
1import pandas as pd2import numpy as np3from scipy.interpolate import interp1d4 5 6def aktualisierungsrate(time_series, data_series, t1, t2):7  8    filtered_df = pd.DataFrame({time_series.name: time_series, data_series.name: data_series})9    filtered_df = filtered_df[(filtered_df[time_series.name] >= t1) & (filtered_df[time_series.name] <= t2)]10    11    filtered_df = filtered_df.drop_duplicates(subset=[data_series.name], keep="first")12 13 14    result = [np.diff(filtered_df[time_series.name]).mean(), 15              np.diff(filtered_df[time_series.name]).min(),16              np.diff(filtered_df[time_series.name]).max()]17    18    return result19 20 21def latenz(time_series, data_series, data_series2, t_min, t_max):22 23    data1 = pd.DataFrame({time_series.name: time_series, data_series.name: data_series})24    data2 = pd.DataFrame({time_series.name: time_series, data_series2.name: data_series2})25 26    data2 = data2.drop_duplicates(subset=[data_series2.name])27 28    # Extract relevant columns from dataframes29    timestamp_data1 = data1[time_series.name]30    pos_data1 = data1[data_series.name]31    timestamp_data2 = data2[time_series.name]32    pos_data2 = data2[data_series2.name]33 34    pos_range_data1 = pos_data1[(timestamp_data1 >= t_min) & (timestamp_data1 <= t_max)]35    pos_range_data2 = pos_data2[(timestamp_data2 >= t_min) & (timestamp_data2 <= t_max)]36    time_range_data1 = timestamp_data1[(timestamp_data1 >= t_min) & (timestamp_data1 <= t_max)]37    time_range_data2 = timestamp_data2[(timestamp_data2 >= t_min) & (timestamp_data2 <= t_max)]38 39    timestamp_filtered_data1 = time_range_data1.drop_duplicates(keep="first")40    f = interp1d(timestamp_filtered_data1.index, timestamp_filtered_data1.values, fill_value="extrapolate")41    g = interp1d(pos_range_data1.index, pos_range_data1.values, fill_value="extrapolate")42    timestamp_interp_data1 = f(time_range_data1.index)43    pos_interp_data1 = g(pos_range_data1.index)44 45    # Create DataFrames for the interpolated data46    df_data1 = pd.DataFrame({"data1_time": timestamp_interp_data1, "data1_value": pos_interp_data1})47    df_data2 = pd.DataFrame({"data2_time": time_range_data2, "data2_value": pos_range_data2})48 49    min_pos_data1 = np.min(df_data1['data1_value'])50    max_pos_data1 = np.max(df_data1['data1_value'])51    df_data2 = df_data2[df_data2['data2_value'] >= min_pos_data1]52    df_data2 = df_data2[df_data2['data2_value'] <= max_pos_data1]53 54 55    latencies = []56    for data2_value, data2_time in zip(df_data2['data2_value'], df_data2['data2_time']):57        data1_pos_idx = np.abs(df_data1['data1_value'] - data2_value).argmin()58        data1_time = df_data1.at[data1_pos_idx, 'data1_time']59        latency = data2_time - data1_time60        latencies.append(latency)61 62    return np.array(latencies), df_data263 64 65 66if __name__ == "__main__":67    print("don't run")