Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
This package is an implementation of the World Integrated Trade Solution API. Use this package to explore the Trade and Tariff Data published by the World Bank.
This python package itself is licenced under the MIT License. Different Terms and Conditions apply to the WITS data itself, please read the Frequently Asked Questions on the WITS website.
Install or update the World Trade Data python package with
pip install world_trade_data --upgrade
See the outputs of the commands below on GitHub. Or even, open this README.md
as a notebook and run it interactively on Binder!
import pandas as pd
import world_trade_data as wits
pd.set_option('display.max_rows', 6)
wits.get_countries()
wits.get_products()
wits.get_indicators()
All these methods accept a datasource
argument, which can be any of
wits.DATASOURCES
The nomenclature, and data availability, are accessible with get_nomenclatures()
and get_dataavailability()
.
Indicators are available with get_indicator
. Tariff rates can be loaded with get_tariff_reported
and get_tariff_estimated
.
The three functions above accept a name_or_id
argument that defaults to 'name'
. Use name_or_id='id'
to
get codes rather than full description for products and countries:
wits.get_indicator('MPRT-TRD-VL', reporter='usa', year='2017', name_or_id='id')
In the below we show how to collect and plot the Import and Export data for the USA in 2017.
To begin with, we request the values for the corresponding import and exports. Here, we use the default value for partner='wld'
, and the default value for product='all'
.
usa_imports_2017 = wits.get_indicator('MPRT-TRD-VL', reporter='usa', year='2017')
usa_exports_2017 = wits.get_indicator('XPRT-TRD-VL', reporter='usa', year='2017')
usa_imports_2017
Now we remove the first levels of the index
usa_imports_2017 = usa_imports_2017.loc['Annual'].loc['United States'].loc['World']
usa_exports_2017 = usa_exports_2017.loc['Annual'].loc['United States'].loc['World']
Note that one line in the table gives the value for imports on all products:
usa_imports_2017.loc['All Products']
In order to avoid double counting, we only look at sectors:
products = wits.get_products()
sectors = products.loc[(products.grouptype=='Sector') & (products.index!='Total')].productdescription.values
sectors
and make sure that we reproduce well the total:
assert pd.np.isclose(usa_imports_2017.loc[sectors].Value.sum(), usa_imports_2017.loc['All Products'].Value)
Finally we represent the data using e.g. Plotly's Pie Charts
import plotly.graph_objects as go
from plotly.subplots import make_subplots
imports_musd = usa_imports_2017.loc[sectors].Value / 1e3
exports_musd = usa_exports_2017.loc[sectors].Value / 1e3
fig = make_subplots(rows=1, cols=2, specs=[[{'type':'domain'}, {'type':'domain'}]])
fig.add_trace(go.Pie(labels=sectors, values=imports_musd, name="Imports"), 1, 1)
fig.add_trace(go.Pie(labels=sectors, values=exports_musd, name="Exports"), 1, 2)
fig.update_traces(hole=.4,
scalegroup='usa',
textinfo='label',
hovertemplate = "%{label}<br>%{value:,.0f}M$<br>%{percent}")
fig.update_layout(
title_text="Trade Statistics, USA, 2017",
annotations=[dict(text='Imports<br>{:.3f}T$'.format(imports_musd.sum()/1e6),
x=0.17, y=0.5, font_size=16, showarrow=False),
dict(text='Exports<br>{:.3f}T$'.format(exports_musd.sum()/1e6),
x=0.83, y=0.5, font_size=16, showarrow=False)])
fig.show(renderer='notebook_connected')
FAQs
World Integrated Trade Solution (WITS) API in Python
We found that world-trade-data demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.