Introduction

Hello and welcome to our journey into data analysis with Python and pandas. Today we'll discover pandas DataFrames and learn about Loading and Viewing Data.

Pandas, a fantastic Python library, simplifies data manipulation and analysis. Our focus today is DataFrames — the go-to structure in pandas for data handling.

We will read data from different sources using pandas, load it into a DataFrame, and then explore this data. Let's begin!

Installing and Importing pandas

Installing and importing the pandas library is like getting our recipe book ready before we start cooking. In our CodeSignal kitchen, pandas comes pre-installed. To open the book, we just need to import pandas into our script. It's as simple as:

import pandas as pd  # Pandas successfully imported

This line sets a short alias, pd, for pandas so we don't have to write out pandas each time we use it.

Introduction to DataFrames

In pandas, a DataFrame is like a table, with the data as the dishes on the table. Creating a DataFrame out of a list or a dictionary is a snap with pandas. Here's how:

import pandas as pd

# From a list
data_list = ['apple', 'banana', 'cherry']
df_list = pd.DataFrame(data_list, columns=['Fruit'])
print(df_list)
# Output:
#    Fruit
# 0  apple
# 1  banana
# 2  cherry
Creating from Dictionary

And here is how to create a dataframe from dictionary:

# From a dictionary
data_dict = {'Fruit': ['apple', 'banana', 'cherry'], 'Count': [10, 20, 15]}
df_dict = pd.DataFrame(data_dict)
print(df_dict)
# Output:
#     Fruit  Count
# 0   apple     10
# 1  banana     20
# 2  cherry     15
Viewing Data in a DataFrame: Head and Tail

Now that we have our data in a DataFrame, how do we look at it and understand it? Pandas provides us with methods like head(), tail(), and info(). Here's how to use them:

# First 5 rows
print(df.head())  # Output: First 5 rows of DataFrame 'df'

# Last 5 rows
print(df.tail())  # Output: Last 5 rows of DataFrame 'df'

In our case, we have just three rows in the dataframe, so both head() and tail() will simply output the whole dataframe. However, for real data with lots of rows, they are quite useful!

Viewing Data in a DataFrame: overview

Let's take a look at the dataframe's Overview:

# Overview
print(df.info())
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 2 columns):
# #   Column  Non-Null Count  Dtype 
# ---  ------  --------------  ----- 
#  0   Fruit   3 non-null      object
#  1   Count   3 non-null      int64 
# dtypes: int64(1), object(1)

As you see, the overview contains information about column's names, amount of present data and data types for each column.

Concatenating DataFrames: `pd.concat`

Sometimes, you might need to combine multiple DataFrames into a single one. This can be done using the pd.concat function for any dataframes with the same set of columns. Here's a simple example:

import pandas as pd

# Creating first DataFrame
data1 = {'Fruit': ['apple', 'banana'], 'Count': [10, 20]}
df1 = pd.DataFrame(data1)

# Creating second DataFrame
data2 = {'Fruit': ['cherry', 'date'], 'Count': [15, 25]}
df2 = pd.DataFrame(data2)

# Concatenating DataFrames
df_combined = pd.concat([df1, df2])
print(df_combined)
# Output:
#     Fruit  Count
# 0   apple     10
# 1  banana     20
# 0  cherry     15
# 1    date     25

In this example, pd.concat takes a list of DataFrames as its argument and combines them along their rows by default. Notice that the indices are preserved. If you want to ignore the original indices and create a new continuous index, you can pass the argument ignore_index=True to pd.concat:

df_combined = pd.concat([df1, df2], ignore_index=True)
print(df_combined)
# Output:
#     Fruit  Count
# 0   apple     10
# 1  banana     20
# 2  cherry     15
# 3    date     25

This way, the resulting DataFrame will have a new set of sequential indices.

Series

In a DataFrame, each column is a Series object. A Series in pandas is a one-dimensional labeled array capable of holding any data type (integers, strings, floating-point numbers, Python objects, etc.). It is essentially a list of values with an associated label (index) for each value. Here is an example:

import pandas as pd

# Create a Series from a list
fruits = ['apple', 'banana', 'cherry']
series = pd.Series(fruits)

print(series)
# Output:
# 0     apple
# 1    banana
# 2    cherry
# dtype: object

Whenever you work with a single dataframe's column, you work with a series. Series objects have their own set of methods, but most of them overlap with the dataframe's method. For example, series also have methods like head, tail or describe.

Lesson Summary and Practice

Well done! You've learned how to load data into a pandas DataFrame and view the data. It's a solid start to data analysis.

In this lesson, we've covered what pandas and a DataFrame are, how to load data into a DataFrame, and methods to view the data.

Remember, practice makes perfect, so look forward to reinforcing your newfound skills in the upcoming practice exercises. Stick with it, and you'll build a strong foundation to excel in data analysis. Happy coding!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal