Project

DATA ANALYSIS

AIM :

To write a script that does data analysis on python.

OBJECTIVE :

  1. Visualizing the data, i.e., to plot a graph between any two quantities according to user's input.
  2. Compatibility Check, i.e., code should exit gracefully, if a non-compatible file is provided as an input.
  3. To calculate basic engine performance calculations.

THEORY :

What is data analysis?

In simple words, data analysis is the process of collecting and organizing data in order to draw helpful conclusions from it. The process of data analysis uses analytical and logical reasoning to gain information from the data.

The main purpose of data analysis is to find meaning in data so that the derived knowledge can be used to make informed decisions.

Data analysis is a somewhat abstract concept to understand without the help of examples. So to better illustrate how and why data analysis is important for businesses, here are the 4 types of data analysis and examples of each.

  • Descriptive Analysis: Descriptive data analysis looks at past data and tells what happened. This is often used when tracking Key Performance Indicators (KPIs), revenue, sales leads, and more.
  • Diagnostic Analysis: Diagnostic data analysis aims to determine why something happened. Once your descriptive analysis shows that something negative or positive happened, diagnostic analysis can be done to figure out the reason. A business may see that leads increased in the month of October and use diagnostic analysis to determine which marketing efforts contributed the most.
  • Predictive Analysis: Predictive data analysis predicts what is likely to happen in the future. In this type of research, trends are derived from past data which are then used to form predictions about the future. For example, to predict next year’s revenue, data from previous years will be analyzed. If revenue has gone up 20% every year for many years, we would predict that revenue next year will be 20% higher than this year. This is a simple example, but predictive analysis can be applied to much more complicated issues such as risk assessment, sales forecasting, or qualifying leads.
  • Prescriptive Analysis: Prescriptive data analysis combines the information found from the previous 3 types of data analysis and forms a plan of action for the organization to face the issue or decision. This is where the data-driven choices are made.

These 4 types of data analysis can be applied to any issue with data related to it. And with the internet, data can be found about pretty much everything.

PROCEDURE :

  1. Important modules such as math, matplotlib, numpy, scipy are imported for their various functions.
  2. For checking compatibility of the program, 'try' and 'except' command is used according to their syntax, and the given data file is opened using 'open' command within a for loop. If the file name is misspelled or is wrong, the code will yield error with the following message "File not recognized. Please provide a valid CONVERGE output file" and will not execute and exit.
  3. For the purpose of plotting curve between two quantities according to user input, first, a line counter is initiated from 1 and null arrays of volume and pressure data are created for further uses. Now an 'if' loop is iterated with the condition that if '#' is not in line, (i.e., if only numerical digits are present and not any other line) all the numerical values present in the data file is now to be stored in the data array as string (by default).
  4. Now another 'if' loop is executed within with the condition that if the line counter is greater than or equal to 6 all the data will be stored in pressure and volume array respectively.
  5. For plotting p-V diagram the above pressure and volume array are plotted accordingly.
  6. For engine performance calculations, first area under PV curve is to be calculated and this is done by the Simpson method.
  7. The array of data obtained earlier consists of column matrix of strings of each quantities present inside it. So the column matrix is transposed into several row matrices according to various quantities using 'np.transpose' command and is further converted into float data types using 'astype' command.
  8. Two arrays of the name of the parameters and their units are made according to data file given and then the user has to choose from them to plot respective graphs. For this, the two inputs of the user are taken using 'input' command in python 3 and its datatype is set as 'int' and plotted using 'plt.plot' command. Basically user is entering column number as input and accordingly, result is generated.

CODE:

# A program to calculate engine parameters and to plot graph between two quantites according to user input
import math
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import simps

# Compatability check

