wntr数据处理2 (添加时分秒等特征)

我们在前一章节中的数据处理里面发现,每一次都需要计算相应的秒作为index来取不同天的不同小时实在太过于复杂,在本文我们试图添加新的时分秒作为新的特征来简化数据处理的困难。

import wntr
import os


#导入
wn = wntr.network.WaterNetworkModel(r'c:\Users\wen EX\Desktop\WNTR-master\examples\networks\Net3.inp')
sim = wntr.sim.EpanetSimulator(wn)
results = sim.run_sim()


link_keys = results.link.keys()#把results.link字典当中的键拿出来,等会儿遍历
node_keys = results.node.keys()
for i in link_keys:
    results.link[i].to_csv(r'../dataprocess file/'+i+'.csv')
for j in node_keys:
    results.node[j].to_csv(r'../dataprocess file/'+j+'.csv')

如图我们已经实现了将各类数据进行导出,node和link的各类属性也可以分不同文件进行储存。
在这里插入图片描述
打开一个文件我们发现,数据的格式不太是我们想要的,数据的第一列是一个colum name为Unname=0的一个以秒为单位的数据:
在这里插入图片描述
我们想要添加一些新的列,分别是天数,时间数,周数,小时数,分钟数等的新的特征:

with open(i) as a:
        pd_ = pd.read_csv(a)
        pd_ = pd.DataFrame(pd_)
        #把第一列的名称改成time(s)
        pd_.rename(columns={'Unnamed: 0':'time(s)'},inplace=True)
        #to_datetime 取出秒为单位的时间 转换格式
        time_value = pd.to_datetime(pd_['time(s)'], unit='s')
        #增加索引
        time_value = pd.DatetimeIndex(time_value)
        #增加天 小时 分钟数作为索引
        pd_['day'] = time_value.day
        pd_['hour'] = time_value.hour
        pd_['minute'] = time_value.minute

可以看见我们在列表的最后增加了时间的不同特征:
在这里插入图片描述
最后我们想要遍历目录下所有的文件 ,做同样类型的修改,输出到另一个文件中,完成第一步的处理,也就是增加时间特征:
在这里插入图片描述

import pandas as pd
import os

all_file = []
#获得当前路径,我们把python文件创建在输出csv文件的目录下
path = os.getcwd()
#os.walk遍历文件内容
list_files = os.walk(path)
for dirpath,dirnames,filenames in list_files:
    for dir in dirnames:
        all_file.append(os.path.join(dirpath,dir))
    for name in filenames:
        all_file.append(os.path.join(dirpath,name))

#第一个文件是我们的python文件.py 我们把它弹出
all_file.pop(0)

#储存文件名的列表进行遍历
for i in all_file:
    print(i)
    #提取文件名 去掉空格 指定分隔符为\ 最后一个元素是文件名
    names = i.strip().split('\\')[-1]
    print(names)
    #读取路径
    with open(i) as a:
        pd_ = pd.read_csv(a)
        pd_ = pd.DataFrame(pd_)
        #增加特征
        pd_.rename(columns={'Unnamed: 0':'time(s)'},inplace=True)
        time_value = pd.to_datetime(pd_['time(s)'], unit='s')
        time_value = pd.DatetimeIndex(time_value)
        pd_['day'] = time_value.day
        pd_['hour'] = time_value.hour
        pd_['minute'] = time_value.minute
    #输出文件
    pd_.to_csv(r'../dataprocessstep1/'+names)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值