util.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2024/6/21
  3. # @Author : 魏志亮
  4. import datetime
  5. import pandas as pd
  6. def estimate_time_interval(df, time_str):
  7. """
  8. :return: 查询时间间隔
  9. """
  10. begin = datetime.datetime.now()
  11. df1 = pd.DataFrame(df[time_str])
  12. df1['chazhi'] = df1[time_str].shift(-1) - df1[time_str]
  13. result = df1.sample(int(df1.shape[0] / 100))['chazhi'].value_counts().idxmax().seconds
  14. del df1
  15. return result
  16. def get_time_space_count(start_time: datetime.datetime, end_time: datetime.datetime, time_space=1):
  17. """
  18. 获取俩个时间之间的个数
  19. :return: 查询时间间隔
  20. """
  21. delta = end_time - start_time
  22. total_seconds = delta.days * 24 * 60 * 60 + delta.seconds
  23. return int(total_seconds / time_space) + 1
  24. def calculate_time_difference(now: datetime.datetime, date: datetime.datetime):
  25. # 计算时间差
  26. delta = now - date
  27. # 分解timedelta对象
  28. years, days = divmod(delta.days, 365)
  29. months, days = divmod(days, 30) # 这里假设一个月有30天
  30. hours, remainder = divmod(delta.seconds, 3600)
  31. minutes, seconds = divmod(remainder, 60)
  32. return years, months, days, hours, minutes, seconds
  33. if __name__ == '__main__':
  34. df = pd.read_csv(r"D:\data\清理数据\密马风电场\test_11_test\minute\WOG00469.csv")
  35. df['time_stamp'] = pd.to_datetime(df['time_stamp'])
  36. space = estimate_time_interval(df, 'time_stamp')
  37. min = df['time_stamp'].min()
  38. max = df['time_stamp'].max()
  39. result = get_time_space_count(min, max, space)
  40. print(df.shape)
  41. print(space, min, max, result)
  42. year, monht, day, _, _, _ = calculate_time_difference(datetime.datetime.now(), max)
  43. print(f"{year}年{monht}月{day}天")