Заполните красивую таблицу Python, используя списки

#python #pandas #list #prettytable

Вопрос:

Мне нужно создать таблицу сводной статистики с помощью Python prettytable . У меня есть набор данных из n столбцов, и мне нужно вычислить среднее, медиану, стандартное отклонение и дисперсию каждого из столбцов. Я могу использовать numpy для расчета списка статистических данных следующее:

 import numpy
means=df.mean()
medians=df.median()
standard_deviations=df.std()
variances=df.var()
 

Однако при заполнении таблицы я не уверен, как вставить список столбцов и значений в параметры 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 | 
 -------------------- -------------------- -------------------- ------------------- 
 

Однако, если количество столбцов во фрейме данных слишком велико, чтобы вручную вызывать каждый элемент списков means , medians , standard_deviations и variances , как я могу заполнить таблицу, используя список значений, не указывая их позиции в списке?

Ответ №1:

IIUC преобразует серию в список и использует * для распаковки, аналогично для medians, standard_deviations, variances :

 x.add_row(['Mean', *means.tolist()])