# Mastering Data Manipulation: Sorting Pandas DataFrames in Python

Sorting is a fundamental operation in programming. It allows you to organize data in a logical manner, making it easier to analyze and work with.

In Python, sorting is a simple and straightforward process that can be done with just a few lines of code. In this article, we will explore the different techniques for sorting lists and lists of lists in Python.

## Sorting a List in Python

A list is a collection of items that can be of various types, including numbers, strings, and objects. Sorting a list can be done in ascending or descending order.

Python provides a built-in function called `sort()` that allows you to sort a list in place. Here’s an example of how to sort a list of numbers in ascending order:

``````numbers = [4, 2, 1, 3, 5]
numbers.sort()

print(numbers)``````

Output: `[1, 2, 3, 4, 5]`

As you can see, the `sort()` function arranges the numbers in ascending order. You can also sort a list in descending order by passing the argument `reverse=True` to the `sort()` function:

``````numbers = [4, 2, 1, 3, 5]
numbers.sort(reverse=True)

print(numbers)``````

Output: `[5, 4, 3, 2, 1]`

## Sorting a List of Lists in Python

Sometimes, you may need to sort a list of lists based on a specific column or index. For example, if you have a list of student grades, you may want to sort the entire list based on the grades.

Python allows you to do this easily using the `sort()` function and lambda functions.

### Sorting a List of Lists in Python in an Ascending Order

Here’s an example of how to sort a list of lists in ascending order based on a specific column or index:

``````students = [
['John', 75],
['Jane', 80],
['Bob', 90],
['Mary', 85]
]
students.sort(key=lambda x: x[1])

print(students)``````

Output: `[['John', 75], ['Jane', 80], ['Mary', 85], ['Bob', 90]]`

In this example, we use a lambda function to specify which column or index to use for sorting the list of lists. In this case, we sort the list based on the second element (index 1) of each inner list.

### Sorting a List of Lists in Python Based on a Specific Column/Index

You can also sort the list of lists in descending order by passing `reverse=True` to the `sort()` function. Here’s an example:

``````students = [
['John', 75],
['Jane', 80],
['Bob', 90],
['Mary', 85]
]
students.sort(key=lambda x: x[1], reverse=True)

print(students)``````

Output: `[['Bob', 90], ['Mary', 85], ['Jane', 80], ['John', 75]]`

In this example, we sort the list of lists in descending order based on the second element of each inner list.

## Conclusion

In this article, we’ve explored the different techniques for sorting lists and lists of lists in Python. Sorting is a fundamental operation that helps you organize data in a logical manner.

Python provides a built-in function called `sort()` that allows you to sort a list in place. You can also sort a list of lists based on a specific column or index using the `sort()` function and lambda functions.

Whether you’re working with simple lists or complex data structures, sorting is an essential operation that can help you analyze and work with your data more effectively. Working with data is a common task for developers, data analysts, and data scientists.

Often, data comes in the form of tables, and one of the core tasks is to sort and organize the tables. Pandas is a popular Python library for data manipulation, and it provides many features to accomplish tasks like sorting.

In this section, we will explore how to sort Pandas DataFrames.

## Sorting Pandas DataFrame

A DataFrame is a two-dimensional table that consists of rows and columns. Sorting a DataFrame is a common task that can be done in many ways in Pandas.

The Pandas library provides a function called `sort_values()` that allows for various types of sorting operations on a DataFrame.

### Sorting by One Column

To sort by one column, you can use the `sort_values()` function with the attribute of the column you want to sort by as an argument. Here’s an example:

``````import pandas as pd
data = {'name': ['John', 'Jane', 'Bob', 'Mary'],
'age': [25, 30, 20, 35],
'salary': [50000, 60000, 45000, 70000]}
df = pd.DataFrame(data)
sorted_df = df.sort_values('salary', ascending=False)

print(sorted_df)``````

### Output:

``````   name  age  salary
3  Mary   35   70000
1  Jane   30   60000
0  John   25   50000
2   Bob   20   45000``````

In this example, we sort the `df` DataFrame by the `”salary”` column in descending order using the `sort_values()` function. The `ascending=False` argument tells the function to sort in descending order.

### Sorting by Multiple Columns

You can sort by multiple columns by passing a list of column names to the `sort_values()` function. Here’s an example:

``````import pandas as pd
data = {'name': ['John', 'Jane', 'Bob', 'Mary', 'Peter'],
'age': [25, 30, 20, 35, 25],
'salary': [50000, 60000, 45000, 70000, 60000],
'department': ['Sales', 'Marketing', 'Sales', 'Engineering', 'Marketing']}
df = pd.DataFrame(data)
sorted_df = df.sort_values(['department', 'salary'], ascending=[True, False])

print(sorted_df)``````

### Output:

``````   name  age  salary  department
3  Mary   35   70000  Engineering
1  Jane   30   60000   Marketing
4  Peter  25   60000   Marketing
0  John   25   50000       Sales
2   Bob   20   45000       Sales``````

In this example, we sort the `df` DataFrame by two columns: `”department”` in ascending order and `”salary”` in descending order, using the `sort_values()` function. The `ascending` argument takes a list of Boolean values that matches the order of column names in the first argument of the `sort_values()` function.

### Sorting by Index

You can also sort a DataFrame by its index using the `sort_index()` function. Here’s an example:

``````import pandas as pd
data = {'name': ['John', 'Jane', 'Bob', 'Mary'],
'age': [25, 30, 20, 35],
'salary': [50000, 60000, 45000, 70000]}
df = pd.DataFrame(data, index=[3, 2, 1, 0])
sorted_df = df.sort_index()

print(sorted_df)``````

### Output:

``````   name  age  salary
0  Mary   35   70000
1   Bob   20   45000
2  Jane   30   60000
3  John   25   50000``````

In this example, we sort the `df` DataFrame by its index using the `sort_index()` function.

### Sorting Based on Text Data

Sorting based on text data in Pandas requires some unique handling, and there are a few methods available. For example, you can use the `sort_values()` function with the attribute `key` and pass in a lambda function that transforms the text data.

``````import pandas as pd
data = {'name': ['john', 'Jane', 'bob', 'MARY'],
'age': [25, 30, 20, 35],
'salary': [50000, 60000, 45000, 70000]}
df = pd.DataFrame(data)
sorted_df = df.sort_values('name', key=lambda col: col.str.lower())

print(sorted_df)``````

### Output:

``````   name  age  salary
2   bob   20   45000
1  Jane   30   60000
0  john   25   50000
3  MARY   35   70000``````

In this example, we sort the `df` DataFrame by the `”name”` column in ascending order using a lambda function that transforms all values to lowercase before sorting.

## Conclusion

Sorting is an essential data manipulation task that can help you organize and work with data effectively. In this section, we explored how to sort Pandas DataFrames using the `sort_values()` and `sort_index()` functions.

We also looked at how to sort based on text data in Pandas. Sorting a DataFrame is a simple and intuitive process in Pandas, and having a clear understanding of the different techniques available can help you work with data more efficiently.

Sorting is a vital operation in data manipulation that helps organizations and individuals arrange and work with data effectively. With the rise of Python for data science and analysis, the Pandas library offers users an intuitive and straightforward way to sort data using functions like `sort_values()` and `sort_index()`.

This article explored how to sort Pandas DataFrames, including sorting by one or multiple columns, sorting by index, and sorting based on text data. A clear understanding of these techniques will help data analysts, data scientists, and others who work with data efficiently and effectively.

As a final thought, learning how to sort data is a beneficial skill that improves data management and analysis, ultimately leading to better decision-making.