首页 > 解决方案 > 计算一系列日期的值然后在 python 中绘制它的最佳方法是什么?

问题描述

我开始使用python和pandas,需要创建一个带有底部日期的图表,以及每个日期四个事件的频率:诊断计数;如果在隔离期间进行诊断;诊断未隔离;最终计数隔离在没有诊断的情况下结束。基本数据如下所示:

import pandas as pd
import numpy as np
import datetime

data = [{'diag': False, 'diagDate': np.nan, 'QStart': datetime.datetime(2020, 11, 20), 'QEnd': datetime.datetime(2020, 12, 10)},\
   {'diag' : True, 'diagDate': datetime.datetime(2020, 12, 11), 'QStart': datetime.datetime(2020, 12, 10), 'QEnd': datetime.datetime(2020, 12, 24)},\
       {'diag' : True, 'diagDate': datetime.datetime(2020, 12, 11), 'QStart': datetime.datetime(2020, 11, 1), 'QEnd': datetime.datetime(2020, 11, 14)},\
           {'diag' : True, 'diagDate': datetime.datetime(2020, 12, 11), 'QStart': np.nan, 'QEnd': np.nan},\
          {'diag' : False, 'diagDate': np.nan, 'QStart': datetime.datetime(2020, 11, 20), 'QEnd': datetime.datetime(2020, 12, 11)}]

rng1 = pd.date_range('2015-02-24', periods=5, freq='D')
df_counts = pd.DataFrame({ 'Date': rng1})

在 Excel 中,我会创建一列日期,然后使用每个日期作为 sumproduct 的一部分来测试数据表中的每一行的各种条件。每个日期的总诊断如下所示:

=sumproduct(--(dataTable!diag_value = "True"),--(countTable!date_index = dataTable!diagDateColumn))

我不确定这是否是使用 python/pandas 时的正确方法。如果是,那么我可以轻松地创建一个具有相关日期的 DataFrame,如下所示:

rng1 = pd.date_range('2020-12-09', periods=7, freq='D')
df_counts = pd.DataFrame({ 'Date': rng1})

我不知道该怎么做是使用这个新表行中的日期作为条件来计算另一个数据框中的值?输出应该是:

    Date          Cases   CasesinQ       CasesNotinQ       Qended
0   2020-12-09    0       0              0                 0
1   2020-12-10    0       0              0                 1
2   2020-12-11    3       1              2                 1
3   2020-12-12    0       0              0                 0

我希望这张表是一个很好的绘图数据框(? - 这将是我第一次使用 python 绘图)。

我尝试过 len 和 count,但它们没有传递每一行值(日期)来计算它在数据数据帧中出现的频率。

标签: pythonexcelpandasexcel-formula

解决方案


推荐阅读