try:
  open('engine_data.out')

  line_count = 1

  # Creating of empty arrays to store the value of Volume and pressure respectively
  Volume = []
  pressure = []

  # Volume and pressure in the data file is present in column 8 and 2 respectively. Calling them and storing their data into arrays 
  v = 8
  p = 2

  # Creating a null array and storing all the values of data file into it

  data=[]

  for line in open('engine_data.out'):
        if '#' not in line:
          data.append(line.split())
          if line_count >= 6:
                Volume.append(float(line.split()[v-1]))
                pressure.append(float(line.split()[p-1]))
        line_count = line_count + 1


  # Plotting p-V diagram
  plt.plot(Volume, pressure, color = 'blue', linewidth = 2)
  plt.xlabel('Volume (m^3)')
  plt.ylabel('Pressure (MPa)')
  plt.title("p-V diagram of Engine")
  plt.grid()
  plt.savefig('p-V diagram of Engine')
  plt.show()
    
  #Inputs
  #Speed of an engine (RPM)
  rpm = 1500
  rps = 1500/60
  stroke_cycle = rps/2

  #Fuel consumption in micro grams per 1 stroke cycle
  fuel_consumption = 20

  #Engine Specifications
  #Number of cylinder=
  n = 1
  # 4 stroke engine

  # Calculation of area under PV diagram using the simpsons rule
    
  area = simps(pressure, Volume)
  print('Area under the curve using Simpsons Rule : ' + str(area) + ' units')
  print('Work done by the engine : ' + str(area) + ' MJ')
  area = area*1e6
  print('Work done by the engine : ' + str(area) + ' J')
    
  # Calcualtions of Power output and specific fuel consumption
  power_output = n*area*stroke_cycle/(1000)
  print('Power ouput from engine : ' + str(power_output) + ' KW')  
  SFC = (fuel_consumption*pow(10,-6)*stroke_cycle*3600)/(power_output*1000)
  print('Specific Fuel Consumption, SFC = ' + str(SFC) + ' (kg/hr)/KW')
  print('\n')
          
  # Tansposing columns into row matrix and converting them into float type from string type
  transpose=np.transpose(data)
  float_f=transpose.astype(np.float)

   # Array for header and their units
  parameters = ['Crank','Pressure','Maximum Pressure','Minimum Pressure','Mean Temperature','Maximum Temperature','Minimum Temperature','Volume','Mass','Density','Integrated HR','HR Rate','Cp','Cv','Gamma','Kinematic Viscosity','Dynamic Viscosity']

  units = ['(DEG)','(MPa)','(MPa)','(MPa)','(K)','(K)','(K)','(m^3)','(kg)','(kg/m^3)','(J)','(J/time)','(J/kgK)','(J/kgK)','','(m^2/s)','(Ns/m^2)']

  # Providing user choice of picking two parameters for plotting
  print('Choose from the following options and press enter key')
  print(' 1 Crank \n 2 Pressure \n 3 Maximum Pressure \n 4 Minimum Pressure \n 5 Mean Temperature \n 6 Maximum Temperature \n 7 Minimum Temperature \n 8 Volume \n 9 Mass \n 10 Density \n 11 Integrated HR \n 12 HR Rate \n 13 Cp \n 14 Cv \n 15 gamma \n 16 Kinematic Viscosity \n 17 Dynamic Viscosity')

  X=int(input('Enter your choice on X-axis n '))

  Y=int(input('Enter your choice on Y-axis n '))

  # Plotting the graph based on user choice
  plt.figure(1)
  plt.plot(float_f[X-1],float_f[Y-1],linewidth=3,color='red')
  plt.title(' Plot for ' + parameters[X-1]+ ' versus ' +parameters[Y-1],color='black')
  plt.xlabel(parameters[X-1] + ' ' + units[X-1])
  plt.ylabel(parameters[Y-1] + ' ' + units[Y-1],)
  plt.savefig(parameters[X-1] + ' vs ' + parameters[Y-1] + '.png')
  plt.grid()
  plt.show()

except:
  print('File not recognized. Please provide a valid CONVERGE output file')

OUTPUT:

OUTPUT WINDOW:

The following plots were observed for the above input:

Similarly, other plots were made by providing input to the code and were saved in the folder by their respective name:

Screenshot of the folder where these plots are saved automatically

REFERENCE:

https://www.import.io/post/business-data-analysis-what-how-why/

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.