当前位置: 首页 > wzjs >正文

网站建设体质喝什么茶免费建站网站群

网站建设体质喝什么茶,免费建站网站群,苏州做网站优化,h5网站开发哪个好这里写自定义目录标题 动机代码1,这个代码是有问题的代码2,这个代码是我调试代码。拆分代码,最后找到问题所在,这个代码是正确的代码3。本以为找到问题所在之后,又稍微修改了下代码 2,这个代码还是没问题的…

这里写自定义目录标题

  • 动机
    • 代码1,这个代码是有问题的
    • 代码2,这个代码是我调试代码。拆分代码,最后找到问题所在,这个代码是正确的
    • 代码3。本以为找到问题所在之后,又稍微修改了下代码 2,这个代码还是没问题的
    • 代码4。本以为找到问题所在之后,又稍微修改了下代码 1,这个代码还是没问题的

动机

今天写代码,处理通量站数据的时候出错。代码逻辑没问题,但是就是得不到想要的结果,然后做个笔记。可能问题是我自己遇到的,在这里其他人也没经历,所以也看不懂。总体而言:Pandas:从一个DataFrame中直接索引赋值到另一个索引位置出错。必须使用一个中间变量去固定。虽然解决了问题,好像还是不知道为什么。我尝试过换python 版本(3.7 和 3.10),但是没用。

代码1,这个代码是有问题的

import pandas as pd
import numpy as np# 假设 siteData_reindexed 是你的 DataFrame
# 这里是一个示例 DataFrame
# siteData_reindexed = pd.DataFrame({
#     'SW_IN': [np.nan, 1, 2, np.nan, 4, np.nan, 6, 7, 8, 9, 10, np.nan],
#     'LW_IN': [1, 2, np.nan, 4, np.nan, 6, 7, np.nan, 9, 10, np.nan, 12],
#     'WS': [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
# }, index=pd.date_range(start="2019-06-26 14:00:00", end="2020-11-17 10:00:00", freq='60min'))# 计算每天的缺失值比例
rad_daily_miss_rate = siteData_reindexed[["SW_IN", "LW_IN"]].resample('D').apply(lambda x: x.isnull().mean())# 创建一个新的 DataFrame 来存储填补后的数据
filled_data = siteData_reindexed.copy()# 遍历每天的缺失值比例
for date, ratios in rad_daily_miss_rate.iterrows():print("##" * 30)sw_in_ratio = ratios['SW_IN']lw_in_ratio = ratios['LW_IN']print(date, sw_in_ratio, lw_in_ratio)print("前:")print(filled_data.loc[date - pd.Timedelta(hours=1): date + pd.Timedelta(hours=23), ["SW_IN", "LW_IN"]])# 检查缺失比例if sw_in_ratio == 0 and lw_in_ratio == 0:print("没有参加填补")# 如果缺失比例为0,什么都不做continueelif sw_in_ratio < 0.4 and lw_in_ratio < 0.4:# 如果缺失比例小于40%,使用 .ffill() 和 .bfill() 填补当天的 'SW_IN' 和 'LW_IN'filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']] = filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']].ffill().bfill()else:# 否则,使用前一天的24小时数据填补 'SW_IN' 和 'LW_IN'previous_day = date - pd.Timedelta(days=1)if previous_day in filled_data.index:print(f"填补前一天的数据: {previous_day}")print(filled_data.loc[previous_day:previous_day + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']])# 这里就是问题所在的位置filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']] = filled_data.loc[previous_day:previous_day + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']]else:print(f"前一天 {previous_day} 的数据不存在")print("后:")print(filled_data.loc[date - pd.Timedelta(hours=1): date + pd.Timedelta(hours=23), ["SW_IN", "LW_IN"]])# 结果
# print(filled_data)

问题出在这里 filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']] = filled_data.loc[previous_day:previous_day + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']]。必须使用一个中间变量去将数值固定,否则在内存中索引,会匹配错误。我是这么理解的。可能也是我写代码习惯不太好。

代码2,这个代码是我调试代码。拆分代码,最后找到问题所在,这个代码是正确的

