Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News Sign UpSign In
| Download

Plotagem de cargas para os dados adquiridos na Bancada Dinâmica nos dias 22 e 23 de julho de 2018.

Views: 68
Kernel: SageMath (stable)
# Plota graficos da biblioteca Matplotlib abaixo de cada celula %matplotlib inline # Importa as bibliotecas Pandas (importaçao e tratamento de dados tabelados), Numpy (calculos matriciais de dados) e Matplotlib (plotagem) import pandas as pd import numpy as np import matplotlib.pyplot as plt
# Importa arquivo "Teste [...] .txt" como "df_raw" (DataFrame) # Na importaçao ponto (.) é usado como separador (em vez da virgula) e os dados sao separados entre si por tab (\t). # A segunda, que contem as unidades, é pulada na importaçao. df_raw = pd.read_csv('Teste 1 - Asa Regular Oficial 2018 a 0 graus.txt', sep='.', delimiter='\t', na_values=['NaN', 'OutOfRange'], skiprows=(1,1)) # **Para trocar os dados a serem analisados basta trocar o nome do arquivo na linha anterior** # Repassa os dados de df_raw para df, para tratarmos. Assim o dataframe original é mantido intacto. df = df_raw # Cria uma nova coluna chamada "Tempo zerado" que basicamente pega a coluna de tempo e deduz do primeiro valor de Tempo (6470.9169). df['Tempo zerado'] = df['Tempo'] - df['Tempo'][0] # Seta a coluna "Tempo zerado" como index de dados, isto é, por onde eles serao referenciados. df = df.set_index('Tempo zerado') # Imprime o dataframe. df.head()
Tempo Mensagem Modo Tamanho do arquivo Angulo de incidencia Velocidade do carro Raw Pitot Data - Pitot 0 Pressao Dinamica Ref.- Pitot 0 VCAS Ref. - Pitot 0 Raw Pitot Data - Pitot 1 ... Forca - Celula Frontal Esquerda Raw Cell Data - Celula Traseira Direita Forca - Celula Traseira Direita Raw Cell Data - Celula Traseira Esquerda Forca - Celula Traseira Esquerda Lift Drag Moment Distance Cp Unnamed: 35
Tempo zerado
0.0000 84178.5793 0 4.0 0.000 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 -0.018 0.0 0.0 NaN
0.0076 84178.5869 No command 4.0 0.001 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 -0.018 0.0 0.0 NaN
0.0145 84178.5938 No command 4.0 0.001 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 -0.018 0.0 0.0 NaN
0.0212 84178.6005 No command 4.0 0.001 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 -0.018 0.0 0.0 NaN
0.0282 84178.6075 No command 4.0 0.001 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 -0.018 0.0 0.0 NaN

5 rows × 36 columns

# Passa os dados da coluna "Lift" para um novo DataFrame chamado "lift", de modo a facilitarmos o tratamento desta coluna. lift = df[['Lift']] # Plota a coluna "lift" lift.plot(figsize=(28,8)).grid()
Image in a Jupyter notebook
# Claramente existem outliers, provavelmente frutos de ruido, que impossibilitam a leitura correta do grafico. Vamos resolver isso:
# Cropa os dados de lift, removendo todos os dados com valores acima de 250 ou abaixo de -10. Esses pontos sao outliers (pontos fora da curva) provavelmente causados por leituras incorretas. # Apos a cropagem os dados que foram cropados viram "NaN", e por isso o método "fillna()" é usado, de tras pra frente (bfill) e de frente pra tras (ffill). # Aplica uma mediana mòvel aos dados, de modo que valores de picos sejam removidos. Esse filtro procura eliminar os outliers derivados de ruido, mas preservando os dados originais quase que em sua totalidade lift_median = lift.rolling(window=int(15), center=True).median().fillna(method='ffill').fillna(method='bfill') # Plota o grafico lift_median.plot(figsize=(28,8)).grid()
Image in a Jupyter notebook
# Agora sim
# Modifica o dataframe original com os dados tratados de Lift df[['Lift']] = lift_median
# Realiza nas outras cargas (e velocidade) os mesmos procedimentos que foram aplicados ao Lift drag = df[['Drag']] drag_median = drag.rolling(window=int(15), center=True).median().fillna(method='ffill').fillna(method='bfill') df[['Drag']] = drag_median moment = df[['Moment']] moment_median = moment.rolling(window=int(15), center=True).median().fillna(method='ffill').fillna(method='bfill') df[['Moment']] = moment_median velocity = df[['Velocidade do carro']] velocity_median = velocity.rolling(window=int(15), center=True).median().fillna(method='ffill').fillna(method='bfill') df[['Velocidade do carro']] = velocity_median ClCd = df[['Lift']].div(df[['Drag']])
# Plota todos os graficos juntos df['Lift'].plot(figsize=(26, 8)).grid() df['Drag'].plot(figsize=(26, 8)).grid() df['Moment'].plot(figsize=(26, 8)).grid() df['Velocidade do carro'].plot(figsize=(26, 8)).grid()
Image in a Jupyter notebook
# Plota todos os graficos juntos x_limits = (883,885) y_limits = (0,200) df['Lift'].plot(figsize=(26, 8), xlim=x_limits, ylim=y_limits).grid() df['Drag'].plot(figsize=(26, 8), xlim=x_limits, ylim=y_limits).grid() df['Moment'].plot(figsize=(26, 8), xlim=x_limits, ylim=y_limits).grid() df['Velocidade do carro'].plot(figsize=(26, 8), xlim=x_limits, ylim=y_limits).grid()
Image in a Jupyter notebook
# Plota todos os graficos juntos ClCd.head() ClCd.plot(figsize=(26, 8)).grid()
Image in a Jupyter notebook