我对尝试计算许多变量的统计数据的代码有疑问。这段代码的奇怪之处在于与某些数据库一起运行,而不是与其他数据库一起运行。数据库具有相同的特征,只需更改每个月的月份。
data = read_csv('/home/mcidas/Escritorio/estadisticas-cea/linux/2011/datos/emas/amealco/enero.csv',skiprows=1,names=['Fecha','Hora','C','D','E','Temperatura','TempRocio','DirViento','I','MagViento','K','Humedad','Presion','N','PreciAcu','P','Q','R','S'],header=0)
direccion=[]
for i in data['DirViento']:
if i=='SSW':
dir=202.5
elif i=='S':
dir=180.0
elif i=='N':
dir=360.0
elif i=='NNE':
dir=22.5
elif i=='NE':
dir=45.0
elif i=='ENE':
dir=67.5
elif i=='E':
dir=90.0
elif i=='ESE':
dir=112.5
elif i=='SE':
dir=135.0
elif i=='SSE':
dir=157.5
elif i=='SW':
dir=225.0
elif i=='WSW':
dir=247.5
elif i=='W':
dir=270.0
elif i=='WNW':
dir=292.5
elif i=='NW':
dir=315.0
elif i=='NNW':
dir=337.5
else:
dir=np.nan
direccion.append(dir)
data['DirViento']=direccion
Uviento=[]
Vviento=[]
for i in range(0,len(data['MagViento'])):
Uviento.append((data['MagViento'][i]*sin((data['DirViento'][i]+180)*(pi/180.0))))
Vviento.append((data['MagViento'][i]*cos((data['DirViento'][i]+180)*(pi/180.0))))
data['PromeU']=Uviento
data['PromeV']=Vviento
index=data.set_index(['Fecha','Hora'])
g = index.groupby(level=0)
stat_cea_mean = g.agg({'PromeU':np.mean,'PromeV':np.mean,'Temperatura':np.mean,'TempRocio':np.mean,'Humedad':np.mean,'Presion':np.mean,'PreciAcu':np.sum})
上面的代码成功运行,但是当我更改月份(到八月)并使用相同的代码时,我收到以下错误:
首先,当我运行相同的代码时,我遇到了问题
index=data.set_index(['Fecha','Hora'])
g = index.groupby(level=0)
IndexError: index out of range for array
第二个当我尝试更改索引时
index=data.set_index(['Fecha','Hora'])
g = data.groupby(level=0)
stat_cea_mean = g.agg({'PromeU':np.mean,'PromeV':np.mean,'Temperatura':np.mean,'TempRocio':np.mean,'Humedad':np.mean,'Presion':np.mean,'PreciAcu':np.sum})= data.groupby(level=0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/site-packages/pandas-0.9.1-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 304, in agg return self.aggregate(func, *args, **kwargs)
File "/usr/lib64/python2.6/site-packages/pandas-0.9.1-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 1573, in aggregate result[col] = colg.aggregate(agg_how)
File "/usr/lib64/python2.6/site-packages/pandas-0.9.1-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 1301, in aggregate return getattr(self, cyfunc)()
File "/usr/lib64/python2.6/site-packages/pandas-0.9.1-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 319, in mean return self._cython_agg_general('mean')
File "/usr/lib64/python2.6/site-packages/pandas-0.9.1-py2.6-linux-x86_64.egg/pandas/core/groupby.py", line 408, in _cython_agg_general raise DataError('No numeric types to aggregate')
pandas.core.groupby.DataError: No numeric types to aggregate
enero 的数据框
Data columns:
Fecha 4464 non-null values
Hora 4464 non-null values
C 4464 non-null values
D 4464 non-null values
E 4464 non-null values
Temperatura 4464 non-null values
TempRocio 4464 non-null values
DirViento 4464 non-null values
I 4464 non-null values
MagViento 4464 non-null values
K 4464 non-null values
Humedad 4464 non-null values
Presion 4464 non-null values
N 4464 non-null values
PreciAcu 4464 non-null values
P 4464 non-null values
Q 4464 non-null values
R 4464 non-null values
S 4464 non-null values
dtypes: float64(8), int64(4), object(7)
data['DirViento']
0 SSW
1 SSW
2 SSW
3 SSW
4 SSW
5 SW
6 SSW
7 SW
8 SW
9 SW
10 SSW
11 SSW
12 SSW
13 SSW
14 SSW
...
4449 SW
4450 SSW
4451 SSW
4452 SW
4453 SW
4454 SW
4455 SW
4456 SW
4457 SW
4458 SW
4459 SW
4460 SSW
4461 SW
4462 SW
4463 SW
Name: DirViento, Length: 4464
agosto 的数据框
数据列:
Fecha 3703 non-null values
Hora 3703 non-null values
C 3703 non-null values
D 3703 non-null values
E 3703 non-null values
Temperatura 3703 non-null values
TempRocio 3703 non-null values
DirViento 3703 non-null values
I 3703 non-null values
MagViento 3703 non-null values
K 3703 non-null values
Humedad 3703 non-null values
Presion 3703 non-null values
N 3703 non-null values
PreciAcu 3703 non-null values
P 3703 non-null values
Q 3703 non-null values
R 3703 non-null values
S 3703 non-null values
dtypes: float64(7), object(12)
data['DirViento']
0 ENE
1 E
2 ENE
3 ENE
4 E
5 E
6 E
7 E
8 E
9 E
10 E
11 E
12 E
13 E
14 ESE
...
3689 ---
3690 ---
3691 ---
3692 ---
3693 ---
3694 ---
3695 ---
3696 ---
3697 ---
3698 ---
3699 ---
3700 ---
3701 ---
3702 ---
3703 NaN
Name: DirViento, Length: 3704
抱歉问了这么多,但我真的很想学习