使用列表填充 Python 的漂亮表格
Fill Python's prettytable using lists
我需要使用 Python 的 prettytable
创建一个 table 汇总统计数据。我有一个包含 n 列的数据集,我需要计算每一列的均值、中值、标准差和方差。我可以使用 numpy
来计算统计列表,如下所示:
import numpy
means=df.mean()
medians=df.median()
standard_deviations=df.std()
variances=df.var()
但是,在填充 table 时,我不确定如何在 field_names
和 add_row
选项中插入列和值的列表。如果我事先知道列数并且我可以轻松地在列表中指定它们的名称,则下面的代码有效:
from prettytable import PrettyTable
x = PrettyTable()
x.title = 'Dataset Summary Statistics'
x.field_names = ['Metric','Var(1)','Var(2)',...,'Var(n)']
x.add_row(['Mean',means[0],means[1],means[2],...,means[n]])
x.add_row(['Median',medians[0],medians[1],medians[2],...,medians[n]])
x.add_row(['Standard Deviation',standard_deviations[0],standard_deviations[1],standard_deviations[2],..., standard_deviations[n]])
x.add_row(['Variance',variances[0],variances[1],variances[2],variances[n]])
print(x)
+----------------------------------------------------------------------------------+
| Dataset Summary Statistics |
+--------------------+--------------------+--------------------+-------------------+
| Metric | Var(1) | Var(2) | Var(n) |
+--------------------+--------------------+--------------------+-------------------+
| Mean | 1774.723516111245 | 1784.5797186405343 | 1764.1535926315878|
| Median | 1413.0899658203125 | 1419.4949951171875 | 1406.0249633789062|
| Standard Deviation | 831.055540944934 | 833.9177417328348 | 827.9240611593201 |
| Variance | 690653.312135277 | 695418.7999767909 | 685458.2510465416 |
+--------------------+--------------------+--------------------+-------------------+
但是,如果DataFrame中的列数太多,无法手动调用means
、medians
、standard_deviations
和variances
列表中的每个元素,如何使用值列表填充 table 而不指定它们在列表中的位置?
IIUC 将 Series 转换为列表并使用 *
进行解压,类似于 medians, standard_deviations, variances
:
x.add_row(['Mean', *means.tolist()])
我需要使用 Python 的 prettytable
创建一个 table 汇总统计数据。我有一个包含 n 列的数据集,我需要计算每一列的均值、中值、标准差和方差。我可以使用 numpy
来计算统计列表,如下所示:
import numpy
means=df.mean()
medians=df.median()
standard_deviations=df.std()
variances=df.var()
但是,在填充 table 时,我不确定如何在 field_names
和 add_row
选项中插入列和值的列表。如果我事先知道列数并且我可以轻松地在列表中指定它们的名称,则下面的代码有效:
from prettytable import PrettyTable
x = PrettyTable()
x.title = 'Dataset Summary Statistics'
x.field_names = ['Metric','Var(1)','Var(2)',...,'Var(n)']
x.add_row(['Mean',means[0],means[1],means[2],...,means[n]])
x.add_row(['Median',medians[0],medians[1],medians[2],...,medians[n]])
x.add_row(['Standard Deviation',standard_deviations[0],standard_deviations[1],standard_deviations[2],..., standard_deviations[n]])
x.add_row(['Variance',variances[0],variances[1],variances[2],variances[n]])
print(x)
+----------------------------------------------------------------------------------+
| Dataset Summary Statistics |
+--------------------+--------------------+--------------------+-------------------+
| Metric | Var(1) | Var(2) | Var(n) |
+--------------------+--------------------+--------------------+-------------------+
| Mean | 1774.723516111245 | 1784.5797186405343 | 1764.1535926315878|
| Median | 1413.0899658203125 | 1419.4949951171875 | 1406.0249633789062|
| Standard Deviation | 831.055540944934 | 833.9177417328348 | 827.9240611593201 |
| Variance | 690653.312135277 | 695418.7999767909 | 685458.2510465416 |
+--------------------+--------------------+--------------------+-------------------+
但是,如果DataFrame中的列数太多,无法手动调用means
、medians
、standard_deviations
和variances
列表中的每个元素,如何使用值列表填充 table 而不指定它们在列表中的位置?
IIUC 将 Series 转换为列表并使用 *
进行解压,类似于 medians, standard_deviations, variances
:
x.add_row(['Mean', *means.tolist()])