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

Подробнее здесь: https://stackoverflow.com/questions/790 ... ata-analys