Fuente: https://github.com/PyDataMadrid2016/Conference-Info/tree/master/workshops_materials/20160408_1100_Pandas_for_beginners/tutorial por Kiko Correoso, licencia MIT
En la carpeta de datos tenemos un fichero que se llama model.txt que contiene datos de medidas de viento: velocidad, orientación, temperatura...
In [1]:
!head ../data/model.txt
In [2]:
import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib as mpl
from IPython.display import display
In [3]:
model = pd.read_csv(
"../data/model.txt", delim_whitespace=True, skiprows = 3,
parse_dates = {'Timestamp': [0, 1]}, index_col = 'Timestamp')
In [4]:
model.head()
Out[4]:
Sobre el conjunto de datos model
:
- Representar la matriz
scatter
de la velocidad y orientación del viento de los primeros mil registros.- Misma matriz scatter para los 1000 registros con mayor velocidad, ordenados.
- Histograma de la velocidad del viento con 36 particiones.
- Histórico de la velocidad media, con los datos agrupados por años y meses.
- Tabla de velocidades medias en función del año (filas) y del mes (columnas).
- Gráfica con los históricos de cada año, agrupados por meses, superpuestos.
Representamos la matriz scatter de la velocidad y orientación del viento de los primeros mil registros:
In [5]:
pd.tools.plotting.scatter_matrix(model.loc[model.index[:1000], 'M(m/s)':'D(deg)'])
Out[5]:
Misma matriz scatter para los 1000 registros con mayor velocidad:
In [6]:
pd.tools.plotting.scatter_matrix(
model.loc[model.sort_values('M(m/s)', ascending=False).index[:1000],
'M(m/s)':'D(deg)']
)
Out[6]:
In [7]:
model.loc[:, 'M(m/s)'].plot.hist(bins=np.arange(0, 35))
Out[7]:
In [8]:
model['month'] = model.index.month
model['year'] = model.index.year
Histórico de la velocidad media:
In [9]:
model.groupby(by = ['year', 'month']).mean().head(24)
Out[9]:
In [10]:
model.groupby(by=['year', 'month']).mean().plot(y='M(m/s)', figsize=(15, 5))
Out[10]:
Media móvil de los datos agrupados por mes y año:
In [11]:
monthly = model.groupby(by=['year', 'month']).mean()
monthly['ma'] = monthly.loc[:, 'M(m/s)'].rolling(5, center=True).mean()
monthly.head()
Out[11]:
In [12]:
monthly.loc[:, ['M(m/s)', 'ma']].plot(figsize=(15, 6))
Out[12]:
In [13]:
monthly.loc[:, 'M(m/s)'].reset_index().pivot(index='year', columns='month')
Out[13]:
In [14]:
monthly.loc[:, 'M(m/s)'].reset_index().pivot(
index='year', columns='month'
).T.loc['M(m/s)'].plot(
figsize=(15, 5), legend=False
)
Out[14]: