Как одновременно вычислить несколько сводных статистических данных по всем столбцам с использованием ленивого кадра PolaPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как одновременно вычислить несколько сводных статистических данных по всем столбцам с использованием ленивого кадра Pola

Сообщение Anonymous »

Предположим, у меня есть следующие данные:
df = pl.from_repr("""
┌─────┬─────┬─────┐
│ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1 ┆ 2 ┆ 3 │
│ 4 ┆ 5 ┆ 6 │
│ 7 ┆ 8 ┆ 9 │
└─────┴─────┴─────┘
""").lazy()

Для каждого столбца я хочу вычислить следующее: среднее значение, стандартное отклонение, минимум и максимум.
В pandas я мог бы сделать:
pl.from_pandas(
df.collect().to_pandas().agg(['mean','std','min','max']).reset_index()
)

shape: (4, 4)
┌───────┬─────┬─────┬─────┐
│ index ┆ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ f64 ┆ f64 ┆ f64 │
╞═══════╪═════╪═════╪═════╡
│ mean ┆ 4.0 ┆ 5.0 ┆ 6.0 │
│ std ┆ 3.0 ┆ 3.0 ┆ 3.0 │
│ min ┆ 1.0 ┆ 2.0 ┆ 3.0 │
│ max ┆ 7.0 ┆ 8.0 ┆ 9.0 │
└───────┴─────┴─────┴─────┘

В полярах (через маршрут ленивого кадра) «отсутствие индекса», похоже, усложняет задачу. Я могу вычислить 1) одну агрегацию по всем столбцам за раз или 2) все агрегации по одному столбцу за раз, затем собрать их и собрать вместе в pandas, но я не могу понять чистые «поляры» " способ сделать это.
Дайте мне знать, спасибо!

Я ожидал чего-то вроде следующего работает, но я не могу сделать agg без groupby, как в pandas:
df.select(pl.all().agg('min','max','mean','std'))

Затем я попробовал следующее, но он пытается складывать столбцы и жалуется на повторяющиеся имена столбцов:
df.select(
pl.all().mean(),
pl.all().std(),
pl.all().min(),
pl.all().max(),
).collect()

Одно из решений — переименовать их, чтобы они могли складываться по столбцам (а затем разложить их в pandas на основе суффикса):
df.select(
pl.all().mean().name.suffix('_mean'),
pl.all().std().name.suffix('_std'),
pl.all().min().name.suffix('_min'),
pl.all().max().name.suffix('_max'),
).collect()

Ниже приведено решение Франкенштейна/обходное решение, которое работает, но некрасиво:
pd.concat((
(
df
.select(pl.all().mean())
).collect().to_pandas().T.rename(columns={0:"mean"}),
(
df
.select(pl.all().std())
).collect().to_pandas().T.rename(columns={0:"std"}),
(
df
.select(pl.all().min())
).collect().to_pandas().T.rename(columns={0:"min"}),
(
df
.select(pl.all().min())
).collect().to_pandas().T.rename(columns={0:"max"}),
),axis=1)


Подробнее здесь: https://stackoverflow.com/questions/765 ... umns-using
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python pola.rs OOM в файле размером 30 ГБ
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Поляры Python: количество строк ленивого кадра не равно wc -l
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Разделение отсортированного ленивого кадра на более мелкие фрагменты с сохранением целых групп.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Явное приведение ленивого кадра невозможно из-за несоответствия типов?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Явное приведение ленивого кадра невозможно из-за несоответствия типов?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»