LaTeX Таблица с неопределенностью от панд Dataframe - PullRequest
1 голос
/ 22 июня 2019

В настоящее время я работаю над отчетом со многими значениями и неопределенностями, рассчитанными в python и сохраненными в панде DataFrame.

Эти значения должны быть включены в отчет, включая ошибки. В настоящее время мой единственный способ сделать это - вручную объединить значения с ошибками. Один пример этого выглядит следующим образом:

\begin{tabular}{cccc}
    \hline
    Konzentration $c/\si{\gram\per\liter}$ & $D_\text{app} / \si{\square\meter\per\second}$ & $R_h / \si{\meter}$ & PDI  \\
    \hline
    \SI{0.50}{} & \SI{9.9(2)e-13}{}  & \SI{3.84(8)e-7}{} & \SI{4.1(3)}{} \\
    \SI{0.33}{} & \SI{6.35(7)e-13}{} & \SI{5.96(6)e-7}{} & \SI{1.4(2)}{} \\
    \SI{0.25}{} & \SI{1.16(2)e-12}{} & \SI{3.26(6)e-7}{} & \SI{2.6(2)}{} \\
    \SI{0.20}{} & \SI{6.11(9)e-15}{} & \SI{6.20(9)e-7}{} & \SI{4.9(3)}{} \\
    \hline
\end{tabular}

enter image description here

Мне известно о pd.to_latex(), которое частично уменьшило объем работы, но, насколько я знаю, не работает с ошибками.

Известно ли вам о том, что на LaTeX или python можно получить такую ​​таблицу без ручного объединения значений и ошибок. DataFrame выглядит следующим образом: enter image description here

Единственная идея, которая у меня была до сих пор, заключалась в том, чтобы написать функцию, которая принимает значение, ошибку и размер неопределенности (в данном случае всегда 1) и возвращает строку, которую я могу использовать с pd.to_latex().

Есть ли более простой или, вероятно, лучший способ сделать это?

1 Ответ

1 голос
/ 23 июня 2019

Я написал функцию, которая объединяет значения и ошибки в одну строку.

def conv2siunitx(val, err, err_points=1):
    val = f'{val:.20e}'.split('e')
    err = f'{err:.20e}'.split('e') 
    first_uncertain = int(val[1]) - int(err[1]) + err_points

    my_val = f'{np.round(float(val[0]), first_uncertain-1):.10f}'
    my_err = f'{np.round(float(err[0]), err_points-1):.10f}'.replace('.','')
    # Avoid 1. and write 1 instead
    if first_uncertain > 1:
        first_uncertain = first_uncertain + 1

    return(f'{my_val[:first_uncertain]}({my_err[:err_points]})e{val[1]}')

В сочетании с S -колонками это приводит к результату, который я искал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...