Предположим, у меня есть следующие данные:
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
Программы на Python
1728467049
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/76559866/how-to-simultaneously-compute-multiple-summary-statistics-over-all-columns-using[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия