Nano Hash - криптовалюты, майнинг, программирование

Автоматизация генерации данных диаграммы для ежедневных расходов на тег

Использование таблиц Google. Вот попытка воспроизвести мои потребности в таблице:

2012-08-30    food     $15    expensive dinner
2012-08-30    food     $10    pizza!
2012-08-30    other    $30    that damn painting
2012-09-02    home     $40    can't remember
2012-09-02    other    $5     toilet paper
2012-09-02    home     $2     buying new flowers

Я уже могу сделать с ним 2 вещи, но он настолько далек от оптимального, что им можно пренебречь.

Во-первых, Используя SUMIF :

food    $25    <-    SUMIF(B:B;"food";C:C)
other   $35
home    $42

Затем, объединив его с ARRAYFORMULA:

           food home other
2012-08-30  $25   $0   $30 <- ARRAYFORMULA(SUMIF(A:A&B:B;2012-08-30&"food";C:C))
2012-09-02   $0  $42    $5

Видите, где это может стать слишком большим? Что ж...

Я хочу сделать 2 графических графика из этого. Конечно же, основным является второе:

  1. Круг из первого примера. При использовании SUMIF мне нужно явно написать там "food" (или ссылку, что угодно). Можно ли сделать это автоматически, заполнив каждый найденный тег?

    Пока я могу жить без этого, это может быть ответом на второй, главный вопрос;

  2. График или временная шкала из формулы массива. Он должен отслеживать каждый тег на графике во времени.

Возможно ли это сделать? Если нет, какие предложения? Я с удовольствием начну писать сценарии, если это необходимо (и оно того стоит). Или отойди от Гугла. Или из электронных таблиц все вместе (в последнюю очередь). Питон может? Рубин?

Или, может быть, я просто оставлю все как есть, если это слишком много хлопот.


Ответы:


1

Используя QUERY, вы можете создать первую таблицу (с заголовками), используя:

=QUERY(B:C;"select B, sum(C) where B != '' group by B label B 'Category', sum(C) 'Total'";0)

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

Вторая таблица может быть сгенерирована с помощью:

=QUERY(A:C;"select A, sum(C) where A is not null group by A pivot B";0)

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


редактировать

Предоставить таблицу, которая заполняется нулями вместо пробелов в соответствии с вашим комментарием; предполагая, что верхняя левая (пустая) ячейка таблицы равна I1, то в I2:

=SORT(UNIQUE(A:A))

и в J1:

=TRANSPOSE(SORT(UNIQUE(B:B)))

а затем в J2:

=ArrayFormula(IF(I2:I*LEN(J1:1);MMULT(I2:I=TRANSPOSE(A:A);(J1:1=B:B)*C:C);IFERROR(1/0)))

Обратите внимание, что это заполнит CONTINUE функций в дальнем нижнем и крайнем правом углу электронной таблицы, перезаписывая все на своем пути. Поэтому, вероятно, лучше всего иметь лист, посвященный этой таблице.

04.09.2012
  • Я немного подправил формулы и намерен представить окончательный результат, но у меня все еще есть две незначительные проблемы, которые я хочу исправить здесь: (1) графики не обновляются автоматически с помощью предоставленных вами формул (которые отлично работают), поэтому если я добавлю новый тег (или категорию), график не будет отображаться, если я предварительно не отполирую листы с определенным количеством строк и столбцов; и (2) я потратил пару часов, пытаясь понять, как заполнить вторую таблицу НУЛЯМИ (вместо пустых мест), но не смог найти. без этого график выглядит более странно. у вас случайно не было исправлений для них? 08.09.2012
  • 1. Да, вам нужно будет указать диапазоны, которые выходят за пределы того, что вы предполагаете заполнить. В противном случае используйте GAS для настройки размеров диапазона данных при редактировании. Но первый способ будет легче реализовать IMO и, возможно, даст лучшую производительность в долгосрочной перспективе. 08.09.2012
  • 2. Это небольшое ограничение QUERY. С QUERY будут запутанные обходные пути, но я отредактирую свой ответ, чтобы предоставить другой способ. 08.09.2012

  • 2

    В общем, электронные таблицы не являются базами данных, и это задача, для решения которой вы быстро приближаетесь к базе данных. Однако, как назло (в любом случае, в зависимости от того, как вы на это смотрите), электронные таблицы Google на самом деле имеют некоторые API доступа к базе данных, поэтому вы, вероятно, можете делать то, что хотите:

    http://googleajaxsearchapi.blogspot.com/2008/03/introduction-latest-ajax-api-google.html

    https://developers.google.com/chart/interactive/docs/querylanguage

    http://blog.ouseful.info/2009/05/18/using-google-spreadsheets-as-a-databace-with-the-google-visualisation-api-query-language/

    02.09.2012
  • По совпадению я только что наткнулся на запросы< /i> и мне понравилось... Я люблю SQL. Но я до сих пор не понимаю, как это может помочь мне автоматически создавать наборы данных для диаграмм, чтобы их можно было подобрать. Как я вижу их прямо сейчас, это просто еще один способ написать другой синтаксис, чтобы получить те же результаты из уже предоставленной формулы. 02.09.2012
  • Название моего вопроса было плохо написано. Надеюсь, теперь стало понятнее. Между тем, эта интерактивная диаграмма разработчиков может быть моим ответом... 02.09.2012
  • Ну... Нет, ничего из этого не помогло! Теперь я думаю, что правильно понял свой вопрос. :) 02.09.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование