# Essential Techniques for Data Analysis using Pandas in Python

Creating a customised Pandas DataFrame is essential for analysing and visualising data. In this article, we’ll explore how to create a customised Pandas DataFrame and how to display percentages on the y-axis of a Pandas histogram.

## Displaying Percentages on Y-Axis of Pandas Histogram

### 1. Syntax for Displaying Percentages

You can use the `PercentFormatter` class to display percentages on the y-axis of a Pandas histogram. Here is the syntax:

``````from matplotlib.ticker import PercentFormatter

histo = df[column_name].hist(bins=10, density=True)

histo.yaxis.set_major_formatter(PercentFormatter(1))
``````

The `density=True` parameter sets the y-axis as a density scale, where the area under the histogram is equal to 1.

The `PercentFormatter(1)` sets the y-axis ticks as percentages.

### 2. Example for Displaying Percentages

Suppose you have a Pandas DataFrame called `df` that contains two columns: `age` and `gender`. Here is an example of how to create a histogram of the `age` column and display the y-axis as percentages:

``````import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter

histo = df['age'].hist(bins=10, density=True)
histo.yaxis.set_major_formatter(PercentFormatter(1))
plt.show()
``````

The `read_csv` function reads the CSV file ‘data.csv’ into a DataFrame. The `hist` function creates a histogram of the `age` column with 10 bins and a density y-axis.

The `PercentFormatter(1)` formats the y-axis as percentages that sum up to 100%.

## Creating a customised Pandas DataFrame

### 1. Creating Random Data in a DataFrame

The `DataFrame` function in Pandas allows you to create a customised DataFrame with random data. Here is an example of how to create a DataFrame with 1000 rows and two columns, `age` and `gender`, with random values:

``````import pandas as pd
import numpy as np

np.random.seed(42)
age = np.random.randint(18, 65, 1000)
gender = np.random.choice(['Male', 'Female'], 1000)
data = {'age': age, 'gender': gender}
df = pd.DataFrame(data)
``````

The `seed` function sets the random seed to ensure reproducibility. The `randint` function generates random integers between 18 and 65 for the `age` column.

The `choice` function selects random values from the list [‘Male’, ‘Female’] for the `gender` column. The `data` dictionary combines the `age` and `gender` columns into a dictionary.

The `DataFrame` function creates a DataFrame from the `data` dictionary. The `head` function displays the first five rows of the DataFrame.

### 2. Viewing DataFrame

To visualise the DataFrame, we can use the `head()` function, which displays the first five rows of the DataFrame. Suppose we want to display all the rows of the DataFrame, we can use the `set_option` function to change the default value of the `display.max_rows` option:

``````import pandas as pd

pd.set_option('display.max_rows', None)

print(df)
``````

The `set_option` function sets the value of the `display.max_rows` option to `None`, which displays all the rows of the DataFrame. The `read_csv` function reads the data from a CSV file into a DataFrame.

The `print` function displays the DataFrame.

### 3. Creating a Histogram of DataFrame Column

To create a histogram of a DataFrame column using the `hist()` function, you can pass a column name or use dot notation to select a column in the DataFrame. Suppose you have a DataFrame called `df` with a column called `age`, and you want to create a histogram of the `age` column.

Here’s an example:

``````import pandas as pd
import matplotlib.pyplot as plt

histo = df['age'].hist(bins=10)
plt.show()
``````

The `read_csv` function reads the data from a CSV file into a DataFrame. The `hist` function creates a histogram of the `age` column with 10 bins.

The `show()` function displays the histogram.

## Conclusion

In this article, we discussed how to create a customised Pandas DataFrame and how to display percentages on the y-axis of a Pandas histogram. Creating a customised DataFrame is essential for analysing and visualising data, and the `PercentFormatter` class helps to display y-axis ticks as percentages.

You can use the `DataFrame` function to create random data, and the `hist()` function to create a histogram of a DataFrame column. By following these steps, you can create customised DataFrames and visualise data to make more informed decisions.

## 3. Using Groupby() Function to Split Data into Sections

### 1. Syntax for Using Groupby() Function

The `groupby()` function in pandas is used to split data into groups based on one or more categorical variables. It’s a powerful tool for data analysis, especially when combined with other functions like `mean()`, `sum()`, and `count()`.

Here’s the basic syntax for using the `groupby()` function:

``````df.groupby(by=grouping_columns)[columns_to_show].function()
``````
• `by`: This parameter specifies the columns that you want to group by. You can pass one or more column names or a list of column names.
• `columns_to_show`: This parameter specifies the columns that you want to display. You can pass one or more column names or a list of column names.
• `function`: This parameter specifies the aggregation function that you want to apply to the groups. You can use built-in aggregation functions such as `mean()`, `sum()`, `count()`, or create a custom aggregation function.

### 2. Example Using Groupby() Function

Suppose you have a DataFrame called `df` that contains the following columns: `name`, `gender`, `age`, and `salary`. You want to group the data by gender and calculate the mean age and salary for each gender.

