привет Спасибо, что уделили время go моему вопросу. Я работаю с бюджетным пространством для небольшого города, и в это непростое время я изучаю некоторые python, которые, возможно, в будущем помогут мне с моделированием финансовых данных. В настоящее время мы используем SAP, но я также хотел выучить новый язык.
Мне нужны подсказки о том, где искать определенные ответы. например, я создал базу данных с несколькими миллионами записей, отсортированных по дате и времени. Я смог удалить данные, которые мне не нужны, и теперь у меня есть чистая база данных для работы
На высоком уровне я хочу знать, есть ли еще одна запись на основе первой записи за день в тот же день, что в два раза больше, чем первая запись.
Date|time|dept|Value1
01/01/2019|11:00|BUD|51.00
01/01/2019|11:30|CSD|101.00
01/01/2019|11:50|BUD|102.00
01/02/2019|10:00|BUD|200.00
01/02/2019|10:31|BUD|201.00
01/02/2019|11:51|POL|400.00
01/03/2019|11:00|BUD|100.00
01/03/2019|11:30|PWD|101.00
01/03/2019|11:50|BUD|110.00
на основе приведенных выше данных и требований, я хочу получить результат
Date|time|dept|Value| Start Value
01/01/2019|11:50|BUD|102.00|51.00
01/02/2019|11:51|POL|400.00|200.00
01/03/2019|NONE|NONE|NONE|100.00
в день 3, там не было значений, которые были бы как минимум удвоены, поэтому у нас нет ни одного или нуля.
То, что я сделал до сих пор
Мне удалось подключиться к базе данных [python] 2. Я смог удалить ненужную информацию и данные из базы данных [sqlite] 3. Мне удалось создать новые таблицы для результата [Python]
Вопросы / лучшие практики
- Как получить первую строку в день. Могу ли я начать с переменной перед l oop, которая назначена 1 января 2019 года, а затем выбрать номер строки и сохранить его в другой таблице или какие еще варианты у нас есть здесь.
- После того, как первая строка за день будет сохранена / захвачена в другой таблице или массиве, как мне получить первое вхождение значения как минимум в два раза больше первой строки.
пример? метакод начала ***********
Start from Line 1 to end
table2.date[] Should be equal to 01/01/2019
table2.value[] Should be equal to 51.00
look through each line if date = table2.date and value >= 2* (table2.value[])
*if successful, get record line number and department and value and store in new table
else
goto next line
Then increase table2.date and table2.value by 1 and do the loop again.
конец метакода *****************
это правильный подход, я чувствую, что просмотр миллионов записей для каждого изменения даты не очень оптимизирован.
Я, вероятно, смогу добавить условие выхода, если дата не равна table2.date [1], но я все еще не уверен, что это правильный способ решения этой проблемы. Это будет проводиться только один или два раза в год, поэтому производительность системы не так важна, но я все еще думаю о том, чтобы подойти к этому правильным путем.
Следует ли мне экспортировать окончательные данные в Excel для анализа или это хорошие инструменты моделирования анализа в Python. Что порекомендуют профессионалы?