## Outliers in Python – Understanding and Detecting

Data analysis plays a crucial role in our lives, whether it is in business, science, or any other field where data is generated. However, sometimes the data may contain values that are widely different from the rest of the observations.

These observations are known as outliers and can lead to biased conclusions if not handled properly. In this article, we will explore the concept of outliers, their origin, and how to detect them using the IQR method in Python.

### 1. Definition and Origin of Raw Data

Before we dive into the concept of outliers, it is essential to understand how data is generated. Data can be generated through several methods, such as surveys, experiments, observations, or estimations.

However, the data generated through these methods can be prone to measurement errors, incorrect recordings, or omissions, making it essential to ensure data validity and reliability. Additionally, the data generated can be categorized into two types: raw data and processed data.

Raw data refers to the first-hand observations or measurements collected from the source. This data is usually in its crude form and requires cleaning and refining before any meaningful analysis.

The origin of raw data is crucial because outliers can arise through erroneous input, measurement errors, or even genuine extreme values.

### 2. Understanding Outliers

An outlier is any observation that significantly deviates from the rest of the data. Outliers can be identified through a range of techniques, including visual inspection, statistical tests, or machine learning algorithms.

However, it is crucial to first understand what causes outliers. Outliers can arise in datasets with a continuous variable that has an abnormal distribution, resulting in values that are distinctly different from the rest of the data.

Additionally, outliers can affect estimations of central tendency and spread of data, making them unreliable measures.

### 3. Need to Remove Outliers from Data

There is a need to remove outliers from data where they appear to avoid any potential bias in statistical analysis. Sometimes it is good practice to remove outliers to estimate the accuracy of the data by manipulating the mean, standard deviation, or variance.

However, care should be taken when identifying outliers as removing too many can lead to significant data loss and skewed results.

### 4. IQR Method and Boxplots

The interquartile range (IQR) method is a simple approach to identify outliers by measuring the spread of data. The IQR method involves calculating the difference between the first and third quartiles of the data.

A quartile is simply a way of dividing the data into quarters. For example, Q1 is the value that cuts off the lowest 25% of data, and Q3 cuts off the highest 25%.

The IQR is simply the difference between Q3 and Q1. Once the IQR is calculated, any observation outside the range Q1-1.5IQR to Q3+1.5IQR can be considered an outlier.

Boxplots are a useful visualization tool that displays the distribution of data. A boxplot shows a summary of the data’s central location (median), spread (IQR), and any observations outside the range (outliers).

### 5. Implementation and Example

Consider a dataset that contains wind speed data for a city for a month. Let’s say we want to detect the outliers to ensure data accuracy.

We can use the IQR method to identify any wind speed observation outside the range of Q1 -1.5IQR to Q3 +1.5IQR. Using the seaborn library in Python, we can create a boxplot to display the data distribution and outliers.

```
import seaborn as sns
import pandas as pd
df = pd.read_csv('wind_speed.csv')
sns.boxplot(x='wind_speed', data=df)
```

The resulting boxplot shows the median wind speed, the IQR, and any observations outside the whiskers representing the IQR. By using the IQR method, we can identify which wind speed data points are outliers.

### 6. Conclusion

In summary, outliers can arise from measurement errors, extreme genuine values, or abnormal distribution of data. Outliers can affect estimations of central tendency and spread of data, making them unreliable measures.

The IQR method is a simple approach to identify outliers using the spread of data, and boxplots are a useful visualization tool. By identifying and removing outliers, we can estimate data accuracy and avoid bias in statistical analysis.

## Removal of Outliers

### 1. IQR Approach to Replace Outliers with NULL Value

Primary Keyword(s): quartile calculation, interquartile range evaluation, upper and lower bounds

### 2. Treatment of NULL Values

Primary Keyword(s): dropna function, missing values

In the previous section, we discussed the importance of detecting and removing outliers from datasets. However, removing outliers can result in a significant loss of data, which may affect the statistical power of analysis.

