Предположим, у меня есть следующие данные:
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
Как одновременно вычислить несколько сводных статистических данных по всем столбцам с использованием ленивого кадра Pola ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Явное приведение ленивого кадра невозможно из-за несоответствия типов?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Явное приведение ленивого кадра невозможно из-за несоответствия типов?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-