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'
)
| 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 |