Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cjdoris/countries.jl
Countries, subdivisions, currencies, languages and scripts, according to ISO.
https://github.com/cjdoris/countries.jl
Last synced: 24 days ago
JSON representation
Countries, subdivisions, currencies, languages and scripts, according to ISO.
- Host: GitHub
- URL: https://github.com/cjdoris/countries.jl
- Owner: cjdoris
- License: mit
- Created: 2020-06-03T18:48:44.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-10-11T13:49:12.000Z (about 2 years ago)
- Last Synced: 2024-10-10T11:06:31.744Z (27 days ago)
- Language: Julia
- Homepage: https://juliahub.com/docs/Countries/
- Size: 93.8 KB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Countries.jl
[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![Test Status](https://github.com/cjdoris/Countries.jl/workflows/Tests/badge.svg)](https://github.com/cjdoris/Countries.jl/actions?query=workflow%3ATests)
[![codecov](https://codecov.io/gh/cjdoris/Countries.jl/branch/main/graph/badge.svg?token=AECCWGKRVJ)](https://codecov.io/gh/cjdoris/Countries.jl)Julia package of information about countries, currencies and languages according to these
ISO standards:
- ISO 3166-1: Countries.
- ISO 3166-2: Country subdivisions.
- ISO 4217: Currencies.
- ISO 639-3: Languages.
- ISO 15924: Scripts.The data can be converted to any table type, allowing for easy integration into data
science workflows.The data is obtained from the Julia package
[`iso_codes_jll`](https://github.com/JuliaBinaryWrappers/iso_codes_jll.jl)
which makes available the data from the Debian package
[`iso-codes`](https://packages.debian.org/sid/iso-codes).## Install
```
pkg> add Countries
```## Example
```julia-repl
julia> using Countriesjulia> all_countries()
249-element Vector{Country}:
Country("AW", "ABW", "Aruba", 533, "Aruba", "Aruba", "🇦🇼")
Country("AF", "AFG", "Afghanistan", 4, "Islamic Republic of Afghanistan", "Afghanistan", "🇦🇫")
⋮
Country("ZM", "ZMB", "Zambia", 894, "Republic of Zambia", "Zambia", "🇿🇲")
Country("ZW", "ZWE", "Zimbabwe", 716, "Republic of Zimbabwe", "Zimbabwe", "🇿🇼")julia> get_language("en")
Language("en", "eng", "English", "I", "L", "English", "English", "eng")julia> filter(x->startswith(x.alpha4, "La"), all_scripts())
5-element Vector{Script}:
Script("Lana", "Tai Tham (Lanna)", 351)
Script("Laoo", "Lao", 356)
Script("Latf", "Latin (Fraktur variant)", 217)
Script("Latg", "Latin (Gaelic variant)", 216)
Script("Latn", "Latin", 215)julia> using DataFrames
julia> DataFrame(all_currencies())
181×3 DataFrame
Row │ alpha3 name numeric
│ String String Int16
─────┼────────────────────────────────────────────────────
1 │ AED UAE Dirham 784
2 │ AFN Afghani 971
⋮ │ ⋮ ⋮ ⋮
180 │ ZMW Zambian Kwacha 967
181 │ ZWL Zimbabwe Dollar 932
julia> my_data = DataFrame(Country=["NGA", "CA", "KOR", "NZ"], Widgets=[400, 12000, 100, 3000])
4×2 DataFrame
Row │ Country Widgets
│ String Int64
─────┼──────────────────
1 │ NGA 400
2 │ CA 12000
3 │ KOR 100
4 │ NZ 3000julia> my_data.Country_Name = [x.name for x in get_country.(my_data.Country)];
julia> my_data
4×3 DataFrame
Row │ Country Widgets Country_Name
│ String Int64 String
─────┼──────────────────────────────────────
1 │ NGA 400 Nigeria
2 │ CA 12000 Canada
3 │ KOR 100 Korea, Republic of
4 │ NZ 3000 New Zealand
```## Exported API
For each supported ISO standard, this package exports:
- a type (e.g. `Country`) to hold information about an instance from the standard;
- a function (e.g. `all_countries`) returning a list of all instances; and
- a lookup function (e.g. `get_country`) to get an instance from any of its codes.Information about an instance can be obtained through its fields. All fields are strings,
except `numeric` which is an integer. Optional fields may also be `nothing`.The lists also satisfy the
[`Tables.jl`](https://github.com/JuliaData/Tables.jl)
interface, so can be converted to your favourite table type.| Standard | API | Fields |
| -------- | --- | ------ |
| ISO 3166-1: Countries | `Country`, `all_countries`, `get_country` | `alpha2`, `alpha3`, `name`, `numeric`, `official_name`, `common_name`, `flag` (optional) |
| ISO 3166-2: Country Subdivisions | `CountrySubdivision`, `all_country_subdivisions`, `get_country_subdivision` | `code`, `name`, `type`, `parent` (optional) |
| ISO 4217: Currencies | `Currency`, `all_currencies`, `get_currency` | `alpha3`, `name`, `numeric` |
| ISO 639-3: Languages | `Language`, `all_languages`, `get_language` | `alpha2` (optional), `alpha3`, `name`, `scope`, `type`, `common_name`, `inverted_name`, `bibliographic` |
| ISO 15924: Scripts | `Script`, `all_scripts`, `get_script` | `alpha4`, `name`, `numeric` |