Here’s an example of how to do that:

``````import pandas as pd

grouped = df.groupby(by='gender')[['age', 'salary']].mean()

print(grouped)
``````

The `read_csv()` function reads the data from a CSV file into a DataFrame. The `groupby()` function groups the data by `gender` and selects the columns `age` and `salary`.

Finally, the `mean()` function calculates the mean value for each group. The `print()` function displays the result.

## 4. Standardizing Data with Z-Scores

### 1. Syntax for Standardizing Data

Standardization is the process of transforming data so that it has a mean of zero and a standard deviation of one. It’s an essential step in data analysis, especially when the data has different scales.

The z-score method is a popular standardization technique because it’s simple and effective. In this section, we will discuss the syntax for standardizing data using z-scores and provide an example.

The z-score formula is:

``````z = (x - mean) / std
``````

where `x` is the data point, `mean` is the mean value of the data, and `std` is the standard deviation of the data. The `numpy` library in Python provides a built-in function, `zscore()`, that calculates z-scores for a given DataFrame column.

Here’s the syntax for standardizing data using z-scores:

``````import numpy as np

df[column_name] = (df[column_name] - df[column_name].mean()) / df[column_name].std()
``````

Where `df[column_name]` is the DataFrame column you want to standardize.

### 2. Example of Using Z-Scores

Suppose you have a DataFrame called `df` that contains the following columns: `name`, `gender`, `age`, and `salary`. You want to standardize the `salary` column using z-scores.

Here’s an example of how to do that:

``````import pandas as pd
import numpy as np

df['salary'] = (df['salary'] - df['salary'].mean()) / df['salary'].std()
``````

The `read_csv()` function reads the data from a CSV file into a DataFrame. The `['salary']` column is standardized using z-scores, and the result is stored back to the column.

The standardized `df` DataFrame is printed using the `head()` function.

## Conclusion

In this article, we discussed the `groupby()` function in pandas and how to split data into groups based on categorical variables. We also discussed the syntax for standardizing data using z-scores and provided an example.

These techniques are essential for analysing data and extracting meaningful insights. By following the steps outlined in this article, you can create customised data groups and standardize data with ease.

## 5. Using the Apply() Function to Transform Columns

### 1. Syntax for Using Apply() Function

The `apply()` function in pandas is a powerful tool for transforming columns in a DataFrame. It’s used to apply a user-defined function to each element of a column or a row of a DataFrame.

Here’s the basic syntax for using the `apply()` function:

``````df[column_name] = df[column_name].apply(function)
``````
• `df[column_name]`: This parameter specifies the column that you want to apply the function to.
• `function`: This parameter specifies the function that you want to apply to the column.

### 2. Example of Using Apply() Function

Suppose you have a DataFrame called `df` that contains the following columns: `name`, `gender`, `age`, and `salary`. You want to transform the `gender` column so that all `Male` values are changed to `M` and all `Female` values are changed to `F`.

Here’s an example of how to do that:

``````import pandas as pd

def transform_gender(value):
if value == 'Male':
return 'M'
else:
return 'F'

df['gender'] = df['gender'].apply(transform_gender)
``````

The `read_csv()` function reads the data from a CSV file into a DataFrame. The `transform_gender()` function takes a value as an argument and returns `M` if the value is `Male`, and `F` otherwise.

The `apply()` function applies the `transform_gender()` function to the `gender` column, and the result is stored back to the column. The transformed `df` DataFrame is printed using the `head()` function.

Using the `apply()` function, you can also apply a lambda function to a column. For example, suppose you want to transform the `salary` column so that all salaries are increased by 10%.

Here’s an example of how to do that using a lambda function:

``````import pandas as pd

df['salary'] = df['salary'].apply(lambda x: x * 1.1)
``````

The `read_csv()` function reads the data from a CSV file into a DataFrame. The lambda function takes a value `x` as an argument and returns `x * 1.1`, which increases the value of `x` by 10%.

The `apply()` function applies the lambda function to the `salary` column, and the result is stored back to the column. The transformed `df` DataFrame is printed using the `head()` function.

## Conclusion

In this article, we discussed the `apply()` function in pandas and how to use it to transform columns in a DataFrame. We went over the syntax for using the `apply()` function and provided examples of how to transform columns using user-defined functions and lambda functions.

These techniques are essential for manipulating data and extracting meaningful insights. By following the steps outlined in this article, you can transform columns in a DataFrame with ease and flexibility.

In this article, we covered several essential techniques for data analysis using Pandas in Python. We began by discussing how to display percentages on the y-axis of a Pandas histogram and how to create a customized Pandas DataFrame.

Next, we covered how to use the `groupby()` function to split data into sections based on categorical variables and how to standardize data with z-scores. Finally, we discussed the use of the `apply()` function to transform columns in a DataFrame.

By mastering these techniques, analysts can extract meaningful insights from data and make more informed decisions. The main takeaway is that Pandas is a powerful tool for data analysis in Python, and these techniques are essential for manipulating data and extracting insights.