Handle engineering units with automatic conversion and dimensional analysis
Pint is a Python package for handling physical quantities with units. It provides:
Pint eliminates unit conversion errors and ensures dimensional consistency in engineering calculations, making it essential for any technical work involving physical quantities.
pip install pint
For integration with NumPy and Pandas:
pip install pint[numpy]
A quantity in Pint consists of a magnitude (number) and a unit.
from pint import UnitRegistry
# Create unit registry (do this once per module)
ureg = UnitRegistry()
# Define quantities with units
distance = 100 * ureg.meter
time = 5 * ureg.second
pressure = 50 * ureg.psi
# Alternative syntax using string parsing
flow_rate = ureg('250 gallons/minute')
temperature = ureg('75 degF')
viscosity = ureg('1.5 centipoise')
# Access magnitude and units
print(f"Distance magnitude: {distance.magnitude}") # 100
print(f"Distance units: {distance.units}") # meter
Convert between compatible units automatically:
# Length conversions
distance = 100 * ureg.meter
print(distance.to('feet')) # 328.084 foot
print(distance.to('kilometer')) # 0.1 kilometer
# Pressure conversions
pressure = 100 * ureg.psi
print(pressure.to('bar')) # 6.895 bar
print(pressure.to('pascal')) # 689475.7 pascal
# Flow rate conversions
flow = 500 * ureg.gallons / ureg.minute
print(flow.to('liter/second')) # 31.546 liter/second
print(flow.to('m**3/hour')) # 113.562 meter**3/hour
# Temperature conversions (handles offset units)
temp = 75 * ureg.degF
print(temp.to('degC')) # 23.889 degree_Celsius
print(temp.to('kelvin')) # 297.039 kelvin
Pint ensures dimensional consistency in calculations:
# Velocity = Distance / Time
distance = 100 * ureg.meter
time = 5 * ureg.second
velocity = distance / time
print(velocity) # 20.0 meter/second
# Force = Mass × Acceleration
mass = 10 * ureg.kg
acceleration = 9.81 * ureg.meter / ureg.second**2
force = mass * acceleration
print(force) # 98.1 kilogram·meter/second²
print(force.to('newton')) # 98.1 newton
# Dimensional consistency check