У меня есть следующий dataframe:Работы с недостающими данными
from pandas import *
from math import *
data=read_csv('agosto.csv')
Fecha DirViento MagViento
0 2011/07/01 00:00 N 6.6
1 2011/07/01 00:15 N 5.5
2 2011/07/01 00:30 N 6.6
3 2011/07/01 00:45 N 7.5
4 2011/07/01 01:00 --- 6.0
5 2011/07/01 01:15 --- 7.1
6 2011/07/01 01:30 S 4.7
7 2011/07/01 01:45 SE 3.1
.
.
.
Первое, что я хочу сделать, чтобы преобразовать значения ветров числовых значений для того, чтобы получить и и у компонентов ветров , Но когда я выполняю операции, отсутствующие данные (---) генерируют конфликты.
direccion=[]
for i in data['DirViento']:
if i=='SSW':
dir=202.5
if i=='S':
dir=180.0
if i=='N':
dir=360.0
if i=='NNE':
dir=22.5
if i=='NE':
dir=45.0
if i=='ENE':
dir=67.5
if i=='E':
dir=90.0
if i=='ESE':
dir=112.5
if i=='SE':
dir=135.0
if i=='SSE':
dir=157.5
if i=='SW':
dir=225.0
if i=='WSW':
dir=247.5
if i=='W':
dir=270.0
if i=='WNW':
dir=292.5
if i=='NW':
dir=315.0
if i=='NNW':
dir=337.5
direccion.append(dir)
data['DirViento']=direccion
я получаю следующее:
data['DirViento'].head()
0 67.5
1 67.5
2 67.5
3 67.5
4 67.5
, поскольку отсутствуют данные присваивается значение других строк? Компоненты получают с помощью следующего кода
Vviento=[]
Uviento=[]
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'],inplace=True)
g = index.groupby(level=0)
, но я получаю ошибку
IndexError: index out of range for array
Я делаю что-то не так? Как выполнять операции без учета отсутствующих данных?
Если вы хотите добавить еще один столбец, который вычисленная на основе другого столбцы, ваш путь (цикл по строкам, построение списка, добавление списка в фрейм) не очень в духе панд. Гораздо лучший способ: «data ['PromeU'] = data ['MagViento'] * sin ((данные ['DirViento'] + 180) * (pi/180.0))' –