python 刪除離群值(每一行為一類資料)

2021-10-05 08:55:23 字數 1121 閱讀 9876

刪除有多行字串的json檔案中的離群值

def

processhold

(eachsubject,directory,newfile)

: filename =

'cmudatacol/hold/subject.json'

.format

(eachsubject)

# 原檔案

with

open

(filename,

'r')

as f:

for jsonstr in f.readlines():

# 按行讀取原檔案

# 這裡的情況是每一行為一類數值,該行內的資料相互比較找出是否有離群值

# 若存在離群值,則刪除該行資料

data = json.loads(jsonstr)

#計算四分位點

a = numpy.array(data)

q1 = numpy.percentile(a,

25)

q3 = numpy.percentile(a,

75)

iqr = q3 - q1

# 找出異常值

i =0for item in

zip(data)

:# 在正常值範圍內時 i+1

if item <= q3 +

(1.5

*iqr)

and item >= q1 -

(1.5

*iqr)

:

i = i +

1if i ==10:

# 這裡是因為我的json檔案中每行data有10個元素(如果有更好的方法,請教我一下,謝謝您!)

holdtime = data

with

open

(newfile,

'a')

as f:

# 將非離群資料存入新檔案

json.dump(holdtime, f)

f.write(

'\n'

)

python刪除某一行

整理了網路上的一些方法,一般有兩種方法 第一種 是先把檔案讀入記憶體,在記憶體中修改後再寫入原始檔。例子 將內容包含 123 的所有行刪去 with open c users lai desktop 1.txt r as r lines r.readlines with open c users l...

python使用index引數設定每一行的索引名

和columns引數類似,python中的pandas為每一行也設定了索引名,在預設的環境下,索引是乙個從0開始的乙個rangeindex物件 object 我們可以在df資料初始化的時候,對index變數進行賦值從而實現修改index索引的任務。我們可以通過以下 來進行演示 import pand...

python矩陣運算,對矩陣每一行乘以不同的係數

比如先隨機建立乙個3x3的矩陣 假設要實現第一行乘以1,第二行乘以2,第三行乘以3實現過程如下 a np.array 1 2,3 先建立 1,2,3 陣列 f np.empty shape 0 len a 建立空矩陣m 0 利用矩陣索引取矩陣每一行元素,初值為0 for i in range len...