这是我在空闲时间学习python的git开放课程的一部分。练习仅与numpy交往。因此,下面正在创建一个文件操并导入数据。我添加了skip_header,因为列名是字符串,我得到了nan。因此,数据有33列,我只需要5个使用USECOL添加的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=',')
接下来,我需要将数据分为单独的变量,称为站点,日期,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 for temp.mean呢?
如果有人有兴趣,这是指向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.])