< strong>Краткое объяснение проблемы
Я производю продукт и получаю окончательный результат после 6 итераций одной и той же процедуры. Я назову БОЛЬШУЮ ПАРТИЮ ансамблем из 6 итераций, а каждую итерацию я назову «партией».
Во время каждой итерации я собираю данные по нескольким параметрам.
Когда все 6 итераций выполнены, я объединяю их все, чтобы получить окончательный продукт, затем тестирую продукт, и этот тест дает мне процент от 0 % до 100 %. (Мой продукт хорош, если мой процент в конечном тесте составляет от 45 % до 65 %).
Я пытаюсь проанализировать свои данные, чтобы увидеть корреляцию между всеми параметрами и конечный результат, чтобы понять, какие параметры мне следует настроить и, если возможно, в каком направлении получить результат от 45 % до 65 %.
Краткий обзор того, как форматируются мои данные< /strong>
(Это упрощенный образец с поддельными данными)
Изображение файла Excel с выделенными частями

Проблема, с которой я столкнулся
Не могу пройти этап форматирования данных правильно работать с Pandas, чтобы провести какой-либо анализ. Я даже не уверен, как мне его отформатировать.
Что я пробовал
Я опубликую моя лучшая попытка на данный момент без всех неудачных попыток, но я даже не уверен, что куда-нибудь пойду. Я пытался создать столбец для каждой большой партии для размещения результатов и создать мультииндекс для перегруппировки данных по «Большому шагу»/Параметры/Большая партия/партия, но последняя часть вызывает у меня проблемы, а первая часть, я даже не уверен, как буду ее правильно использовать потом.
Код ниже:
Код: Выделить всё
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
url = "path\simplified fake data.xlsx"
df = pd.read_excel(url, sheet_name='Feuille2', header=None)
# Extract and transpose the first two rows
first_two_rows = df.iloc[:1]
transposed_headers = first_two_rows.T
# Drop the first two rows
df = df.iloc[1:]
df.loc[2,0] = "General"
df.loc[1,0] = "test"
new_row = ["General", "Final test", "45% - 65%"] + [np.nan] * (df.shape[1] - 3)
df.loc[3] = new_row
def add_column_every_n(df, n, new_col_name, new_col_value):
num_cols = df.shape[1]
cpt = 0
for i in range(n+3, num_cols +int(num_cols/n), n + 1):
df.insert(i, new_col_name + str(i), new_col_value)
df.iloc[2,i] = first_two_row.iloc[0,i-n-cpt]
df.iloc[1,i] = "Lot"
cpt = cpt + 1
return df
df = add_column_every_n(df, 6, 'NewCol', pd.NA)
df.head()

Код: Выделить всё
# Forward fill the remaining NaNs
df[0] = df[0].ffill()
df.iloc[0,:] = df.iloc[0,:].ffill()
df.head()

Код: Выделить всё
df = df.T
new_headers = df.iloc[:2].values.tolist()
# Drop the first two rows from the dataframe
df = df.iloc[2:]
# Combine the first two rows to form multi-level headers
df.columns = pd.MultiIndex.from_arrays(new_headers)
df.head()

То, что я думаю, что я хочу
Я даже не уверен, что то, что я хочу в конечном итоге, – это правильный способ добиться этого, чтобы получить полезные данные для анализа. Поэтому я открыт для любых лучших предложений. Вот как, по моему мнению, это должно выглядеть:
Мое представление о том, как, по моему мнению, это должно выглядеть

Как я могу обрабатывать такой набор данных или как мне следует в конце отформатируйте его, чтобы иметь возможность использовать pandas/другие библиотеки для анализа это? Я следил за уроками на YouTube и курсами на Coursera, но они никогда не объясняли, как решать такие сложные проблемы.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ata-analys