import numpy as np
import pandas as pd #pandas - python data analysis module


mtcars = pd.read_csv("mtcars.csv")
mtcars
mtcars.head()
mtcars.tail()
mtcars.columns

mtcars.shape
mtcars.mean() # Get the mean of each column
mtcars.mean(axis=1) # Get the mean of each row


mtcars.median()
mtcars.median(axis=1)
#to replace the missing values of Quantitative data
#median(outliers)

mpg_mode = mtcars['model'].mode()
#Unimodal
#bimodal
mpg_mode[0]
#to replace the missing values of Qualitative data


'''The columns with multiple modes (multiple values with the same
    count) 
   return multiple values as the mode. Columns with no mode 
   (no value that appears more than once) return NaN.
'''
#Range 

max(mtcars["mpg"]) - min(mtcars["mpg"])


#Quantiles or Percentiles
five_num = [mtcars["mpg"].quantile(0),   
            mtcars["mpg"].quantile(0.25),
            mtcars["mpg"].quantile(0.50),
            mtcars["mpg"].quantile(0.75),
            mtcars["mpg"].quantile(1)]
five_num

mtcars.describe()
   


#IQR
mtcars["mpg"].quantile(0.75) - mtcars["mpg"].quantile(0.25)

#boxplot
mtcars.boxplot(column="mpg",
               return_type='axes',
               figsize=(8,8))

plt.text(x=0.74, y=22.25, s="3rd Quartile")
plt.text(x=0.8, y=18.75, s="Median")
plt.text(x=0.75, y=15.5, s="1st Quartile")
plt.text(x=0.9, y=10, s="Min")
plt.text(x=0.9, y=33.5, s="Max")
plt.text(x=0.7, y=19.5, s="IQR", rotation=90, size=25)

#variance
mtcars["mpg"].var()

#Standard Deviation
mtcars["mpg"].std()

#Skewness
mtcars["mpg"].skew()  # Check skewness

np.mean(mtcars['mpg'])
np.median(mtcars['mpg'])
mtcars['mpg'].mode

#Kurtosis
mtcars["mpg"].kurt()

data = np.random.exponential(0.5, size=4)

skewed_data = np.concatenate((np.random.normal(size=35000)+2, 
                             np.random.exponential(size=65000)), 
                             axis=0)


peaked_data = np.concatenate((np.random.exponential(size=50000),
                             np.random.exponential(size=50000)*(-1)),
                             axis=0)

data_df = pd.DataFrame({"skewed":skewed_data,"peaked":peaked_data})

data_df.plot(kind="density",
            figsize=(10,10),
            xlim=(-5,5))

data_df.skew()

data_df.kurt()




