""""""# 计算每天的缺失值比例
rad_daily_miss_rate = siteData_reindexed[["SW_IN","LW_IN"]].resample('D').apply(lambda x: x.isnull().mean())# 创建一个新的 DataFrame 来存储填补后的数据
filled_data= siteData_reindexed.copy()# 遍历每天的缺失值比例
for date, ratios in rad_daily_miss_rate.iterrows():if date <= pd.Timestamp("2019-06-29 23:00:00") :sw_in_ratio = ratios['SW_IN']lw_in_ratio = ratios['LW_IN']# 检查缺失比例if sw_in_ratio == 0 and lw_in_ratio == 0:print("没有参加填补")# 如果缺失比例为0,什么都不做continueelif sw_in_ratio < 0.4 and lw_in_ratio < 0.4:print("进入  sw_in_ratio < 0.4 and lw_in_ratio < 0.4 ")# 如果缺失比例小于30%,使用 .ffill() 和 .bfill() 填补当天的 'SW_IN' 和 'LW_IN'filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']] = filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']].ffill().bfill()else:print("进入 else")# 否则,使用前一天的24小时数据填补 'SW_IN' 和 'LW_IN'# 这个放置位置的索引timeRange = pd.date_range(start= date, end=date + pd.Timedelta(days=1), freq='60min')for date_index in timeRange:# 确保匹配到的是前一天的数据print(f"date_index: {date_index}")# 必须使用一个中间变量去将数值固定,否则在内存中索引,会匹配错误previous_day_value = siteData_reindexed.loc[date_index - pd.Timedelta(days=1), ['SW_IN', 'LW_IN']]print(f"前一天数据: {previous_day_value}")# 检查是否能成功填充filled_data.loc[date_index, ['SW_IN', 'LW_IN']] = previous_day_valueprint(f"填补后的数据: {filled_data.loc[date_index, ['SW_IN', 'LW_IN']]}")print("后:")print(filled_data.loc[date:date + pd.Timedelta(hours=23),["SW_IN","LW_IN"]])
# 结果
# print(filled_data)

代码3。本以为找到问题所在之后,又稍微修改了下代码 2,这个代码还是没问题的

""""""# 计算每天的缺失值比例
rad_daily_miss_rate = siteData_reindexed[["SW_IN","LW_IN"]].resample('D').apply(lambda x: x.isnull().mean())# 创建一个新的 DataFrame 来存储填补后的数据
filled_data= siteData_reindexed.copy()# 遍历每天的缺失值比例
for date, ratios in rad_daily_miss_rate.iterrows():if date <= pd.Timestamp("2019-06-29 23:00:00") :sw_in_ratio = ratios['SW_IN']lw_in_ratio = ratios['LW_IN']# 检查缺失比例if sw_in_ratio == 0 and lw_in_ratio == 0:print("没有参加填补")# 如果缺失比例为0,什么都不做continueelif sw_in_ratio < 0.4 and lw_in_ratio < 0.4:print("进入  sw_in_ratio < 0.4 and lw_in_ratio < 0.4 ")# 如果缺失比例小于30%,使用 .ffill() 和 .bfill() 填补当天的 'SW_IN' 和 'LW_IN'filled_data.loc[date:date + pd.Timedelta(days=1), ['SW_IN', 'LW_IN']] = filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']].ffill().bfill()else:print("进入 else")# 否则,使用前一天的24小时数据填补 'SW_IN' 和 'LW_IN'# 变量前一天previous_day = date - pd.Timedelta(days=1)# 前一天的数据previous_day_data = siteData_reindexed.copy().loc[previous_day:date, ['SW_IN', 'LW_IN']]filled_data.loc[date:date + pd.Timedelta(days=1), ['SW_IN', 'LW_IN']] = previous_day_data# 这个放置位置的索引# timeRange = pd.date_range(start= date, end=date + pd.Timedelta(days=1), freq='60min')# for date_index in timeRange:##     # 确保匹配到的是前一天的数据#     print(f"date_index: {date_index}")#     # 必须使用一个中间变量去将数值固定,否则在内存中索引,会匹配错误#     previous_day_value = siteData_reindexed.loc[date_index - pd.Timedelta(days=1), ['SW_IN', 'LW_IN']]#     print(f"前一天数据: {previous_day_value}")##     # 检查是否能成功填充#     filled_data.loc[date_index, ['SW_IN', 'LW_IN']] = previous_day_value#     print(f"填补后的数据: {filled_data.loc[date_index, ['SW_IN', 'LW_IN']]}")print("后:")print(filled_data.loc[date:date + pd.Timedelta(hours=23),["SW_IN","LW_IN"]])
# 结果
# print(filled_data)

