Как преобразовать агрегаты в пандах в строку?

У меня есть фреймворк pandas, который содержит дату и некоторые значения, как показано ниже

Исходные данные:

list = [('2018-10-29', 6.1925), ('2018-10-29', 6.195), ('2018-10-29', 1.95833333333333), ('2018-10-29', 1.785), ('2018-10-29', 3.05), ('2018-10-29', 1.30666666666667), ('2018-10-29', 1.6325), ('2018-10-30', 1.765), ('2018-10-30', 1.265), ('2018-10-30', 2.1125), ('2018-10-30', 2.16714285714286), ('2018-10-30', 1.485), ('2018-10-30', 1.72), ('2018-10-30', 2.754), ('2018-10-30', 1.79666666666667), ('2018-10-30', 1.27833333333333), ('2018-10-30', 3.48), ('2018-10-30', 6.19), ('2018-10-30', 6.235), ('2018-10-30', 6.11857142857143), ('2018-10-30', 6.088), ('2018-10-30', 4.3), ('2018-10-30', 7.80666666666667), ('2018-10-30', 7.78333333333333), ('2018-10-30', 10.9766666666667), ('2018-10-30', 2.19), ('2018-10-30', 1.88)]

После загрузки в панды

df = pd.DataFrame(list)


             0          1
0   2018-10-29   6.192500
1   2018-10-29   6.195000
2   2018-10-29   1.958333
3   2018-10-29   1.785000
4   2018-10-29   3.050000
5   2018-10-29   1.306667
6   2018-10-29   1.632500
7   2018-10-30   1.765000
8   2018-10-30   1.265000
9   2018-10-30   2.112500
10  2018-10-30   2.167143
11  2018-10-30   1.485000
12  2018-10-30   1.720000
13  2018-10-30   2.754000
14  2018-10-30   1.796667
15  2018-10-30   1.278333
16  2018-10-30   3.480000
17  2018-10-30   6.190000
18  2018-10-30   6.235000
19  2018-10-30   6.118571
20  2018-10-30   6.088000
21  2018-10-30   4.300000
22  2018-10-30   7.806667
23  2018-10-30   7.783333
24  2018-10-30  10.976667
25  2018-10-30   2.190000
26  2018-10-30   1.880000

Я могу легко найти определенные статистические результаты, такие как среднее значение, дисперсия, медиана и т. д. Это то, что я делаю

df = pd.DataFrame(list)
df.set_index(0, inplace=True)

variance = df.var()
print(variance)

Я получаю результат ниже

1    6.918711
dtype: float64

Сходным образом,

print(df.mean())

Я получаю результат ниже

1    3.759699
dtype: float64

Теперь я хочу добавить эти результаты в список с описанием каждого из них.

Итак, если я сделаю конкатенацию строк для вывода, например

print("variance " + df.var().to_string())

Я получаю результат как

variance 1    6.918711

Если я попытаюсь добавить его в список

lis = []
lis.append("variance " + df.var().to_string())
print(lis)

Я получаю список как

['variance 1    6.918711']

Я вижу, что в качестве имени столбца отображается 1, но мне нужна только метрика, а не номер столбца.

Значит, это должен быть variance 6.918711, а список должен выглядеть так:

 ['variance 6.918711', 'mean 3.759699']

Как я могу это сделать?

0
0
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ты можешь сделать это:

In [458]: variance = df.var().iloc[0]

In [459]: variance
Out[459]: 6.918710915931824

In [460]: mean = df.mean().iloc[0]

In [461]: mean
Out[461]: 3.7596992945326284

Теперь имя столбца удалено.

In [466]: lis = []
In [468]: lis.append('variance ' +str(variance))

In [469]: lis.append('mean ' +str(mean))

In [470]: lis
Out[470]: ['variance 6.918710915931824', 'mean 3.7596992945326284']

Позвольте мне знать, если это помогает.

Вы можете выбрать значения, которые вы хотите не описывать, после чего вы можете преобразовать их в строку и добавить.

values = ['count','mean']
df.describe().loc[values].reset_index().astype(str).apply('   '.join,1).tolist()

Из:

['count   27.0', 'mean   3.7596992945326284']

Другие вопросы по теме