Instead of removing outliers, we can replace them with null values to retain as much of the raw data as possible. In this section, we will discuss the IQR approach to replace outliers with a null value and the treatment of null values in Python.

### 3. IQR Approach to Replace Outliers with NULL Value

The interquartile range (IQR) approach is a reliable method for detecting outliers. However, instead of removing outliers, we can replace them with null values.

To do this, we first need to calculate the first quartile (Q1) and the third quartile (Q3) using the dataset. Next, we need to calculate the interquartile range (IQR), which is the difference between Q3 and Q1.

Finally, we can calculate the upper and lower bounds for outliers using the following formula:

Upper Bound: Q3 + 1.5 * IQR

Lower Bound: Q1 – 1.5 * IQR

Any value outside this range is considered an outlier, and we replace it with a null value (NaN). Null values do not affect the calculations for statistical measures such as mean, median, and mode, which eliminate bias and maintain the dataset’s integrity.

Let’s consider a dataset consisting of salaries paid in a company. We want to identify any outliers salaries that fall outside the usual range and replace them with nulls using the IQR approach to retain as much of the raw data as possible.

### 4. We can implement IQR in Python as follows:

```
import pandas as pd
# read the dataset
df = pd.read_csv('salaries.csv')
# calculate Q1 and Q3
q1 = df['salary'].quantile(0.25)
q3 = df['salary'].quantile(0.75)
# calculate IQR
iqr = q3 - q1
# calculate bounds
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
# replace outliers with NULL values
df.loc[(df['salary'] < lower_bound) | (df['salary'] > upper_bound), 'salary'] = None
print(df)
```

The above code reads the salaries dataset and calculates the first quartile, third quartile, interquartile range, and bounds. It then replaces the outliers with null values and outputs the resulting dataset.

### 5. Treatment of NULL Values

After replacing outliers with null values, we need to decide on how to handle null values in Python. There are two main approaches for treating null values: either remove them or replace them with valid values.

The first approach involves removing any row or column that contains null values. We can use the dropna() function in Python to delete any row or column that contains null values.

However, this approach may result in a significant loss of data. The second approach involves replacing null values with valid values, such as the mean or median of the respective column.

We can use the fillna() function to replace null values with the mean or median of that column. The choice of mean or median depends on the distribution of data.

If the data is skewed, we should opt for the median as the mean may be affected by outliers. Let’s demonstrate how to handle null values in Python using the salary dataset.

First, we replace outliers with nulls using the IQR approach as discussed earlier. We then use the fillna() function to replace null values with the median of the salary column as follows:

```
# replace null values with median
df['salary'].fillna(df['salary'].median(), inplace=True)
print(df)
```

The above code replaces null values in the salary column with the median of the same column. In this case, we chose the median as the data was skewed.

In summary, we can use the IQR approach to replace outliers in a dataset with null values. We can handle null values by either removing them or replacing them with valid values such as the mean or median of the respective column.

The choice of mean or median depends on the distribution of data.

### 6. Conclusion

Primary Keyword(s): dataset treatment, Python programming. In conclusion, outlier detection and removal are crucial to ensure data accuracy and avoid bias in statistical analysis.

Outliers can arise through measurement errors, extreme genuine values, or abnormal distribution of data. The IQR approach is a reliable method to detect outliers and replace them with null values while retaining as much of the raw data as possible.

We can handle null values by either removing them or replacing them with valid values such as the mean or median of the respective column. Python provides a range of functions to detect, replace and handle null values and outliers in datasets.

By applying these techniques, we can achieve reliable and accurate statistical analysis of datasets in Python programming. In this article, we explored the concept of outliers, their origin, and methods to detect and remove them from datasets using Python programming.

Outliers can cause bias and unreliable statistical analysis, and therefore, detecting and removing them is crucial. The interquartile range (IQR) approach is a reliable method to detect and replace outliers with null values while retaining as much of the original data as possible.

Additionally, handling null values is equally important, and Python provides several functions to enable effective treatment of such values. By following the discussed techniques, we can achieve accurate and reliable statistical analysis of datasets.