跳转至

快速入门

import tidypptsdm as tp

1. 一次巡检

mon = tp.run_monitor("D:/nedap/exports", days=7)

run_monitor() 读入文件夹中的全部导出文件(也包括子文件夹),整理成统一的访问记录,计算最近 days 天的各张日表,并列出最后一天的警报。屏幕上会打印摘要:

-- Monitoring NEDAP stations: 2024-05-19 to 2024-05-25 (7 days) --------
i 2 stations, 28 pigs; on 2024-05-25: 190 visits, 39.5 kg feed
! 2 alerts: 2 danger, 0 warning
  x Station 102: No visits on 2024-05-25 (15 pigs)
  x Pig 15983 (station 101): No visit for 2 days (last weight 143.0 kg)

没有自己的数据时,可以用自带的示例数据:tp.run_monitor(tp.load_example("nedap")),或者 tp.load_example("fire")。

监控窗口是截至 end_date 的 days 天(含首尾)。end_date 默认取数据里的最后一天;如果最后一天就是今天,则取昨天,因为白天导出的数据当天还不完整。也可以自己指定,如 end_date="2024-05-20"。

2. 结果

mon 是一个 Monitor,各张表都是 pandas DataFrame:

属性 内容
mon.stations 每台测定站每天一行
mon.houses 每栋每天一行(栋 = 测定站编号的前 house_width 位)
mon.pigs 每头猪每天一行,没有访问的日子也在
mon.pig_summary 每头猪一行:低采食天数、无访问天数、最后一天的状态等
mon.hours 最后一天每台测定站每小时一行
mon.alerts 最后一天的警报
mon.visits 窗口内的访问记录
mon.settings 参数和窗口

每一列的含义见表格与警报。

3. 宽表

tp.wide_table(mon.stations, "feed_kg")
  location   05-19   05-20   05-21   05-22  05-23   05-24   05-25    total
0      101  50.923  49.585  46.784  44.780  47.12  44.424  42.030  325.646
1      102  58.752  56.385  47.664  53.857  50.52  55.163  42.784  365.125

4. 报告和表格

out = "D:/nedap/monitor/2024-05-25"
tp.write_monitor_report(mon, out, open=True)   # index.html + img/
tp.write_monitor_tables(mon, out)               # monitor.xlsx

或者一步完成,自动写到以最后一天命名的子文件夹:

tp.monitor_to_folder("D:/nedap/exports", "D:/nedap/monitor", days=7, open=True)

5. 作图

plots = tp.plot_monitor(mon, "intake")   # 每台测定站一张
plots[0].figure                           # matplotlib Figure
tp.save_monitor_plots(plots, "plots")

五种图见图与报告。