util.py 1.7 KB

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