簡體   English   中英

為什么在使用.mean()時得到NaN

[英]Why do I get NaN when using .mean()

這是我在業余時間學習python的GIT開放課程的一部分。 該練習僅處理numpy。 因此,下面是創建文件路徑並導入數據。 我添加了skip_header,因為列名是字符串,並且我得到了Nan。 因此,數據有33列,而我只需要使用usecols添加的5列即可。

import numpy as np
fp = 'C:\\Users\\matij\\Documents\\exercise-5-MatijaKordic\\6153237444115dat.csv'
data = np.genfromtxt(fp, skip_header =1, usecols=(0, 2, 22, 27, 28), delimiter=',')

接下來,我需要將數據拆分為單獨的變量,分別稱為station,date,temp,temp_max和temp_min。 它們對應於usecols =(0,2,22,27,28)。

station = data[:, 0]
date = data[:, 1]
temp = data[:, 2]
temp_max = data[:, 3]
temp_min = data[:, 4]

之后,我需要計算以下內容:

數據中的華氏平均溫度是多少? (臨時變量)

最高溫度的標准偏差是多少? (temp_max變量)

數據中存在多少個唯一工作站? (電台變量)

因此,我這樣做:

temp_mean = temp.mean()
temp_max_std = temp_max.std()
station_count = np.unique(station)

我得到NaN的平均值和最大值。 對於唯一的電台,我得到[28450。 29980.]因此,我想我需要以某種方式在其中添加計數?

至於平均值和最大值:-最大值是Nan,這很好。 不知道為什么我要把它放在作業中,但這是一個不同的故事。 -意思是這個問題的原因。 當我打印temp時,我會得到值,那么為什么要得到temp.mean的NaN?

如果有人感興趣,以下是csv的鏈接: https : //drive.google.com/file/d/1rGneQTfUe2rq1HAPQ06rvLDxzi-ETgKe/view?usp=sharing

我同意Anubhav的帖子,但是我建議改用: np.nanmean(temp)來計算忘記NaN (非數字)條目的均值。 您還將得到相同的平均值: 41.58918641457781 max相同:

print(np.nanmean(temp))
print(np.nanmax(temp))

輸出:

41.58918641457781
65.0

您得到nan是因為numpy數組中的某些數據是nan 嘗試這個:

temp_mean = temp[~np.isnan(temp)].mean()
print(temp_mean)
temp_max_std = temp_max[~np.isnan(temp_max)].std()
print(temp_max_std)
station_count = np.unique(station)

輸出:

41.58918641457781
9.734807757434636
array([28450., 29980.])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM