====Complete Dataframe==== A //Complete Dataframe// is one where there is a **valid value for every time** in a time-indexed dataframe. In most cases, the data you'll request in a complex query won't have synchronised sample times. Some sensors update several times a second, others every few seconds, some once an hour. {{:pyapi:incomplete_table.png?500|}} ARDI uses its knowledge of your property types to fill your discrete and interpolate your continuous data to create a single table containing //all// of your points, that has values for every channel at every time (except for when sensors have failed). {{:pyapi:completetable.png?500|}} Of course, you can interpolate, back and forward-fill in Pandas very easily, but this system is //data-type aware//. If you're asking for a mixture of discrete and continuous data, the API avoids interpolating your discrete information, as shown in the **Noise Alert** column in the example tables above. You can create these through the [[AQLQuery_Execute_DF|AQLQuery::Execute_DF]] and [[AQLQuery_HistoryToDataframe|AQLQuery::HistoryToDataframe]] functions.