工程中檢測很多個閥門的開關,並且按照時間順序對閥門進行排序。
剛用python,純小白,還請大家不吝賜教~~
挑選出閥門開、關的電訊號,並選擇他相對應的時間,然後將所有的時間排序,因此能看出按照時間順序的開關順序。
現在主要是想通過pandas裡的dataframe來處理資料,csv的資料如圖,第一列就是時間,k220,k320,k420就是我的三個閥門。
1.就是挑選出這箭頭指的點,然後得出他對應的時間值,對時間值進行排序。
2. 由於曲線並不都是這樣突然增大或減少,有的是慢慢增長。但是所有的閥門都要第乙個突然變化點的值。
因此判定條件為,如圖黑顏色曲線,就要規定變化的前乙個值在一定的範圍內,它後面的值比它大很多,後面的值就是需要的值,即 i<=7.1, 然後i+1減去i>0.6,選取此時的i+1就是我要的點
3。最終想要的輸出的結果如圖
目前沒有用dataframe採用的這樣的辦法,但是總覺的dataframe更好用,不知道怎麼下手,求大神幫忙!!
#原始資源, 這是個字典 字串 「1564121838」 是key, value 是 0.423 這些。
#這個字典一共有5組鍵值對
sources =
#獲取字典的長度
length =
len(sources)
#把字典元素變成list集合此時集合裡裝的是 鍵值對元組,即 [
("1564121838"
,0.423),
("1564121853"
,3.594)]
sourceitems =
list
(sources.
items()
)#遍歷0到字典長度-
1 這裡是 0到4
for i in
range
(length-1)
: # print
(i) # 拿到i位置的元組
currentitem = sourceitems[i]
# i+
1 位置的元組
nextitem = sourceitems[i+1]
# i 位置的 value 就是0.423這種value
currentvalue = currentitem[1]
# i+
1 位置的 value
nextvalue = nextitem[1]
# 兩個位置的差
diffvalue = nextvalue - currentvalue
print
(diffvalue)
if(nextvalue != currentvalue)
&(diffvalue >=3)
: #如果i+
1位和i位置的值 不相等 並且差 大於等於三,那麼判定為第一次突變。進入該分支
#i+1位置就是需要的第一次變大的值和時間
print
("符合條件"
)print
(nextitem)
print
("time: "
, nextitem[0]
)print
("value: "
, nextitem[1]
) #只要找到符合條件的就退出迴圈
break
dataframe只會從裡面選出幾列進行分析,別的無法進展。。。求幫忙!!謝謝!!
import pandas as pd
df = pd.
read_csv
(r"e:\\11.csv"
,encoding =
"gbk"
,index_col=
0,header=4)
, usecols =[0
,117
,118
,119
,121
,122
,124
,126
,128
,129
,130
,131
,132
]
Pandas DataFrame中對異常值的處理
相信大多數朋友們在使用pandas讀取excel資料 如csv檔案 時,中往往含有異常的值。這些異常值通過包括三大類 none,null,nan。但是none和null通常可以通過 來判斷,相對比較簡單,因此本文主要介紹對nan異常值的處理。眾所周知,nan其實指的是not a number,也就是...
R中異常值檢測
data1 complete.cases selectdata 布林判斷 true代表1,false代表0 sum complete.cases selectdata 完整資料200條 sum complete.cases selectdata 不完整資料1條 mean complete.cases...
ArcGIS中修復異常值
在處理遙感資料過程中,往往會有異常值的出現,例如modis資料的無效值以及dem中的空值等,我們在使用資料時一般需要去除這些異常值,並將其修正至相對準確的值。一般而言,異常值時乙個範圍內的值或者空值,提取異常值的主要目的是將其設為空值,便於後續的插值操作。關於查詢異常值,arcgis幫助文件有詳細說...