← Back to Blog
Download Notebook (.ipynb)

Pandas Basics: Core Objects & Common Operations

Purpose: Demonstrate the basic usage of Pandas Series and DataFrame, including creation, indexing, and CRUD operations. Outputs:

  • Basic Series and DataFrame examples
  • Indexing examples
  • CSV read/write demo
import pandas as pd
import numpy as np
import os

# Ensure we are in a clean state
print(f"Pandas version: {pd.__version__}")
# 1. Series Creation
# From list
s1 = pd.Series([10, 20, 30, 40])
print("s1 (default index):")
print(s1)

# From list with index
s2 = pd.Series([100, 98, 67, 23], index=['zs', 'ls', 'ww', 'sl'])
print("\ns2 (custom index):")
print(s2)

# From dict
d = {'zs': 100, 'ls': 98, 'ww': 67, 'sl': 23}
s3 = pd.Series(d)
print("\ns3 (from dict):")
print(s3)
# 2. DataFrame Creation
# From dict of lists
data = {
    'Name': ['Tom', 'Jerry', 'Jack', 'Rose'],
    'Age': [18, 18, 20, 20]
}
df = pd.DataFrame(data)
print("DataFrame from dict:")
print(df)

# From dict of Series (alignment)
data2 = {
    'Name': pd.Series(['Tom', 'Jerry', 'Jack', 'Rose'], index=['a', 'b', 'c', 'd']),
    'Age': pd.Series([18, 18, 20], index=['a', 'b', 'c']),
    'Gender': pd.Series(['M', 'M', 'F'], index=['a', 'c', 'd'])
}
df2 = pd.DataFrame(data2)
print("\nDataFrame with alignment (df2):")
print(df2)
# 3. Indexing (loc vs iloc)
print("Original df2:")
print(df2)

print("\n--- loc (label based) ---")
print("df2.loc['a']:")
print(df2.loc['a'])

print("\n--- iloc (position based) ---")
print("df2.iloc[0]:")
print(df2.iloc[0])

print("\n--- Slicing ---")
print("df2.loc['a':'c', ['Name', 'Age']]:")
print(df2.loc['a':'c', ['Name', 'Age']])
# 4. Column CRUD
df = df2.copy()

# Add column
df['Math'] = 100
print("Added Math column:")
print(df)

# Modify column
df['Math'] = [90, 95, 85, 88] # Modify with list
print("\nModified Math column:")
print(df)

# Delete column
df.drop(['Math'], axis=1, inplace=True)
print("\nDropped Math column:")
print(df)
# 5. CSV I/O
# Create a dummy CSV
df2.to_csv('demo_pandas.csv')
print("Saved demo_pandas.csv")

# Read it back
df_read = pd.read_csv('demo_pandas.csv', index_col=0)
print("\nRead back from CSV:")
print(df_read)

# Clean up
if os.path.exists('demo_pandas.csv'):
    os.remove('demo_pandas.csv')
    print("\nCleaned up demo_pandas.csv")