代码4。本以为找到问题所在之后,又稍微修改了下代码 1,这个代码还是没问题的

import pandas as pd
import numpy as np# 创建一个示例 DataFrame
data = {'SW_IN': [np.nan, 1, 2, np.nan, 4, np.nan, 6, 7, 8, 9, 10, np.nan],'LW_IN': [1, 2, np.nan, 4, np.nan, 6, 7, np.nan, 9, 10, np.nan, 12],'WS': [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
}
index = pd.date_range(start="2019-06-26 14:00:00", end="2020-11-17 10:00:00", freq='60min')
siteData_reindexed = pd.DataFrame(data, index=index)# 计算每天的缺失值比例
rad_daily_miss_rate = siteData_reindexed[["SW_IN", "LW_IN"]].resample('D').apply(lambda x: x.isnull().mean())# 创建一个新的 DataFrame 来存储填补后的数据
filled_data = siteData_reindexed.copy()# 遍历每天的缺失值比例
for date, ratios in rad_daily_miss_rate.iterrows():print("##" * 30)sw_in_ratio = ratios['SW_IN']lw_in_ratio = ratios['LW_IN']print(date, sw_in_ratio, lw_in_ratio)print("前:")print(filled_data.loc[date - pd.Timedelta(hours=1): date + pd.Timedelta(hours=23), ["SW_IN", "LW_IN"]])# 检查缺失比例if sw_in_ratio == 0 and lw_in_ratio == 0:print("没有参加填补")continueelif sw_in_ratio < 0.4 and lw_in_ratio < 0.4:# 填补当天的缺失值filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']] = filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']].ffill().bfill()else:# 使用前一天的24小时数据填补previous_day = date - pd.Timedelta(days=1)if previous_day in filled_data.index:print(f"填补前一天的数据: {previous_day}")previous_data = filled_data.loc[previous_day:previous_day + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']]print("前一天的数据:")print(previous_data)# 确保赋值的索引对齐filled_data.loc[date:date + pd.Timedelta(hours=23), ['SW_IN', 'LW_IN']] = previous_data.copy()else:print(f"前一天 {previous_day} 的数据不存在")print("后:")print(filled_data.loc[date - pd.Timedelta(hours=1): date + pd.Timedelta(hours=23), ["SW_IN", "LW_IN"]])# 结果
# print(filled_data)
http://www.dtcms.com/wzjs/596859.html

相关文章:

  • 东莞网站优化平台大数据精准营销策略
  • 网站的产品上传图片百度推广代理商赚钱吗
  • 网站可以做系统吗怎样做网站404
  • 网站建设交流平台兰州网站建设王道下拉強
  • 品牌查询网站网站模板加后台
  • 一个网站收录很高 但外链很少是什么原因班服定制的网站
  • 广州海珠做网站的公司咔咔做受视频网站
  • 怎么做网站背景图成都广告设计公司排名
  • 四川专业网站建设建设局网站招聘
  • 网站的分页做不好会影响主页网站优化软件排名器
  • 汕头网站制作唐山玉田网站建设
  • 五金加工东莞网站建设共享ip做网站
  • wordpress自定义输入上海seo优化服务公司
  • 南宁百度关键词优化seo销售好做吗
  • 南京建设监理协会网站打不开建设网站有哪些公司
  • 站长seo推广数字选用平台介绍
  • 网站开发教程 视频自己做的网站实现扫码跳转
  • 运用photoshop设计网站首页天津站设计单位
  • 网站开发网上宠物店管理系统广告公司照片
  • 企业网站免费建站程序网站程序 wordpress 织梦 discuz
  • 网站建设与运营考试梅州企业网站建设公司
  • 网站开发专业主修课程海搜网做的网站怎么办
  • 商业门户网站有哪些淘宝客网站建站
  • 柳州网站优化软文推广方法
  • 教育中介公司网站建设费用旧网站如何优化
  • 做外贸到什么网站上发布比较好一台云服务器可以做多少个网站
  • 建了网站怎么装饰自己做的网站 怎么在网上销售
  • 做百度百科的网站网站建设设计图软件
  • 长沙网站建设服务公司宁波网站推广优化哪家正规
  • 松江品划做网站公司网站开发及推广是怎么回事