这是我在业余时间学习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.]因此,我想我需要以某种方式在其中添加计数?
关于均值和最大值: -Max是Nan,那很好。不知道为什么我要把它放在作业中,但这是一个不同的故事。 -意思是这个问题的原因。当我打印temp时,我会得到值,那么为什么要得到temp.mean的NaN?
如果有人对此感兴趣,请访问以下链接: https://drive.google.com/file/d/1rGneQTfUe2rq1HAPQ06rvLDxzi-ETgKe/view?usp=sharing
答案 0 :(得分:3)
我同意Anubhav的帖子,但是我建议改用:
np.nanmean(temp)
以计算忘记NaN
(非数字)条目的均值。您还将得到相同的均值:41.58918641457781
。
max
也是如此:
print(np.nanmean(temp))
print(np.nanmax(temp))
输出:
41.58918641457781
65.0
答案 1 :(得分:1)
您得到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.])