Pandas Data Analysis Tool
This guide demonstrates how to build a command-line tool for analyzing datasets using pandas. It reads a CSV file (e.g., sales records), calculates key metrics like total revenue and best-selling products, and exports a summary to a new file.
Modules Used:
- pandas: For high-performance data manipulation and analysis.
- argparse: To handle input and output file arguments.
- openpyxl: Required if exporting to Excel (
.xlsx).
Installation
pip install pandas openpyxl
The Code
Save this as analyzer.py.
import pandas as pd
import argparse
import sys
import os
def analyze_data(input_file, output_file):
if not os.path.exists(input_file):
print(f"Error: Input file '{input_file}' not found.")
return
try:
# 1. Load Data
print(f"Loading data from {input_file}...")
df = pd.read_csv(input_file)
# Basic Validation: Ensure required columns exist
required_columns = ['Product', 'Category', 'Price', 'Quantity', 'Date']
missing_cols = [col for col in required_columns if col not in df.columns]
if missing_cols:
print(f"Error: Input CSV is missing columns: {', '.join(missing_cols)}")
return
# 2. Data Cleaning / Preparation
# Calculate 'Total' sales for each row
df['Total'] = df['Price'] * df['Quantity']
# Convert Date column to datetime objects for accurate sorting/filtering
df['Date'] = pd.to_datetime(df['Date'])
# 3. Perform Analysis
print("-" * 30)
print("DATA SUMMARY")
print("-" * 30)
total_revenue = df['Total'].sum()
print(f"Total Revenue: ${total_revenue:,.2f}")
# Find the product with the highest total sales
top_product = df.groupby('Product')['Total'].sum().idxmax()
print(f"Best Selling Product: {top_product}")
# Group by Category to see performance
category_summary = df.groupby('Category')<a href='/%27Quantity%27%2C%20%27Total%27'>'Quantity', 'Total'</a>.sum().reset_index()
print("\nSales by Category:")
print(category_summary)
# 4. Export Results
if output_file:
print(f"\nSaving summary to {output_file}...")
if output_file.endswith('.csv'):
category_summary.to_csv(output_file, index=False)
elif output_file.endswith('.xlsx'):
category_summary.to_excel(output_file, index=False)
else:
# Default to CSV if extension is unknown
print("Unknown output format. Saving as CSV.")
category_summary.to_csv(output_file + ".csv", index=False)
print("Done.")
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Sales Data Analysis Tool")
parser.add_argument("input", help="Path to input CSV file")
parser.add_argument("-o", "--output", help="Path to output summary file (CSV or Excel)")
args = parser.parse_args()
analyze_data(args.input, args.output)
Usage
-
Create a dummy data file named
sales.csv:Product,Category,Price,Quantity,Date Laptop,Electronics,1200,5,2023-01-01 Mouse,Electronics,25,50,2023-01-02 Coffee,Food,5,100,2023-01-03 Desk,Furniture,150,10,2023-01-04 Monitor,Electronics,300,15,2023-01-05 -
Run the tool:
# Analyze and print to console python analyzer.py sales.csv # Analyze and save summary to Excel python analyzer.py sales.csv --output summary.xlsx