Utility Examples#

Simple examples of utility functions.

Used Libraries#

Join Analysis#

import frameon as fron
import pandas as pd

customers = pd.DataFrame({
    'customer_id': [1, 2, 3, 4],
    'name': ['Alice', 'Bob', 'Charlie', 'David']
})

orders = pd.DataFrame({
    'order_id': [101, 102, 103],
    'customer_id': [1, 2, 5],
    'amount': [100, 200, 300]
})

fron.analyze_join_keys(
    left_df=customers,
    right_df=orders,
    on='customer_id'
)
Join info
Type Left-only keys Right-only keys Left size Right size Inner join size Left join size Right join size Outer join size
1:1 2 1 4 3 2 4 3 5

Data Integrity Checks#

import frameon as fron
import pandas as pd

data = pd.DataFrame({
    'product_id': [1, 1, 2, 2, 3],
    'price': [10, 12, 20, 20, 30]
})

fron.find_inconsistent_mappings(
    df=data,
    key_column='product_id',
    value_column='price'
)
Sample of inconsistent mappings (showing first 3 keys):
 product_id  price
          1     10
product_id price
0 1 10
1 1 12

Distance Calculations

import frameon as fron
import pandas as pd

cities = pd.DataFrame({
    'city1': ['Paris', 'Paris', 'Paris', 'London', 'London', 'New York', 'New York', 'Tokyo', 'Sydney', 'Rio'],
    'city2': ['London', 'New York', 'Tokyo', 'New York', 'Sydney', 'Los Angeles', 'Tokyo', 'Sydney', 'Cape Town', 'Sydney'],
    'lat1': [48.8566, 48.8566, 48.8566, 51.5074, 51.5074, 40.7128, 40.7128, 35.6762, -33.8688, -22.9068],
    'lon1': [2.3522, 2.3522, 2.3522, -0.1278, -0.1278, -74.0060, -74.0060, 139.6503, 151.2093, -43.1729],
    'lat2': [51.5074, 40.7128, 35.6762, 40.7128, -33.8688, 34.0522, 35.6762, -33.8688, -33.9249, -33.8688],
    'lon2': [-0.1278, -74.0060, 139.6503, -74.0060, 151.2093, -118.2437, 139.6503, 18.4241, 18.4241, 151.2093]
})

cities['distance_km'] = fron.haversine_vectorized(
    lat1=cities['lat1'].values,
    lon1=cities['lon1'].values,
    lat2=cities['lat2'].values,
    lon2=cities['lon2'].values
)

cities
city1 city2 lat1 lon1 lat2 lon2 distance_km
0 Paris London 48.8566 2.3522 51.5074 -0.1278 343.556060
1 Paris New York 48.8566 2.3522 40.7128 -74.0060 5837.240904
2 Paris Tokyo 48.8566 2.3522 35.6762 139.6503 9711.724819
3 London New York 51.5074 -0.1278 40.7128 -74.0060 5570.222180
4 London Sydney 51.5074 -0.1278 -33.8688 151.2093 16993.933460
5 New York Los Angeles 40.7128 -74.0060 34.0522 -118.2437 3935.746255
6 New York Tokyo 40.7128 -74.0060 35.6762 139.6503 10851.732849
7 Tokyo Sydney 35.6762 139.6503 -33.8688 18.4241 14725.481851
8 Sydney Cape Town -33.8688 151.2093 -33.9249 18.4241 11011.664131
9 Rio Sydney -22.9068 -43.1729 -33.8688 151.2093 13521.033221