Обычно я загружаю файл excel в pandas файл данных здесь:
dv = pd.read_excel('data.xlsx')
Затем я очищаю его и переименовываю в «cleaned», что не важно для этого воспроизводимого примера, просто упомянув для ясность:
if (selected_x.title()=="Viscosity" or selected_y.title()=="Viscosity"):
cleaned = cleaned[cleaned.Study != "Yanqing Wang 2017"]
cleaned = cleaned[cleaned.Study != "Thakore 2020"]
Оттуда я разделяю очищенный массив данных на отдельные исследования, этот проект представляет собой литературную композицию. Ниже я приведу два примера:
yan = cleaned[cleaned.Study == "Yanqing Wang 2017"]
tha = cleaned[cleaned.Study == "Thakore 2020"]
Наконец, я загружаю каждое из отдельных исследований в следы и отображаю их на графике. Выбранные y и выбранные x являются строками, такими как «Температура (C)» и «Halflife (Min)»:
trace1 = go.Scatter(y=tha[selected_y], x=tha[selected_x])
trace2 = go.Scatter(y=yan[selected_y], x=yan[selected_x])
Что мне нужно сделать, это после разделения массива на отдельные исследования, найти максимальный период полураспада относительно каждой температуры (0,50,100,150,200,250,300) и собрать их в отдельные списки, затем найти максимальное значение этих списков, взять всю строку и добавить их в один и тот же список. Я пытался сделать это, используя такие вещи, как:
yan50 = yanq[yanq['Temperature (C) '] == 50]
yan100 = yanq[yanq['Temperature (C) '] == 100]
yan150 = yanq[yanq['Temperature (C) '] == 150]
yan200 = yanq[yanq['Temperature (C) '] == 200]
yan250 = yanq[yanq['Temperature (C) '] == 250]
yan300 = yanq[yanq['Temperature (C) '] == 300]
Чтобы разделить исследование на списки различной степени. В настоящее время я застрял, где я должен найти максимальное значение в столбце Halflife каждого списка и добавить всю соответствующую строку в новый список. Это то, что я пытаюсь:
yan = pd.DataFrame(columns=["Study","Gas","Surfactant","Surfactant Concentration","Additive","Additive Concentration","LiquidPhase","Quality","Pressure (Psi)","Temperature (C) ","Shear Rate (/Sec)","Halflife (Min)","Viscosity","Color"])
if (len(yan50) > 0):
yan50.loc[yan50['Halflife (Min)'].idxmax()]
yan50 = yan50.dropna()
yan.append(yan50)
if (len(yan100) > 0):
yan100.loc[yan100['Halflife (Min)'].idxmax()]
yan100 = yan100.dropna()
yan.append(yan100)
if (len(yan150) > 0):
yan150.loc[yan150['Halflife (Min)'].idxmax()]
yan150 = yan150.dropna()
yan.append(yan150)
if (len(yan200) > 0):
yan200.loc[yan200['Halflife (Min)'].idxmax()]
yan200 = yan200.dropna()
yan.append(yan200)
if (len(yan250) > 0):
yan250.loc[yan250['Halflife (Min)'].idxmax()]
yan250 = yan250.dropna()
yan.append(yan250)
if (len(yan300) > 0):
yan300.loc[yan300['Halflife (Min)'].idxmax()]
yan300 = yan300.dropna()
yan.append(yan300)yan50.iloc[yan50['Halflife (Min)'].idxmax()]
Ошибка, которую я получаю, состоит в том, что отдельные списки температур пусты.
Я также получил несколько значений Nan для составленных мной отдельных списков температур. , и я не уверен, правильно ли я делю список. Я не слишком силен с Pandas. Требуются рекомендации!
Ссылка на CSV данных
------------ Редактировать ----------- -
![enter image description here](https://i.stack.imgur.com/HJ5vr.png)
Что у меня есть, все исследования размещены в одних и тех же временных точках (50, 100 и т. Д. c). Я хочу найти максимальное значение периода полураспада, чтобы показала только самая верхняя точка. Я делаю это для того, чтобы помочь в визуализации данных. Планы на будущее, выходящие за рамки этой топи c, включают в себя: соединение точек максимального значения с линией и сравнение трендов значений полураспада отдельных исследований.