Pandas is a powerful library used for data manipulation and analysis. It is popularly used in data science and machine learning industries.
Pandas merge() function plays a significant role in combining datasets in Python. Its functionality is similar to a join operation in SQL.
In this article, we will dive deep into the Pandas merge() function and its various aspects.
Prerequisites
Before diving into the Pandas merge() function, you need to have a basic understanding of Python programming language. You should also have the Pandas library installed in your preferred Integrated Development Environment (IDE).
Syntax of Pandas merge()
The syntax for Pandas merge() function is as follows:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False)
The parameters are as follows:
- left: The first DataFrame to be merged.
- right: The second DataFrame to be merged.
- how: Specifies the type of join to be used. The default join is an ‘inner join’.
- on: Specifies the common column(s) between the two DataFrames that will be used for merging.
- left_on: Specifies the common column(s) from the left DataFrame to be used for merging.
- right_on: Specifies the common column(s) from the right DataFrame to be used for merging.
- left_index: Uses the index from the left DataFrame to merge.
- right_index: Uses the index from the right DataFrame to merge.
- suffixes: Appends suffixes( _x and _y) to column names that are common between the two DataFrames.
- copy: Copies the data for the merge operation.
- indicator: Adds a column to the merged dataset to show how the merge occurred.
Returns
The result of the merge operation is a new DataFrame that contains columns from both DataFrames merged on the specified common column(s) or index.
Default Merge Operation
Creating DataFrames
Before we can dive into the default merge operation in Pandas, we need to create the DataFrames that we will merge. Let’s create two DataFrames, Employee_data and Department_data.
Employee_data = {'Employee_ID': [1, 2, 3, 4],
'Employee_Name': ['John', 'Doe', 'Jane', 'Davie'],
'Department_ID': [101, 102, 103, 104]}
Department_data = {'Department_ID': [101, 102, 103, 104],
'Department_Name': ['Sales', 'Marketing', 'Development', 'IT']}
We have created two DataFrames with employee and department data.
Applying merge() method
Now, let’s apply the merge() function to combine the two DataFrames. merged_data = pd.merge(Employee_data, Department_data)
The above merge() function takes both the Employee_data and Department_data and merges them on the common column Department_ID.
The output of the merge will contain only the rows where Employee_data.Department_ID matches Department_data.Department_ID.
Default join type
By default, the merge() function performs an ‘inner join’. An ‘inner join’ returns only the common records between the two DataFrames.
This means if the common column between the DataFrames does not have a match, this row will not be included in the output DataFrame. For example:
Employee_data = {'Employee_ID': [1, 2, 3, 4],
'Employee_Name': ['John', 'Doe', 'Jane', 'Davie'],
'Department_ID': [101, 102, 105, 104]}
merged_data = pd.merge(Employee_data, Department_data)
In this example, a row in the Employee_data DataFrame has a Department_ID of 105 that does not match the Department_data DataFrame.
Therefore, this row will not be included in the merged DataFrame.
Output
The output of the merge() function is a new DataFrame that contains columns from both DataFrames merged on the specified common column. In our example, the merged DataFrame contains four columns, which include Employee_ID, Employee_Name, and Department_Name.
Conclusion
In conclusion, the Pandas merge() function is a powerful tool used for combining DataFrames in Python. It simplifies complex merging operations and provides an easy-to-use interface.
It is important to consider the prerequisites and syntax of the function and understand its default operation before attempting to use it. This article has provided a beginner’s guide to using the Pandas merge() function and is a starting point for mastering mergers in Pandas.
3) Pandas Merge() using Left, Right, and Outer Join
In the previous section, we learned about default merge operations using the Pandas merge() function. In this section, we will expand on this concept and learn about different join types.
Types of Join
There are three types of joins available in the Pandas merge() function, which are as follows:
- Left Join
- Right Join
- Outer Join
A left join returns all the records from the left DataFrame, along with matching records from the right DataFrame.
If the right DataFrame has missing values, the corresponding result will be filled with NaN.
A right join returns all the records from the right DataFrame, along with matching records from the left DataFrame. If the left DataFrame has missing values, the corresponding result will be filled with NaN.
An outer join returns all the records from both DataFrames.
If there are missing values in the other DataFrame, the corresponding result will be filled with NaN.
Merging DataFrames
Now let’s create two DataFrames, Sales_data and Customer_data, to demonstrate different types of joins. Sales_data = {'Product_ID': [101, 102, 103, 104, 105],
'Sales': [1000, 1500, 2000, 2500, 3000],
'Customer_ID': [101, 102, 103, 104, 105]}
Customer_data = {'Customer_ID': [101, 102, 103, 107, 108],
'Customer_Name': ['John', 'Jane', 'Doe', 'William', 'Sarah'],
'City': ['Chicago', 'New York', 'Boston', 'Las Vegas', 'San Francisco']}
Now let’s perform different types of joins on these DataFrames.
Left Join example:
merged_left = pd.merge(Sales_data, Customer_data, on='Customer_ID', how='left')
print(merged_left)
In the above code snippet, we have used the on parameter to specify the common column that we want to merge on. We have merged the two DataFrames on the ‘Customer_ID’ column using the left join.
The output will include all the records from the left DataFrame, Sales_data, along with matching records from the right DataFrame, Customer_data.
Right Join example:
merged_right = pd.merge(Sales_data, Customer_data, on='Customer_ID', how='right')
print(merged_right)
Here, we have performed a right join to merge Sales_data and Customer_data on the ‘Customer_ID column. The output will include all the records from the right DataFrame, Customer_data, along with matching records from the left DataFrame, Sales_data.
Outer Join example:
merged_outer = pd.merge(Sales_data, Customer_data, on='Customer_ID', how='outer')
print(merged_outer)
In this example, we have used the outer join to merge the Sales_data and Customer_data DataFrames. The resulting DataFrame will contain all the records from both DataFrames, with NaN values where there are missing values.
Output
The output of each of the merge operations will be a new DataFrame that contains all the columns from both DataFrames merged on the specified common column(s).
4) Merge Two DataFrames on a Column
In this section, we will learn how to merge two DataFrames on a single column. In the previous section, we learned about different types of joins.
In this section, we will merge two DataFrames using single-column keys.
Specifying column for merge operation
To specify the key column for merge operation, we use the on parameter. Suppose we have two DataFrames, Student_data and Exam_data.
Student_data = {'ID': ['101', '102', '103', '104', '105'],
'Name': ['John', 'Doe', 'Jane', 'Davie', 'Mary'],
'Grade': ['A', 'B', 'C', 'B', 'A']}
Exam_data = {'ID': ['101', '103', '105'],
'Subject': ['Math', 'Science', 'Geography'],
'Marks': ['85', '92', '95']}
Merging on ID
Now let’s merge the two DataFrames on the ‘ID’ column. merged_data = pd.merge(Student_data, Exam_data, on='ID')
print(merged_data)
The merge operation results in a new DataFrame with the combined data from both DataFrames. The output DataFrame contains four columns, which include ID, Name, Grade, Subject, and Marks.
Merging on Name
We can also merge the two DataFrames using the ‘Name’ column as the key. merged_data_name = pd.merge(Student_data, Exam_data, left_on='Name', right_on='Subject')
print(merged_data_name)
The left_on parameter is used to specify the column name in the left DataFrame, while the right_on parameter is used to specify the column name in the right DataFrame that is used as the key for the merge operation. In this example, we are using the ‘Name’ column of the Student_data DataFrame and the ‘Subject’ column of the Exam_data DataFrame to merge the two DataFrames.
Output
The output of the merge operation on the above DataFrames will result in a new DataFrame with columns from both DataFrames merged on the specified column(s).
Conclusion
In this article, we have learned about the different types of joins available in the Pandas merge() function – left, right, and outer. We also learned how to merge two DataFrames using a single-column key.
This knowledge is crucial for working with datasets of varying sizes and merging them into a cohesive whole for analysis. Pandas merge() function provides a fast and efficient way to perform different types of joins and efficiently combine datasets.
5) Sort the Result of the Merge Operation
In this section, we will expand our knowledge of the Pandas merge() function by learning how to sort the result of the merge operation.
Using sort parameter
Pandas merge() function also allows us to sort the merged DataFrame based on the values of one or more columns. The sort parameter is used to specify which columns to sort and the order of sorting.
Let’s create a sample DataFrame that we can use to sort the merged data. Sort_data = {'Letter': ['B', 'C', 'A'],
'Number': [3, 2, 1]}
Now, let’s merge Sort_data with our previous example, Student_data and Exam_data, and sort the resulting DataFrame based on the ‘Name’ column.
sorted_merge = pd.merge(Student_data, Exam_data, left_on='Name', right_on='Subject').sort_values('Name')
print(sorted_merge)
Here, we have used the sort_values() method to sort the merged DataFrame on the ‘Name’ column.
Merging and sorting DataFrames
We can also sort the DataFrames before performing the merge function. Let’s sort the Student_data DataFrame based on the ‘Name’ column and the Exam_data DataFrame based on the ‘Subject’ column before we merge them.
sorted_student = Student_data.sort_values('Name')
sorted_exam = Exam_data.sort_values('Subject')
merged_sorted = pd.merge(sorted_student, sorted_exam, left_on='Name', right_on='Subject')
print(merged_sorted)
In this example, we have used the sort_values() method to sort the Student_data DataFrame by the ‘Name’ column and the Exam_data DataFrame by the ‘Subject’ column before performing the merge operation.
Output
The output of the sort operation on the DataFrame will result in a new DataFrame with columns from both DataFrames merged in the sorted order. The merged DataFrame will be sorted based on the values of the selected column(s).
Conclusion
In this article, we have learned how to sort the result of the Pandas merge() operation based on the values of one or more columns. We have used sort_values() to sort the merged DataFrame based on the values of the selected column(s).
We have also learned that we can sort the DataFrames before performing the merge operation to get the merged DataFrame in a pre-sorted order. Sorting the DataFrame prior to the merge operation can sometimes improve the performance of the merge operation.
In summary, the Pandas merge() function is a powerful tool for joining and merging DataFrames in Python. Its syntax and parameters, including the types of joins, sorting, and merging of DataFrames, are crucial knowledge for anyone working with datasets in Python.
The Pandas library continues to be an essential tool for machine learning and data science applications. The Pandas merge() function is a crucial tool for data analysis and manipulation in Python.
In this article, we learned about the syntax and parameters of the merge() function, including different types of joins and sorting of merged DataFrames. We also learned how to merge two DataFrames based on a single column key.
It is essential to understand the Pandas merge() function because it simplifies the complex process of merging DataFrames and provides an easy-to-use interface for performing data analysis. As a final thought, mastering the Pandas merge() function is a valuable skill for aspiring and experienced data scientists alike.