Working with CSV, Excel, and SQL Files in Python
Why Handle CSV, Excel & SQL Data in Python?
Python makes it easy to read, write, and manipulate data from multiple sources like:
- CSV files (Comma-Separated Values)
- Excel files (.xls/.xlsx)
- SQL databases (SQLite, MySQL, PostgreSQL)
This is essential for:
- Data analysis
- Reporting
- Automation
- ETL processes
1. Working with CSV Files in Python using pandas
Read CSV File
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
Write to CSV File
df.to_csv('output.csv', index=False)
Select Specific Columns
df[['Name', 'Age']]
Filter Rows
df[df['Age'] > 25]
2. Working with Excel Files in Python
Read Excel File
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())
Write to Excel File
df.to_excel('output.xlsx', sheet_name='Results', index=False)
Read Multiple Sheets
excel_file = pd.ExcelFile('data.xlsx')
df1 = excel_file.parse('Sheet1')
df2 = excel_file.parse('Sheet2')
3. Working with SQL Databases in Python
Required Libraries
pip install sqlalchemy
Using SQLite for Local Database (no server required)
import sqlite3
# Connect to SQLite DB (or create one)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# Create table
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT, age INTEGER)''')
# Insert data
cursor.execute("INSERT INTO users (id, name, age) VALUES (1, 'Alice', 30)")
conn.commit()
# Fetch data
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print(rows)
# Close connection
conn.close()
Read SQL into Pandas
import pandas as pd
import sqlite3
conn = sqlite3.connect('example.db')
df = pd.read_sql_query("SELECT * FROM users", conn)
print(df)
Using SQLAlchemy (more scalable)
from sqlalchemy import create_engine
# Create SQLite engine
engine = create_engine('sqlite:///example.db')
# Read SQL data into pandas
df = pd.read_sql('SELECT * FROM users', engine)
Real-Life Use Case: Read CSV, Clean Data, Save to SQL
import pandas as pd
from sqlalchemy import create_engine
# Load CSV
df = pd.read_csv('employees.csv')
# Clean data
df.dropna(inplace=True)
# Save to SQL
engine = create_engine('sqlite:///employees.db')
df.to_sql('employees', con=engine, if_exists='replace', index=False)
Summary
Task | Library | Method |
---|---|---|
Read CSV | pandas | pd.read_csv() |
Write CSV | pandas | to_csv() |
Read Excel | pandas | pd.read_excel() |
Write Excel | pandas | to_excel() |
Connect to SQL (basic) | sqlite3 | sqlite3.connect() |
Connect to SQL (advanced) | SQLAlchemy | create_engine() |
Read SQL into DataFrame | pandas | pd.read_sql() |