LSMS_Library 0.2.6__py3-none-any.whl → 0.2.9.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lsms_library/__init__.py +1 -2
- lsms_library/countries/.dvc/.gitignore +3 -0
- lsms_library/countries/.dvc/config +13 -0
- lsms_library/countries/.dvc/plots/confusion.json +30 -0
- lsms_library/countries/.dvc/plots/default.json +29 -0
- lsms_library/countries/.dvc/plots/scatter.json +27 -0
- lsms_library/countries/.dvc/plots/smooth.json +39 -0
- lsms_library/countries/.dvc/s3_config +2 -0
- lsms_library/countries/.dvc/s3_reader_creds.gpg +0 -0
- lsms_library/countries/Uganda/2005-06/_/data_info.yml +1 -1
- lsms_library/countries/Uganda/2005-06/_/household_characteristics.py +1 -6
- lsms_library/countries/Uganda/2009-10/_/household_characteristics.py +1 -6
- lsms_library/countries/Uganda/2010-11/_/household_characteristics.py +1 -6
- lsms_library/countries/Uganda/2011-12/_/household_characteristics.py +1 -6
- lsms_library/countries/Uganda/2013-14/_/household_characteristics.py +1 -6
- lsms_library/countries/Uganda/2015-16/_/household_characteristics.py +1 -6
- lsms_library/countries/Uganda/2018-19/_/household_characteristics.py +1 -7
- lsms_library/countries/Uganda/2019-20/_/household_characteristics.py +1 -5
- lsms_library/countries/Uganda/_/Makefile +2 -2
- lsms_library/countries/Uganda/_/data_scheme.yml +3 -0
- lsms_library/countries/Uganda/_/household_characteristics.py +2 -4
- lsms_library/country.py +56 -51
- lsms_library/dvc_permissions.py +68 -0
- lsms_library/local_tools.py +3 -3
- {lsms_library-0.2.6.dist-info → lsms_library-0.2.9.dev0.dist-info}/METADATA +1 -1
- {lsms_library-0.2.6.dist-info → lsms_library-0.2.9.dev0.dist-info}/RECORD +28 -22
- {lsms_library-0.2.6.dist-info → lsms_library-0.2.9.dev0.dist-info}/WHEEL +1 -1
- lsms_library/countries/Malawi/_/spelling.yml +0 -4
- lsms_library/countries/Togo/2018/_/food_items.json +0 -1
- lsms_library/countries/Uganda/_/compare_unit_labels.py +0 -9
- {lsms_library-0.2.6.dist-info → lsms_library-0.2.9.dev0.dist-info}/LICENSE.txt +0 -0
lsms_library/__init__.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from . import country
|
|
2
2
|
from . country import Country, Wave
|
|
3
3
|
from . import local_tools as tools
|
|
4
|
-
#from . import countries
|
|
5
|
-
#from .countries import GhanaLSS
|
|
6
4
|
from .categorical_mapping import ai_agent
|
|
7
5
|
from . import transformations
|
|
6
|
+
from .dvc_permissions import authenticate
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[core]
|
|
2
|
+
remote = ligonresearch_s3
|
|
3
|
+
autostage = true
|
|
4
|
+
[cache]
|
|
5
|
+
type = reflink
|
|
6
|
+
['remote "ligonresearch"']
|
|
7
|
+
url = gdrive://1oVOdo2-oeM_LYBSe1lKSr-pm08syczdu/LSMS
|
|
8
|
+
gdrive_use_service_account = true
|
|
9
|
+
gdrive_service_account_json_file_path = gdrive_creds.json
|
|
10
|
+
['remote "ligonresearch_s3"']
|
|
11
|
+
url = s3://dvcbucket0/LSMS
|
|
12
|
+
credentialpath = s3_creds
|
|
13
|
+
configpath = s3_config
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
|
|
3
|
+
"data": {
|
|
4
|
+
"values": "<DVC_METRIC_DATA>"
|
|
5
|
+
},
|
|
6
|
+
"title": "<DVC_METRIC_TITLE>",
|
|
7
|
+
"mark": "rect",
|
|
8
|
+
"encoding": {
|
|
9
|
+
"x": {
|
|
10
|
+
"field": "<DVC_METRIC_X>",
|
|
11
|
+
"type": "nominal",
|
|
12
|
+
"sort": "ascending",
|
|
13
|
+
"title": "<DVC_METRIC_X_LABEL>"
|
|
14
|
+
},
|
|
15
|
+
"y": {
|
|
16
|
+
"field": "<DVC_METRIC_Y>",
|
|
17
|
+
"type": "nominal",
|
|
18
|
+
"sort": "ascending",
|
|
19
|
+
"title": "<DVC_METRIC_Y_LABEL>"
|
|
20
|
+
},
|
|
21
|
+
"color": {
|
|
22
|
+
"aggregate": "count",
|
|
23
|
+
"type": "quantitative"
|
|
24
|
+
},
|
|
25
|
+
"facet": {
|
|
26
|
+
"field": "rev",
|
|
27
|
+
"type": "nominal"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
|
|
3
|
+
"data": {
|
|
4
|
+
"values": "<DVC_METRIC_DATA>"
|
|
5
|
+
},
|
|
6
|
+
"title": "<DVC_METRIC_TITLE>",
|
|
7
|
+
"mark": {
|
|
8
|
+
"type": "line"
|
|
9
|
+
},
|
|
10
|
+
"encoding": {
|
|
11
|
+
"x": {
|
|
12
|
+
"field": "<DVC_METRIC_X>",
|
|
13
|
+
"type": "quantitative",
|
|
14
|
+
"title": "<DVC_METRIC_X_LABEL>"
|
|
15
|
+
},
|
|
16
|
+
"y": {
|
|
17
|
+
"field": "<DVC_METRIC_Y>",
|
|
18
|
+
"type": "quantitative",
|
|
19
|
+
"title": "<DVC_METRIC_Y_LABEL>",
|
|
20
|
+
"scale": {
|
|
21
|
+
"zero": false
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"color": {
|
|
25
|
+
"field": "rev",
|
|
26
|
+
"type": "nominal"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
|
|
3
|
+
"data": {
|
|
4
|
+
"values": "<DVC_METRIC_DATA>"
|
|
5
|
+
},
|
|
6
|
+
"title": "<DVC_METRIC_TITLE>",
|
|
7
|
+
"mark": "point",
|
|
8
|
+
"encoding": {
|
|
9
|
+
"x": {
|
|
10
|
+
"field": "<DVC_METRIC_X>",
|
|
11
|
+
"type": "quantitative",
|
|
12
|
+
"title": "<DVC_METRIC_X_LABEL>"
|
|
13
|
+
},
|
|
14
|
+
"y": {
|
|
15
|
+
"field": "<DVC_METRIC_Y>",
|
|
16
|
+
"type": "quantitative",
|
|
17
|
+
"title": "<DVC_METRIC_Y_LABEL>",
|
|
18
|
+
"scale": {
|
|
19
|
+
"zero": false
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"color": {
|
|
23
|
+
"field": "rev",
|
|
24
|
+
"type": "nominal"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
|
|
3
|
+
"data": {
|
|
4
|
+
"values": "<DVC_METRIC_DATA>"
|
|
5
|
+
},
|
|
6
|
+
"title": "<DVC_METRIC_TITLE>",
|
|
7
|
+
"mark": {
|
|
8
|
+
"type": "line"
|
|
9
|
+
},
|
|
10
|
+
"encoding": {
|
|
11
|
+
"x": {
|
|
12
|
+
"field": "<DVC_METRIC_X>",
|
|
13
|
+
"type": "quantitative",
|
|
14
|
+
"title": "<DVC_METRIC_X_LABEL>"
|
|
15
|
+
},
|
|
16
|
+
"y": {
|
|
17
|
+
"field": "<DVC_METRIC_Y>",
|
|
18
|
+
"type": "quantitative",
|
|
19
|
+
"title": "<DVC_METRIC_Y_LABEL>",
|
|
20
|
+
"scale": {
|
|
21
|
+
"zero": false
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"color": {
|
|
25
|
+
"field": "rev",
|
|
26
|
+
"type": "nominal"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"transform": [
|
|
30
|
+
{
|
|
31
|
+
"loess": "<DVC_METRIC_Y>",
|
|
32
|
+
"on": "<DVC_METRIC_X>",
|
|
33
|
+
"groupby": [
|
|
34
|
+
"rev"
|
|
35
|
+
],
|
|
36
|
+
"bandwidth": 0.3
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
Binary file
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
6
3
|
import numpy as np
|
|
7
4
|
import sys
|
|
8
|
-
sys.path.append('../../_/')
|
|
9
|
-
from uganda import age_sex_composition
|
|
10
5
|
|
|
11
6
|
myvars = dict(fn='../Data/GSEC2.dta',
|
|
12
7
|
HHID='HHID',
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
6
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
7
3
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
4
|
|
|
10
5
|
myvars = dict(fn='../Data/GSEC2.dta',
|
|
11
6
|
HHID='HHID',
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
6
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
7
3
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
4
|
|
|
10
5
|
myvars = dict(fn='../Data/GSEC2.dta',
|
|
11
6
|
HHID='HHID',
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
6
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
7
3
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
4
|
|
|
10
5
|
myvars = dict(fn='../Data/GSEC2.dta',
|
|
11
6
|
HHID='HHID',
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
6
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
7
3
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
4
|
|
|
10
5
|
myvars = dict(fn='../Data/GSEC2.dta',
|
|
11
6
|
HHID='HHID',
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
6
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
7
3
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
4
|
|
|
10
5
|
myvars = dict(fn='../Data/gsec2.dta',
|
|
11
6
|
HHID='hhid',
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
6
|
-
import pandas as pd
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
7
3
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
|
-
import dvc.api
|
|
10
4
|
|
|
11
5
|
myvars = dict(fn='../Data/GSEC2.dta',
|
|
12
6
|
HHID='hhid',
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
|
|
4
|
-
import sys
|
|
5
|
-
sys.path.append('../../_/')
|
|
2
|
+
from lsms_library.local_tools import to_parquet, age_sex_composition
|
|
6
3
|
import pandas as pd
|
|
7
4
|
import numpy as np
|
|
8
|
-
from uganda import age_sex_composition
|
|
9
5
|
|
|
10
6
|
myvars = dict(fn='../Data/HH/gsec2.dta',
|
|
11
7
|
HHID='hhid',
|
|
@@ -28,7 +28,7 @@ interview_date_parquet := $(interview_date:.py=.parquet)
|
|
|
28
28
|
enterprise_income = $(shell find $(rounds) -name enterprise_income.py)
|
|
29
29
|
enterprise_income_parquet := $(enterprise_income:.py=.parquet)
|
|
30
30
|
|
|
31
|
-
../var/enterprise_income.parquet: enterprise_income.py $(enterprise_income_parquet)
|
|
31
|
+
../var/enterprise_income.parquet: enterprise_income.py $(enterprise_income_parquet) ../var/other_features.parquet
|
|
32
32
|
python enterprise_income.py
|
|
33
33
|
|
|
34
34
|
assets = $(shell find $(rounds) -name assets.py)
|
|
@@ -40,7 +40,7 @@ assets_parquet := $(assets:.py=.parquet)
|
|
|
40
40
|
earnings = $(shell find $(rounds) -name earnings.py)
|
|
41
41
|
earnings_parquet := $(earnings:.py=.parquet)
|
|
42
42
|
|
|
43
|
-
../var/earnings.parquet: earnings.py $(earnings_parquet)
|
|
43
|
+
../var/earnings.parquet: earnings.py $(earnings_parquet) ../var/other_features.parquet
|
|
44
44
|
python earnings.py
|
|
45
45
|
|
|
46
46
|
shocks = $(shell find $(rounds) -name shocks.py)
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
from lsms_library.local_tools import to_parquet
|
|
3
|
-
from lsms_library.local_tools import get_dataframe
|
|
4
2
|
"""
|
|
5
3
|
Concatenate data on other household features across rounds.
|
|
6
4
|
"""
|
|
7
|
-
|
|
5
|
+
import json
|
|
8
6
|
import pandas as pd
|
|
7
|
+
from lsms_library.local_tools import to_parquet, get_dataframe
|
|
9
8
|
from uganda import Waves, id_walk
|
|
10
|
-
import json
|
|
11
9
|
|
|
12
10
|
x = {}
|
|
13
11
|
|
lsms_library/country.py
CHANGED
|
@@ -16,6 +16,7 @@ warnings.filterwarnings('ignore', category=FutureWarning)
|
|
|
16
16
|
warnings.filterwarnings('ignore', category=UnicodeWarning)
|
|
17
17
|
import subprocess
|
|
18
18
|
import json
|
|
19
|
+
from sys import stderr
|
|
19
20
|
|
|
20
21
|
class Wave:
|
|
21
22
|
def __init__(self, year, wave_folder, country: 'Country'):
|
|
@@ -42,9 +43,8 @@ class Wave:
|
|
|
42
43
|
|
|
43
44
|
@property
|
|
44
45
|
def file_path(self):
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
return files("lsms_library") / "countries" / self.folder
|
|
47
|
+
|
|
48
48
|
@property
|
|
49
49
|
def resources(self):
|
|
50
50
|
"""Load the data_info.yml that describes table structure, merges, etc."""
|
|
@@ -196,35 +196,37 @@ class Wave:
|
|
|
196
196
|
warnings.warn(f"Data scheme does not contain {request} for {self.name}")
|
|
197
197
|
return pd.DataFrame()
|
|
198
198
|
data_info = self.resources.get(request, None)
|
|
199
|
-
if data_info:
|
|
200
|
-
def check_adding_t(df):
|
|
201
|
-
index_list = df.index.names
|
|
202
|
-
if 't' not in index_list:
|
|
203
|
-
if 't' not in df.columns:
|
|
204
|
-
df['t'] = self.year
|
|
205
|
-
final_index = ['t'] + index_list
|
|
206
|
-
df = df.reset_index().set_index(final_index)
|
|
207
|
-
return df
|
|
208
|
-
def get_data(data_info_dic, mapping_info):
|
|
209
|
-
convert_cat = (data_info_dic.get('converted_categoricals') is None)
|
|
210
|
-
df_edit_function = mapping_info.pop('df_edit')
|
|
211
|
-
dfs = []
|
|
212
|
-
for file, mappings in mapping_info.items():
|
|
213
|
-
df = df_data_grabber(f'lsms_library/countries/{self.folder}/Data/{file}', mappings['idxvars'], **mappings['myvars'], convert_categoricals=convert_cat)
|
|
214
|
-
df = check_adding_t(df)
|
|
215
|
-
# Oddity with large number for missing code
|
|
216
|
-
na = df.select_dtypes(exclude=['object', 'datetime64[ns]']).max().max()
|
|
217
|
-
if na>1e99:
|
|
218
|
-
warnings.warn(f"Large number used for missing? Replacing {na} with NaN.")
|
|
219
|
-
df = df.replace(na,np.nan)
|
|
220
|
-
dfs.append(df)
|
|
221
|
-
df = pd.concat(dfs, axis=0, sort=False)
|
|
222
199
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
200
|
+
def check_adding_t(df):
|
|
201
|
+
index_list = df.index.names
|
|
202
|
+
if 't' not in index_list:
|
|
203
|
+
if 't' not in df.columns:
|
|
204
|
+
df['t'] = self.year
|
|
205
|
+
final_index = ['t'] + index_list
|
|
206
|
+
df = df.reset_index().set_index(final_index)
|
|
207
|
+
return df
|
|
208
|
+
|
|
209
|
+
def get_data(data_info_dic, mapping_info):
|
|
210
|
+
convert_cat = (data_info_dic.get('converted_categoricals') is None)
|
|
211
|
+
df_edit_function = mapping_info.pop('df_edit')
|
|
212
|
+
dfs = []
|
|
213
|
+
for file, mappings in mapping_info.items():
|
|
214
|
+
df = df_data_grabber(f'./{self.folder}/Data/{file}', mappings['idxvars'], **mappings['myvars'], convert_categoricals=convert_cat)
|
|
215
|
+
df = check_adding_t(df)
|
|
216
|
+
# Oddity with large number for missing code
|
|
217
|
+
na = df.select_dtypes(exclude=['object', 'datetime64[ns]']).max().max()
|
|
218
|
+
if na>1e99:
|
|
219
|
+
warnings.warn(f"Large number used for missing? Replacing {na} with NaN.")
|
|
220
|
+
df = df.replace(na,np.nan)
|
|
221
|
+
dfs.append(df)
|
|
222
|
+
df = pd.concat(dfs, axis=0, sort=False)
|
|
223
|
+
|
|
224
|
+
if df_edit_function:
|
|
225
|
+
df = df_edit_function(df)
|
|
226
|
+
|
|
227
|
+
return df
|
|
228
|
+
|
|
229
|
+
if data_info:
|
|
228
230
|
# Vertical Merge dfs
|
|
229
231
|
if data_info.get('dfs'):
|
|
230
232
|
merge_dfs = []
|
|
@@ -249,8 +251,9 @@ class Wave:
|
|
|
249
251
|
df = get_data(data_info, mapping_details)
|
|
250
252
|
|
|
251
253
|
else:
|
|
252
|
-
# The reason why not just simply run the python file is some
|
|
253
|
-
|
|
254
|
+
# The reason why not just simply run the python file is some
|
|
255
|
+
# python files have dependencies.
|
|
256
|
+
print(f"Attempting to generate using Makefile...", flush=True,file=stderr)
|
|
254
257
|
#cluster features in the old makefile is called 'other_features'
|
|
255
258
|
# if request =='cluster_features': request = 'other_features'
|
|
256
259
|
parquet_fn = self.file_path/"_"/ f"{request}.parquet"
|
|
@@ -262,11 +265,11 @@ class Wave:
|
|
|
262
265
|
|
|
263
266
|
cwd_path = self.file_path.parent / "_"
|
|
264
267
|
relative_parquet_path = parquet_fn.relative_to(cwd_path.parent) # Convert to relative path
|
|
265
|
-
subprocess.run(["make", '../' + str(relative_parquet_path)], cwd=cwd_path, check=True)
|
|
266
|
-
print(f"Makefile executed successfully for {self.name}. Rechecking for parquet file...")
|
|
268
|
+
subprocess.run(["make", "-s", '../' + str(relative_parquet_path)], cwd=cwd_path, check=True)
|
|
269
|
+
print(f"Makefile executed successfully for {self.name}. Rechecking for parquet file...",file=stderr)
|
|
267
270
|
|
|
268
271
|
if not parquet_fn.exists():
|
|
269
|
-
print(f"Parquet file {parquet_fn} still missing after running Makefile.")
|
|
272
|
+
print(f"Parquet file {parquet_fn} still missing after running Makefile.",file=stderr)
|
|
270
273
|
return pd.DataFrame()
|
|
271
274
|
|
|
272
275
|
df = pd.read_parquet(parquet_fn)
|
|
@@ -327,13 +330,13 @@ class Country:
|
|
|
327
330
|
# 'nonfood_expenditures.parquet', 'enterprise_income.parquet', 'assets.parquet',
|
|
328
331
|
# 'earnings.parquet', 'housing.parquet', 'income.parquet', 'fct.parquet', 'nutrition.parquet']
|
|
329
332
|
|
|
330
|
-
def __init__(self,country_name, preload_panel_ids =
|
|
333
|
+
def __init__(self, country_name, preload_panel_ids=True, verbose=False):
|
|
331
334
|
self.name = country_name
|
|
332
335
|
self._panel_ids_cache = None
|
|
333
336
|
self._updated_ids_cache = None
|
|
334
337
|
self.wave_folder_map = {}
|
|
335
338
|
if preload_panel_ids:
|
|
336
|
-
print(f"Preloading panel_ids for {self.name}...")
|
|
339
|
+
print(f"Preloading panel_ids for {self.name}...",file=stderr)
|
|
337
340
|
#ignore all the warnings
|
|
338
341
|
with warnings.catch_warnings():
|
|
339
342
|
warnings.simplefilter("ignore")
|
|
@@ -443,17 +446,19 @@ class Country:
|
|
|
443
446
|
raise KeyError(f"{year} is not a valid wave for {self.name}")
|
|
444
447
|
|
|
445
448
|
|
|
446
|
-
def _aggregate_wave_data(self,waves
|
|
447
|
-
"""
|
|
448
|
-
|
|
449
|
-
If the required `.parquet` file is missing, it requests `Makefile` to
|
|
449
|
+
def _aggregate_wave_data(self, waves=None, method_name=None):
|
|
450
|
+
"""Aggregates data across multiple waves using a single dataset method.
|
|
451
|
+
|
|
452
|
+
If the required `.parquet` file is missing, it requests `Makefile` to
|
|
453
|
+
generate only that file.
|
|
450
454
|
"""
|
|
451
|
-
if method_name not in self.data_scheme
|
|
455
|
+
if method_name not in self.data_scheme+['other_features', 'food_prices_quantities_and_expenditures', 'updated_ids']:
|
|
452
456
|
warnings.warn(f"Data scheme does not contain {method_name} for {self.name}")
|
|
453
457
|
return pd.DataFrame()
|
|
454
458
|
|
|
455
459
|
if waves is None:
|
|
456
460
|
waves = self.waves
|
|
461
|
+
|
|
457
462
|
def safe_concat_dataframe_dict(df_dict):
|
|
458
463
|
# Get the target index name order from the first DataFrame
|
|
459
464
|
reference_order = next(iter(df_dict.values())).index.names
|
|
@@ -478,11 +483,11 @@ class Country:
|
|
|
478
483
|
warnings.warn(str(e))
|
|
479
484
|
if results:
|
|
480
485
|
#using safe_concat_dataframe_dict only if more than 2 not empty DataFrames
|
|
481
|
-
non_empty_df =
|
|
482
|
-
if len(non_empty_df) > 1:
|
|
483
|
-
return safe_concat_dataframe_dict(
|
|
486
|
+
non_empty_df = {k:df for k,df in results.items() if not df.empty}
|
|
487
|
+
if len(non_empty_df) > 1: # Why not 2, per comment above?
|
|
488
|
+
return safe_concat_dataframe_dict(non_empty_df)
|
|
484
489
|
else:
|
|
485
|
-
return pd.concat(non_empty_df, axis=0, sort=False)
|
|
490
|
+
return pd.concat(non_empty_df.values(), axis=0, sort=False)
|
|
486
491
|
raise KeyError(f"No data found for {method_name} in any wave of {self.name}.")
|
|
487
492
|
|
|
488
493
|
def load_from_makefile(method_name):
|
|
@@ -504,11 +509,11 @@ class Country:
|
|
|
504
509
|
relative_path = target_path.relative_to(cwd_path.parent)
|
|
505
510
|
make_target = '../' + str(relative_path)
|
|
506
511
|
|
|
507
|
-
subprocess.run(["make", make_target], cwd=cwd_path, check=True)
|
|
508
|
-
print(f"Makefile executed successfully for {self.name}. Rechecking for {target_path.name}...")
|
|
512
|
+
subprocess.run(["make", "-s", make_target], cwd=cwd_path, check=True)
|
|
513
|
+
print(f"Makefile executed successfully for {self.name}. Rechecking for {target_path.name}...",file=stderr)
|
|
509
514
|
|
|
510
515
|
if not target_path.exists():
|
|
511
|
-
print(f"Data file {target_path} still missing after running Makefile.")
|
|
516
|
+
print(f"Data file {target_path} still missing after running Makefile.",file=stderr)
|
|
512
517
|
return pd.DataFrame()
|
|
513
518
|
|
|
514
519
|
if target_path.suffix == '.json':
|
|
@@ -546,7 +551,7 @@ class Country:
|
|
|
546
551
|
self._panel_ids_cache = panel_ids_dic
|
|
547
552
|
self._updated_ids_cache = updated_ids_dic
|
|
548
553
|
else:
|
|
549
|
-
print(f"Panel IDs not found in {self.name}.")
|
|
554
|
+
print(f"Panel IDs not found in {self.name}.",file=stderr)
|
|
550
555
|
self._panel_ids_cache = None
|
|
551
556
|
self._updated_ids_cache = None
|
|
552
557
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
import git
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
import getpass
|
|
5
|
+
import pkgutil
|
|
6
|
+
import gnupg
|
|
7
|
+
|
|
8
|
+
def is_git_repo(path='.'):
|
|
9
|
+
"""
|
|
10
|
+
Check if the specified path is a Git repository.
|
|
11
|
+
|
|
12
|
+
Parameters:
|
|
13
|
+
path (str): The path to check. Default is the current directory.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
bool: True if the path is a valid Git repository, False otherwise.
|
|
17
|
+
"""
|
|
18
|
+
try:
|
|
19
|
+
_ = git.Repo(path).git_dir
|
|
20
|
+
return True
|
|
21
|
+
except git.exc.InvalidGitRepositoryError:
|
|
22
|
+
return False
|
|
23
|
+
|
|
24
|
+
def authenticate(gpg_key_file='s3_reader_creds.gpg'):
|
|
25
|
+
"""
|
|
26
|
+
Decrypt the specified GPG file and store the decrypted credentials securely.
|
|
27
|
+
|
|
28
|
+
This function prompts the user for a passphrase to decrypt the provided GPG
|
|
29
|
+
file.
|
|
30
|
+
|
|
31
|
+
Parameters:
|
|
32
|
+
gpg_key_file (str): The name of the GPG file containing the encrypted credentials.
|
|
33
|
+
Default is 's3_reader_creds.gpg'.
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ValueError: If decryption fails due to an incorrect passphrase or other issues.
|
|
37
|
+
"""
|
|
38
|
+
# Construct the path to the encrypted file relative to this function’s location
|
|
39
|
+
gpg_path = Path(__file__).resolve().parent / 'countries' / '.dvc'
|
|
40
|
+
encrypted_file = gpg_path / gpg_key_file
|
|
41
|
+
|
|
42
|
+
# Load the encrypted data
|
|
43
|
+
encrypted_data = encrypted_file.read_bytes()
|
|
44
|
+
|
|
45
|
+
# Initialize GPG
|
|
46
|
+
gpg = gnupg.GPG()
|
|
47
|
+
|
|
48
|
+
# Prompt the user for the passphrase securely
|
|
49
|
+
passphrase = getpass.getpass(prompt='Enter passphrase for decryption: ')
|
|
50
|
+
|
|
51
|
+
# Decrypt the data
|
|
52
|
+
decrypted_data = gpg.decrypt(encrypted_data, passphrase=passphrase)
|
|
53
|
+
|
|
54
|
+
if decrypted_data.ok:
|
|
55
|
+
# Write the decrypted data to a temporary file securely
|
|
56
|
+
creds_file = gpg_path / 's3_creds'
|
|
57
|
+
|
|
58
|
+
if creds_file.exists():
|
|
59
|
+
user_input = input(f"The file {creds_file} already exists. Overwrite? (yes/no): ").strip().lower()
|
|
60
|
+
if user_input not in ['yes', 'y']:
|
|
61
|
+
print("Operation aborted. Credentials were not written.")
|
|
62
|
+
return
|
|
63
|
+
|
|
64
|
+
with open(creds_file, 'w') as f:
|
|
65
|
+
f.write(str(decrypted_data))
|
|
66
|
+
print(f"Decryption successful; credentials written to {creds_file}")
|
|
67
|
+
else:
|
|
68
|
+
raise ValueError("Decryption failed: check the passphrase and try again")
|
lsms_library/local_tools.py
CHANGED
|
@@ -696,11 +696,11 @@ def panel_ids(Waves):
|
|
|
696
696
|
if isinstance(wave_info[1], list): #tanzania
|
|
697
697
|
df = wave_info[2](df, wave_info[1])
|
|
698
698
|
else:
|
|
699
|
-
df[wave_info[1]] = df[wave_info[1]].apply(format_id)
|
|
700
|
-
df[wave_info[2]] = df[wave_info[2]].apply(format_id)
|
|
699
|
+
df.loc[:,wave_info[1]] = df[wave_info[1]].apply(format_id)
|
|
700
|
+
df.loc[:,wave_info[2]] = df[wave_info[2]].apply(format_id)
|
|
701
701
|
# If a transformation function is provided (tuple length 4), apply it to the old_id column
|
|
702
702
|
if len(wave_info) == 4:
|
|
703
|
-
df[wave_info[2]] = df[wave_info[2]].apply(wave_info[3])
|
|
703
|
+
df.loc[:,wave_info[2]] = df[wave_info[2]].apply(wave_info[3])
|
|
704
704
|
df['t'] = wave_year
|
|
705
705
|
df = df.rename(columns={wave_info[1]: 'i', wave_info[2]: 'previous_i'})
|
|
706
706
|
df = df.set_index(['t', 'i'])[['previous_i']]
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
lsms_library/Makefile,sha256=5iTMKOlMuK29OtDrqIrjGztt-ivnIw0l8UWI8UR0alU,607
|
|
2
2
|
lsms_library/README.org,sha256=Nm5shD0nZnG_CyFXrJRK78RQJ6bNbHKL3UyVf4tK0rI,810
|
|
3
|
-
lsms_library/__init__.py,sha256=
|
|
3
|
+
lsms_library/__init__.py,sha256=BXz5Xm1FW_0Ebo9NCa05QBhg4-LyntFUx1vI78ILn-E,207
|
|
4
4
|
lsms_library/categorical_mapping/ai_agent.py,sha256=uN4DZmpeLyl3E03AS-50Acb4bjNhL5BByHIZwbxtwfw,6268
|
|
5
5
|
lsms_library/categorical_mapping/categorical_mapping_helper.py,sha256=P6vHZf2vdXPmIr-FcidikaJZFtp025cRAMA2lBG_nMo,5310
|
|
6
6
|
lsms_library/categorical_mapping/spelling.yml,sha256=c5n0WudZZ3DHzG9dhi6-jzfUt9f29op6jvHyYavPPCI,20
|
|
7
7
|
lsms_library/contributing.org,sha256=KkW9ioEh6snUP5sEbSl42nhjfc-pr2rcd0F4NAd7tkU,7564
|
|
8
|
+
lsms_library/countries/.dvc/.gitignore,sha256=zaP8GkzpZZyxmBi7Bl7ujFJxeVSE9J8xTKA1e02uxu8,26
|
|
9
|
+
lsms_library/countries/.dvc/config,sha256=oWXrcncknTjZRLXS0XcHmaJB0FX6DZNgkRdgY6dOVqc,388
|
|
10
|
+
lsms_library/countries/.dvc/plots/confusion.json,sha256=jUW3NJJZlg4e-CFa4s8hEEvqnsWpLVGt_3cgBwt9iqE,740
|
|
11
|
+
lsms_library/countries/.dvc/plots/default.json,sha256=beLplVC3KKggxiinNrnAS74ghDY4ZgWU0lGiFVuzfzU,677
|
|
12
|
+
lsms_library/countries/.dvc/plots/scatter.json,sha256=FH0wazql-iIxd8eYZlQdwRtC9vR7wqe-lZw2lDtAYXg,654
|
|
13
|
+
lsms_library/countries/.dvc/plots/smooth.json,sha256=iAPend4RhPDoss8CkcbWBsyi92p4g_22A6gBQHxe8R4,889
|
|
14
|
+
lsms_library/countries/.dvc/s3_config,sha256=1qRklwYbm44Pq66ym8JL_2xaIKpmLN4BG14bru8lRXI,27
|
|
15
|
+
lsms_library/countries/.dvc/s3_reader_creds.gpg,sha256=GinaLcABIAWwiUIPXV5UACUOCKsqIi4b4GZFSyRXubg,187
|
|
8
16
|
lsms_library/countries/Afghanistan/2016-17/Data/Core household.dta.dvc,sha256=V3mHw_cBEqnugIWNKaO0JuInEfogtWBbr7qneySOsCw,88
|
|
9
17
|
lsms_library/countries/Afghanistan/2016-17/Data/Core individual.dta.dvc,sha256=U3uCKcKyNEwd_qucQS7LWaj4KZRtnKDGD2tGfcn02Sk,91
|
|
10
18
|
lsms_library/countries/Afghanistan/2016-17/Data/H_01.dta.dvc,sha256=A5iLTGccuRUsgfFfIjArEjMZpZaR1hxAlGEoSNJX05w,78
|
|
@@ -5556,7 +5564,6 @@ lsms_library/countries/Malawi/_/food_prices_quantities_and_expenditures.py,sha25
|
|
|
5556
5564
|
lsms_library/countries/Malawi/_/household_characteristics.py,sha256=pFfhK5OV4O5wlywaQV_UmIXaxrOotS8GGd9Mw-_9jNQ,669
|
|
5557
5565
|
lsms_library/countries/Malawi/_/malawi.py,sha256=cjbPBzYkkcMTtfpmvNtUxQExcP55nvNnZCrXv0ESl3M,3521
|
|
5558
5566
|
lsms_library/countries/Malawi/_/other_features.py,sha256=j68JHI6yG1KU-vWOdvwYGBVLpSXaaL6aalrnypkWLwE,431
|
|
5559
|
-
lsms_library/countries/Malawi/_/spelling.yml,sha256=uPapxsnStSziaiCcWQ7Ydw_em1VzltSPGScPs_X5sQk,82
|
|
5560
5567
|
lsms_library/countries/Malawi/var/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5561
5568
|
lsms_library/countries/Mali/2014-15/Data/EACIACT_p1.dta.dvc,sha256=FIL_MF3qFQXY8gOrs09T4CLb2kSDNQZVFPqbzhSFrng,85
|
|
5562
5569
|
lsms_library/countries/Mali/2014-15/Data/EACIALI_p1.dta.dvc,sha256=aqCk7r7ccWmOjXemzm3PYhVtZoVDy4kdP1MDMNxyS9M,86
|
|
@@ -9394,7 +9401,6 @@ lsms_library/countries/Togo/2018/Documentation/tgo_ehcvm1_qnr_community_excel_va
|
|
|
9394
9401
|
lsms_library/countries/Togo/2018/Documentation/tgo_ehcvm1_qnr_household_excel_vague1.xls.dvc,sha256=sFEfHv5PKy_iC4ez3VKXRFKktNUKOGN6bgJMQcWuLNs,123
|
|
9395
9402
|
lsms_library/countries/Togo/2018/Documentation/tgo_ehcvm1_qnr_household_excel_vague2.xls.dvc,sha256=25-mX1XN7sybAeSNwtVICjwRRDA_SIi6r3MvgSTQBew,124
|
|
9396
9403
|
lsms_library/countries/Togo/2018/_/food_expenditures.py,sha256=SeBh5psVUOxLNkTZh_xj7XJwxOcKsvm9Ufp6JPDHM54,2862
|
|
9397
|
-
lsms_library/countries/Togo/2018/_/food_items.json,sha256=Gi3oWPpAus3esYpsyKDaTf8BdbUMNpfDRnrxo5uLx9E,17158
|
|
9398
9404
|
lsms_library/countries/Togo/2018/_/household_characteristics.py,sha256=dbB0-3rOBtc_Z2iwKf0UoGZhvfBWKr85z9fk0whZuEc,1419
|
|
9399
9405
|
lsms_library/countries/Togo/2018/_/nonfood_expenditures.py,sha256=5oKZ0lORZ2byCZ-BaUgehCicx1tdaabAOdK6dOmglis,1435
|
|
9400
9406
|
lsms_library/countries/Togo/2018/_/notes.org,sha256=TLbHUKht2eRuxQWbDTkmOmLWVS3yM-UusmL_ee1Hhqo,92274
|
|
@@ -9481,12 +9487,12 @@ lsms_library/countries/Uganda/2005-06/Documentation/UNHS.2005-06.CommQuest_final
|
|
|
9481
9487
|
lsms_library/countries/Uganda/2005-06/Documentation/UNHS.2005-06.Household.Questionnaire.FINAL.pdf.dvc,sha256=NuESUFEsMG10Gm0poidecd3lTFVwh4-2j22ayosZtkY,129
|
|
9482
9488
|
lsms_library/countries/Uganda/2005-06/Documentation/UNHS.2005-06.Interviewer.Manual.FINAL.pdf.dvc,sha256=6urVSwN3_57SkfWcieq6NzlTbbVm9gxt0WHg5ywuXXs,123
|
|
9483
9489
|
lsms_library/countries/Uganda/2005-06/_/assets.py,sha256=Lh9BVYNv4DRRgjC6h1S2HK_JMmjLzn8LQYaUpv8yH9w,417
|
|
9484
|
-
lsms_library/countries/Uganda/2005-06/_/data_info.yml,sha256=
|
|
9490
|
+
lsms_library/countries/Uganda/2005-06/_/data_info.yml,sha256=y_k8aZuoQFBn-FVIg6fySwzIAHkpJGi8MeuBMZyFGQk,849
|
|
9485
9491
|
lsms_library/countries/Uganda/2005-06/_/earnings.py,sha256=HVM6pmh6_KuKVN_Cl9MQQ2GhbZxpWsztSoXw9jlE5oE,559
|
|
9486
9492
|
lsms_library/countries/Uganda/2005-06/_/education_expenses.py,sha256=HaBLCZfr8RRlfj9rDEvPg51KOK6uxii8D7M4Lk_LbuU,1466
|
|
9487
9493
|
lsms_library/countries/Uganda/2005-06/_/enterprise_income.py,sha256=dwJvipFBT9O7rjTAqZNfjSTCNp8aKeqEWLGeonzSmfc,932
|
|
9488
9494
|
lsms_library/countries/Uganda/2005-06/_/food_acquired.py,sha256=nRCLTQpMhAYWIn5Cnk1iyDWlbCBpv5O6qkFr_k9g4Is,1298
|
|
9489
|
-
lsms_library/countries/Uganda/2005-06/_/household_characteristics.py,sha256=
|
|
9495
|
+
lsms_library/countries/Uganda/2005-06/_/household_characteristics.py,sha256=bEuqkL3dbJ_fFWvL8Henqkq-FptLv93y2uJcSC0ywzQ,454
|
|
9490
9496
|
lsms_library/countries/Uganda/2005-06/_/housing.py,sha256=v5zSV9dgy_Npn-lDZKbN0FnlR83F_WtuOopVbF_qA48,757
|
|
9491
9497
|
lsms_library/countries/Uganda/2005-06/_/interview_date.py,sha256=xHuabMzWPr2TR0Cwd8XFEyo6tTfd3e838WEBSQ3jolw,709
|
|
9492
9498
|
lsms_library/countries/Uganda/2005-06/_/nonfood_expenditures.py,sha256=QvrsvAIaSiQK2IcLEO7a7ED5YuBVoPQ6obzahpE0oWA,450
|
|
@@ -9595,7 +9601,7 @@ lsms_library/countries/Uganda/2009-10/_/earnings.py,sha256=TLwilh2zE0WrrE8_GDKZY
|
|
|
9595
9601
|
lsms_library/countries/Uganda/2009-10/_/education_expenses.py,sha256=HleH_Tp4gl-ksmGEX7ZCFbhy101RzsXxu1YmaA_N7AQ,1716
|
|
9596
9602
|
lsms_library/countries/Uganda/2009-10/_/enterprise_income.py,sha256=5pDXZ4HrppxoDx-18Kte8UPyicCmK1w9beTB50aluUo,937
|
|
9597
9603
|
lsms_library/countries/Uganda/2009-10/_/food_acquired.py,sha256=B1rGVfoQ0FGM8OTY-3howYeQbJAaC2RrdFL3EZafQU4,1337
|
|
9598
|
-
lsms_library/countries/Uganda/2009-10/_/household_characteristics.py,sha256=
|
|
9604
|
+
lsms_library/countries/Uganda/2009-10/_/household_characteristics.py,sha256=bOsTlvbUINWd5cz0F6x4JGFVmDf5XCQQx7haHOo9lyY,425
|
|
9599
9605
|
lsms_library/countries/Uganda/2009-10/_/housing.py,sha256=AG6KD0kmwCAN452iCdIry4A0FxaTrHlh4zhl0asRqTM,772
|
|
9600
9606
|
lsms_library/countries/Uganda/2009-10/_/interview_date.py,sha256=kgzbaMhlkTONqoioA3DpiS6cKyoQyV2s_y3o-6MLXA0,694
|
|
9601
9607
|
lsms_library/countries/Uganda/2009-10/_/nonfood_expenditures.py,sha256=42otdfhT7uRoH04U8IELf5huldhdqzGNFbrfd8JOzjQ,448
|
|
@@ -9717,7 +9723,7 @@ lsms_library/countries/Uganda/2010-11/_/earnings.py,sha256=TLwilh2zE0WrrE8_GDKZY
|
|
|
9717
9723
|
lsms_library/countries/Uganda/2010-11/_/education_expenses.py,sha256=HleH_Tp4gl-ksmGEX7ZCFbhy101RzsXxu1YmaA_N7AQ,1716
|
|
9718
9724
|
lsms_library/countries/Uganda/2010-11/_/enterprise_income.py,sha256=5pDXZ4HrppxoDx-18Kte8UPyicCmK1w9beTB50aluUo,937
|
|
9719
9725
|
lsms_library/countries/Uganda/2010-11/_/food_acquired.py,sha256=36FXnXsRCfMkeWoApdO6P8wTKNToFdYaaCO0ilvvaYs,1311
|
|
9720
|
-
lsms_library/countries/Uganda/2010-11/_/household_characteristics.py,sha256=
|
|
9726
|
+
lsms_library/countries/Uganda/2010-11/_/household_characteristics.py,sha256=bOsTlvbUINWd5cz0F6x4JGFVmDf5XCQQx7haHOo9lyY,425
|
|
9721
9727
|
lsms_library/countries/Uganda/2010-11/_/housing.py,sha256=XdJpGxrC1j0SnOpPqmZxdCSkIU_5868b9pQfQIsomd4,771
|
|
9722
9728
|
lsms_library/countries/Uganda/2010-11/_/interview_date.py,sha256=YikCb2DAVrC9JpCnoWnBew1dXdn4fP0kFpR2rLhRsvA,784
|
|
9723
9729
|
lsms_library/countries/Uganda/2010-11/_/nonfood_expenditures.py,sha256=42otdfhT7uRoH04U8IELf5huldhdqzGNFbrfd8JOzjQ,448
|
|
@@ -9844,7 +9850,7 @@ lsms_library/countries/Uganda/2011-12/_/data_info.yml,sha256=eSaYacxLm9QvXR0s8Ut
|
|
|
9844
9850
|
lsms_library/countries/Uganda/2011-12/_/earnings.py,sha256=TLwilh2zE0WrrE8_GDKZYNN6DwIHFcQH3VhHwwSRniY,583
|
|
9845
9851
|
lsms_library/countries/Uganda/2011-12/_/enterprise_income.py,sha256=5pDXZ4HrppxoDx-18Kte8UPyicCmK1w9beTB50aluUo,937
|
|
9846
9852
|
lsms_library/countries/Uganda/2011-12/_/food_acquired.py,sha256=4KYYY_vT4oAWdzS4byB3oR-optKSR7hBfnFq1RrDTNo,687
|
|
9847
|
-
lsms_library/countries/Uganda/2011-12/_/household_characteristics.py,sha256=
|
|
9853
|
+
lsms_library/countries/Uganda/2011-12/_/household_characteristics.py,sha256=bOsTlvbUINWd5cz0F6x4JGFVmDf5XCQQx7haHOo9lyY,425
|
|
9848
9854
|
lsms_library/countries/Uganda/2011-12/_/housing.py,sha256=QtnhLIYLJ6lM8qAwCZMajdQASktPa2Pla1lFsqQDcTw,774
|
|
9849
9855
|
lsms_library/countries/Uganda/2011-12/_/interview_date.py,sha256=-h4UvOmZH2N2xapncDAt8ovWfI0m5ziy1jze5Ve-5VE,763
|
|
9850
9856
|
lsms_library/countries/Uganda/2011-12/_/nonfood_expenditures.py,sha256=_soPiL1ZELsF7rz5Q5TUKc3yq0aMuTQOFkWB3eJdU9s,450
|
|
@@ -9979,7 +9985,7 @@ lsms_library/countries/Uganda/2013-14/_/earnings.py,sha256=DsLKK0pBuxGCkL2jfnC2X
|
|
|
9979
9985
|
lsms_library/countries/Uganda/2013-14/_/education_expenses.py,sha256=8_IW2QLZ6274J2kBTUT7igyKveYaooMdGZ1NoeCUKzY,1869
|
|
9980
9986
|
lsms_library/countries/Uganda/2013-14/_/enterprise_income.py,sha256=snR7wTULgwnOyqXC2agndhvi9w4V1F95pnF1w-p5o4k,937
|
|
9981
9987
|
lsms_library/countries/Uganda/2013-14/_/food_acquired.py,sha256=4KYYY_vT4oAWdzS4byB3oR-optKSR7hBfnFq1RrDTNo,687
|
|
9982
|
-
lsms_library/countries/Uganda/2013-14/_/household_characteristics.py,sha256=
|
|
9988
|
+
lsms_library/countries/Uganda/2013-14/_/household_characteristics.py,sha256=bOsTlvbUINWd5cz0F6x4JGFVmDf5XCQQx7haHOo9lyY,425
|
|
9983
9989
|
lsms_library/countries/Uganda/2013-14/_/housing.py,sha256=MH7s15XOUzSdDhYXc423nLkHME13J0WNH3gPqAzP14k,771
|
|
9984
9990
|
lsms_library/countries/Uganda/2013-14/_/interview_date.py,sha256=K7u50Xo0nV4QmLE2Dh3YBw2TZb7DXFC7-tjXKXU2kbw,494
|
|
9985
9991
|
lsms_library/countries/Uganda/2013-14/_/nonfood_expenditures.py,sha256=xHPIY2kxjBKqt1lslhIKg4orYwVD0B16AG3DbAmxd9I,449
|
|
@@ -10116,7 +10122,7 @@ lsms_library/countries/Uganda/2015-16/_/earnings.py,sha256=_zIZ3_UUPSmdnCWbg-KJe
|
|
|
10116
10122
|
lsms_library/countries/Uganda/2015-16/_/education_expenses.py,sha256=mjDvaMnKdWmiZ8dx3Xa_oLY7r01ynqZO68EGrvLog4k,1869
|
|
10117
10123
|
lsms_library/countries/Uganda/2015-16/_/enterprise_income.py,sha256=Xx6CNSclieDQq-CdDNqnxEKr4ZLyfVWr0NpzzR1cLwo,939
|
|
10118
10124
|
lsms_library/countries/Uganda/2015-16/_/food_acquired.py,sha256=QNYRUut4t5s_ApPQJ_iYNVqQMGjLVwMFTM3GrcqCb68,687
|
|
10119
|
-
lsms_library/countries/Uganda/2015-16/_/household_characteristics.py,sha256
|
|
10125
|
+
lsms_library/countries/Uganda/2015-16/_/household_characteristics.py,sha256=zwx8lLkrTcd80sgtUBpNbTgnYNnpVd4Uw1AAiL0NY4I,437
|
|
10120
10126
|
lsms_library/countries/Uganda/2015-16/_/housing.py,sha256=7NnMsH_n9G2L3KwNeomAVaUNajIlSQiaYmlYKusEnT0,771
|
|
10121
10127
|
lsms_library/countries/Uganda/2015-16/_/interview_date.py,sha256=0O-2c2jqI7j5C5ezgMpvDniJRVFHnNHUfoDaEgtsKXc,515
|
|
10122
10128
|
lsms_library/countries/Uganda/2015-16/_/nonfood_expenditures.py,sha256=qgUeCa1Ms_d062zOrG6dpjh7qWVCE2pfSGtt8zKReZ4,737
|
|
@@ -10244,7 +10250,7 @@ lsms_library/countries/Uganda/2018-19/_/earnings.py,sha256=t4idlzC_vsViR8zhhHUsq
|
|
|
10244
10250
|
lsms_library/countries/Uganda/2018-19/_/education_expenses.py,sha256=bxOdUd6YDqBY17VMFK-aKBgaJAtt3iknTXPfO9FEl9E,2182
|
|
10245
10251
|
lsms_library/countries/Uganda/2018-19/_/enterprise_income.py,sha256=3UH9QufFefBD-DiP6nwyJvq3k8hWRXP0xRfYgJ4XEkA,939
|
|
10246
10252
|
lsms_library/countries/Uganda/2018-19/_/food_acquired.py,sha256=xTKNV-iRI7SBZGqIy_0nOAmXLGwrdiGFilejXRq5BfI,875
|
|
10247
|
-
lsms_library/countries/Uganda/2018-19/_/household_characteristics.py,sha256=
|
|
10253
|
+
lsms_library/countries/Uganda/2018-19/_/household_characteristics.py,sha256=E85-f6NyfpxSOlDxeiZyRRWLgGxDwDZHYuIzfKRZN8I,602
|
|
10248
10254
|
lsms_library/countries/Uganda/2018-19/_/housing.py,sha256=7Mi8O8ZVrN5nEum2kGIMx8wd25lkrpWJf16dVC_zLoY,785
|
|
10249
10255
|
lsms_library/countries/Uganda/2018-19/_/interview_date.py,sha256=-CLyemxm6Sn5I1lZdDm0qdZTKT9MPZCkI1bWCSaR6k4,511
|
|
10250
10256
|
lsms_library/countries/Uganda/2018-19/_/nonfood_expenditures.py,sha256=7Xm4h1ryDJcFJ65BjXIIIzIRNkZPCCIa44Qsfp2ZLYk,446
|
|
@@ -10487,19 +10493,18 @@ lsms_library/countries/Uganda/2019-20/_/earnings.py,sha256=Iuj4_O_NC9n7kDFBnzwE5
|
|
|
10487
10493
|
lsms_library/countries/Uganda/2019-20/_/education_expenses.py,sha256=P3NkW0lv-3dbFG2KBXpHqSZm69HR7IqFeO0zhxKxq_Y,2151
|
|
10488
10494
|
lsms_library/countries/Uganda/2019-20/_/enterprise_income.py,sha256=_7ge9NbCdFoBYHr8OhelG3IrhbC2_-y82l1BDJBJWNQ,942
|
|
10489
10495
|
lsms_library/countries/Uganda/2019-20/_/food_acquired.py,sha256=R6U1QwbNC-EXXh2cSK3wMPSPqWZL806Drpxu7WvIfDk,728
|
|
10490
|
-
lsms_library/countries/Uganda/2019-20/_/household_characteristics.py,sha256=
|
|
10496
|
+
lsms_library/countries/Uganda/2019-20/_/household_characteristics.py,sha256=YclKYa9JBI6kiis3_897YClewg2eAQcmhmgLEx0APQ8,460
|
|
10491
10497
|
lsms_library/countries/Uganda/2019-20/_/housing.py,sha256=K-5dXSuj8wNLqHD1cbGBPNw2NFBS_M_cAkXNewXGQHY,774
|
|
10492
10498
|
lsms_library/countries/Uganda/2019-20/_/interview_date.py,sha256=iab1LDvhMALgaFZmR4Zz8FdQwS2dK2P0U0jAfLH9Oug,516
|
|
10493
10499
|
lsms_library/countries/Uganda/2019-20/_/nonfood_expenditures.py,sha256=CRO6B7Fk0riuBjOCXuuhH3ThlN6cqGcmihv56PuA2vM,450
|
|
10494
10500
|
lsms_library/countries/Uganda/2019-20/_/other_features.py,sha256=Tvevvw888c0NKnHB5EJ4AZko-XIzT6SbGLdkUvB6wT8,1012
|
|
10495
10501
|
lsms_library/countries/Uganda/2019-20/_/plots.py,sha256=mbqRPKeK5Z-phCZy1zIxbsPXXZiFAvu7Dq-oMtsrPTM,880
|
|
10496
10502
|
lsms_library/countries/Uganda/2019-20/_/shocks.py,sha256=L5nYYT82m_ACGGSaUtnpGmm7Bn7q-rdqDGvGEc0jcYA,2627
|
|
10497
|
-
lsms_library/countries/Uganda/_/Makefile,sha256=
|
|
10503
|
+
lsms_library/countries/Uganda/_/Makefile,sha256=9fuxU6l7SCjkL7tPNBo58u0Y42H1RKkfE6XDrWUqf2E,3649
|
|
10498
10504
|
lsms_library/countries/Uganda/_/assets.py,sha256=jfwV44k96WZ7bANodoZ8BAMO-baQy1FKuCDRKPoqFwA,665
|
|
10499
10505
|
lsms_library/countries/Uganda/_/categorical_mapping.org,sha256=XD4QBTKwdIEjScBEElpQ0BijfscmbnXfLS8dLQtDpR0,11822
|
|
10500
|
-
lsms_library/countries/Uganda/_/compare_unit_labels.py,sha256=_8R3C0EUAjUZtsutmWayGXjEJs7UzOrNfsD1d5TrR_E,276
|
|
10501
10506
|
lsms_library/countries/Uganda/_/conversion_to_kgs.json,sha256=K7uEX1YERdMTgVCpZ_9Fol2xSbRd90Obf9WuPocJJ98,2650
|
|
10502
|
-
lsms_library/countries/Uganda/_/data_scheme.yml,sha256=
|
|
10507
|
+
lsms_library/countries/Uganda/_/data_scheme.yml,sha256=98XKJaHdrPQj2xwfgkZ_P-uDPATWVByayFWuoj1jQnQ,450
|
|
10503
10508
|
lsms_library/countries/Uganda/_/earnings.py,sha256=ela9bgSbY1S-vvOnQM48WV0XOjCl6d5FNlpqmzAlINo,814
|
|
10504
10509
|
lsms_library/countries/Uganda/_/enterprise_income.py,sha256=MLx1mxjPym_r1KTNudDxRVY0t6Kezn4F4CwqJV1Li7M,851
|
|
10505
10510
|
lsms_library/countries/Uganda/_/fct_addition.py,sha256=d_TEoxFQ4yjd6D1ghMOT507sCc8T7RvOqKjVKl-RGHM,2679
|
|
@@ -10508,7 +10513,7 @@ lsms_library/countries/Uganda/_/fct_uganda.csv,sha256=Gc1M3vwIeo2DVEoHsVxanBYyP6
|
|
|
10508
10513
|
lsms_library/countries/Uganda/_/food_acquired.py,sha256=OqIpjJZV3DDwu8352FslIiwsz3-zBnrnmeCNCvG7RO0,1017
|
|
10509
10514
|
lsms_library/countries/Uganda/_/food_items.org,sha256=utpfHLa6oDsF52dFWI7z3-PQyZPgxb2-7F2bILqW-24,16896
|
|
10510
10515
|
lsms_library/countries/Uganda/_/food_prices_quantities_and_expenditures.py,sha256=ixtX8WlGlGUbKNCqtR8TPYEm6NhyapMxbw-g6_fwmyY,1493
|
|
10511
|
-
lsms_library/countries/Uganda/_/household_characteristics.py,sha256=
|
|
10516
|
+
lsms_library/countries/Uganda/_/household_characteristics.py,sha256=QyD2-Ma_m5VmVKhjlJ5zdNhsXaSA0MVXc2vcDN1Eg_A,877
|
|
10512
10517
|
lsms_library/countries/Uganda/_/housing.py,sha256=YY9ofu9YTTyz29E4UbpQPB32m3KiQFkc9Qomq73BbNg,802
|
|
10513
10518
|
lsms_library/countries/Uganda/_/income.py,sha256=1E0vimt_5Yyxf2KH7AyUYiUdwA8Hyeae_bzyaE0yq7w,584
|
|
10514
10519
|
lsms_library/countries/Uganda/_/interview_date.py,sha256=gYgueLpNwuI8a2EOOpeOzKTtH3LAN7YkaKz5H7hDvxo,825
|
|
@@ -10533,13 +10538,14 @@ lsms_library/countries/Uganda/_/unitvalues.py,sha256=-pY-4OYLJQ-SrCv6xB1FRLevO7y
|
|
|
10533
10538
|
lsms_library/countries/Uganda/_/updated_ids.json,sha256=pgkwK6gcYKufkWt0GS9G39WPF9w7_rxW_bIO-lSwJW4,462159
|
|
10534
10539
|
lsms_library/countries/Uganda/var/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10535
10540
|
lsms_library/countries/Uganda/var/README,sha256=pOIlG6aObxWzUedoWjt9Z5-FG28UXrtws6ktD6GhWn0,116
|
|
10536
|
-
lsms_library/country.py,sha256=
|
|
10541
|
+
lsms_library/country.py,sha256=G7QksqvSWET378pxcOCQ8hQ2dflf9AAaSGSQ1nmHobE,33835
|
|
10537
10542
|
lsms_library/data_info.yml,sha256=Y5GaP52AzJsIvXtioSJP4R63opZcqhjQFsGLjad-2U4,478
|
|
10538
10543
|
lsms_library/demands.py,sha256=UCnUTjoE6FHt32XvRm4hZdIBryOj_YQU4im0-Wu9y7U,749
|
|
10544
|
+
lsms_library/dvc_permissions.py,sha256=Igs04aJAmHbTiKmitNGh4uMI3mFFctUEebF99IMX3VY,2226
|
|
10539
10545
|
lsms_library/harmony.py,sha256=hEGLJUnWBXdyGeAAr7qgCFZ0Q-KsiqjBxHrtYbZ8Ngs,2742
|
|
10540
|
-
lsms_library/local_tools.py,sha256=
|
|
10546
|
+
lsms_library/local_tools.py,sha256=UJvressIwYCBdmq8TJ3fHUowUKzlmiHjlGTTRY-S2Kk,40734
|
|
10541
10547
|
lsms_library/transformations.py,sha256=uBSGfUAjWMrqSOmxdYYzi9csf8WvjaGCC7lzflJObtU,3661
|
|
10542
|
-
lsms_library-0.2.
|
|
10543
|
-
lsms_library-0.2.
|
|
10544
|
-
lsms_library-0.2.
|
|
10545
|
-
lsms_library-0.2.
|
|
10548
|
+
lsms_library-0.2.9.dev0.dist-info/LICENSE.txt,sha256=qImFXcRJwxIHS80FE7uOx6FhmLY8apd4Y12aR54QU7w,282
|
|
10549
|
+
lsms_library-0.2.9.dev0.dist-info/METADATA,sha256=1tt2IG9-RzVPRBr7V0eQSP6V-2NOtjWZlh_EBeBZ434,5219
|
|
10550
|
+
lsms_library-0.2.9.dev0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
10551
|
+
lsms_library-0.2.9.dev0.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"Riz local longs grains": "Riz local longs grains", "Riz local (Kovi\u00c3\u00a9)": "Riz local (Kovi\u00e9)", "Riz import\u00c3\u00a9 longs grains": "Riz import\u00e9 longs grains", "Riz import\u00c3\u00a9 bris\u00c3\u00a9": "Riz import\u00e9 bris\u00e9", "Ma\u00c3\u00afs en \u00c3\u00a9pis": "Ma\u00efs en \u00e9pis", "Ma\u00c3\u00afs en grains": "Ma\u00efs en grains", "Mil": "Mil", "Sorgho": "Sorgho", "Bl\u00c3\u00a9": "Bl\u00e9", "Fonio": "Fonio", "11": "Other Grains", "Farine de ma\u00c3\u00afs": "Farine de ma\u00efs", "Farine de mil": "Farine de mil", "Farine de bl\u00c3\u00a9 local ou import\u00c3\u00a9": "Farine de bl\u00e9 local ou import\u00e9", "15": "Other cereal flours", "P\u00c3\u00a2tes alimentaires": "P\u00e2tes alimentaires", "Pain moderne": "Pain moderne", "Pain traditionnel": "Pain traditionnel", "Croissants": "Croissants", "Biscuits": "Biscuits", "G\u00c3\u00a2teaux": "G\u00e2teaux", "Beignets, galettes": "Beignets, galettes", "Viande de b\u00c5\u0093uf": "Viande de b\u0153uf", "Viande de chameau": "Viande de chameau", "Viande de mouton": "Viande de mouton", "Viande de ch\u00c3\u00a8vre": "Viande de ch\u00e8vre", "Abats et tripes (foie, rognon, etc.)": "Abats et tripes (foie, rognon, etc.)", "Viande de porc": "Viande de porc", "Poulet sur pied": "Poulet sur pied", "Viande de poulet": "Viande de poulet", "Viande d'autres volailles domestiques": "Viande d'autres volailles domestiques", "Charcuterie (jambon, saucisson), conserves de viandes": "Charcuterie (jambon, saucisson), conserves de viandes", "Gibiers": "Gibiers", "Autres viandes n.d.a": "Autres viandes n.d.a", "Chinchard frais": "Chinchard frais", "Carpe fra\u00c3\u00aeche": "Carpe fraiche", "Dorade fraiche": "Dorade fraiche", "Maquereau frais": "Maquereau frais", "Chinchard fum\u00c3\u00a9": "Chinchard fum\u00e9", "Anchois fum\u00c3\u00a9": "Anchois fum\u00e9", "Poisson s\u00c3\u00a9ch\u00c3\u00a9": "Poisson s\u00e9ch\u00e9", "Crabes, crevettes et autres fruits de mer": "Crabes, crevettes et autres fruits de mer", "Conserves de poisson": "Conserves de poisson", "Lait frais": "Lait frais", "Lait caill\u00c3\u00a9, yaourt": "Lait caill\u00e9, yaourt", "Lait concentr\u00c3\u00a9 sucr\u00c3\u00a9": "Lait concentr\u00e9 sucr\u00e9", "Lait concentr\u00c3\u00a9 non-sucr\u00c3\u00a9": "Lait concentr\u00e9 non-sucr\u00e9", "Lait en poudre": "Lait en poudre", "Fromage local": "Fromage local", "Lait et farines pour b\u00c3\u00a9b\u00c3\u00a9": "Lait et farines pour b\u00e9b\u00e9", "Autres produits laitiers": "Autres produits laitiers", "Oeufs": "Oeufs", "Beurre": "Beurre", "Beurre de karit\u00c3\u00a9": "Beurre de karit\u00e9", "Huile de palme rouge": "Huile de palme rouge", "Huile d'arachide": "Huile d'arachide", "Huile de coton": "Huile de coton", "Huile de palme raffin\u00c3\u00a9e": "Huile de palme raffin\u00e9e", "Autres huiles n.d.a. (ma\u00c3\u00afs, soja, huile palmiste, etc.)": "Autres huiles n.d.a. (ma\u00efs, soja, huile palmiste, etc.)", "Mangue": "Mangue", "Ananas": "Ananas", "Orange": "Orange", "Banane douce": "Banane douce", "Citrons": "Citrons", "Autres agrumes": "Autres agrumes", "Avocats": "Avocats", "Past\u00c3\u00a8que, Melon": "Past\u00e8que, Melon", "Dattes": "Dattes", "Noix de coco": "Noix de coco", "Canne \u00c3\u00a0 sucre": "Canne \u00e0 sucre", "Autres fruits (pommes, raisin, etc.)": "Autres fruits (pommes, raisin, etc.)", "Salade (laitue)": "Salade (laitue)", "Choux": "Choux", "Carotte": "Carotte", "Haricot vert": "Haricot vert", "Concombre": "Concombre", "Aubergine, Courge/Courgette": "Aubergine, Courge/Courgette", "Poivron frais": "Poivron frais", "Tomate fra\u00c3\u00aeche": "Tomate fraiche", "Tomate s\u00c3\u00a9ch\u00c3\u00a9e": "Tomate s\u00e9ch\u00e9e", "Gombo frais": "Gombo frais", "Gombo sec": "Gombo sec", "Oignon frais": "Oignon frais", "Ail": "Ail", "Feuilles d'oseille (dakoumou, bissap/floer\u00c3\u00a8)": "Feuilles d'oseille (dakoumou, bissap/floer\u00e8)", "Feuilles de baobab": "Feuilles de baobab", "Gboma": "Gboma", "Ad\u00c3\u00a9m\u00c3\u00a8 (Feuilles crin-crin)": "Ad\u00e9m\u00e8 (Feuilles crin-crin)", "Moringa, feuilles de manioc, feuilles de taro et autres feuilles": "Moringa, feuilles de manioc, feuilles de taro et autres feuilles", "Autre l\u00c3\u00a9gumes frais n.d.a": "Autre l\u00e9gumes frais n.d.a", "Concentr\u00c3\u00a9 de tomate": "Concentr\u00e9 de tomate", "Petits pois": "Petits pois", "Petit pois secs": "Petit pois secs", "Autres l\u00c3\u00a9gumes secs n.d.a": "Autres l\u00e9gumes secs n.d.a", "Ni\u00c3\u00a9b\u00c3\u00a9/Haricots secs": "Ni\u00e9b\u00e9/Haricots secs", "Arachides fra\u00c3\u00aeches en coques": "Arachides fraiches en coques", "Arachides s\u00c3\u00a9ch\u00c3\u00a9es en coques": "Arachides s\u00e9ch\u00e9es en coques", "Arachides d\u00c3\u00a9cortiqu\u00c3\u00a9es ou pil\u00c3\u00a9es": "Arachides d\u00e9cortiqu\u00e9es ou pil\u00e9es", "Arachide grill\u00c3\u00a9e": "Arachide grill\u00e9e", "P\u00c3\u00a2te d'arachide": "P\u00e2te d'arachide", "S\u00c3\u00a9same": "S\u00e9same", "Noix de cajou": "Noix de cajou", "Noix de karit\u00c3\u00a9": "Noix de karit\u00e9", "Manioc": "Manioc", "Igname": "Igname", "Plantain": "Plantain", "Pomme de terre": "Pomme de terre", "Taro, macabo": "Taro, macabo", "Patate douce": "Patate douce", "Autres tubercules n.d.a": "Autres tubercules n.d.a", "Farines de manioc": "Farines de manioc", "Gari, tapioca": "Gari, tapioca", "Atti\u00c3\u00a9ke": "Atti\u00e9ke", "Sucre (poudre ou morceaux)": "Sucre (poudre ou morceaux)", "Miel": "Miel", "Chocolat \u00c3\u00a0 croquer, p\u00c3\u00a2te \u00c3\u00a0 tartiner": "Chocolat \u00e0 croquer, p\u00e2te \u00e0 tartiner", "Caramel, bonbons, confiseries, etc": "Caramel, bonbons, confiseries, etc", "Sel": "Sel", "Piment": "Piment", "Gingembre": "Gingembre", "Cube alimentaire (Maggi, Jumbo, )": "Cube alimentaire (Maggi, Jumbo, )", "Ar\u00c3\u00b4me (Maggi, Jumbo, etc.)": "Ar\u00f4me (Maggi, Jumbo, etc.)", "Afintin (Moutarde africaine)": "Afintin (Moutarde africaine)", "Mayonnaise": "Mayonnaise", "Vinaigre /moutarde": "Vinaigre /moutarde", "Autres condiments (poivre etc.)": "Autres condiments (poivre etc.)", "Noix de cola": "Noix de cola", "Autres produits alimentaires": "Autres produits alimentaires", "Caf\u00c3\u00a9": "Caf\u00e9", "Th\u00c3\u00a9": "Th\u00e9", "Chocolat en poudre": "Chocolat en poudre", "Autres tisanes et infusions n.d.a. (quinquelibat, citronelle, etc.)": "Autres tisanes et infusions n.d.a. (quinquelibat, citronelle, etc.)", "Jus de fruits (orange, bissap, gingembre, jus de cajou,etc.)": "Jus de fruits (orange, bissap, gingembre, jus de cajou,etc.)", "Eau min\u00c3\u00a9rale/ filtr\u00c3\u00a9e": "Eau min\u00e9rale/ filtr\u00e9e", "Boissons gazeuses (coca, etc.)": "Boissons gazeuses (coca, etc.)", "Jus en poudre": "Jus en poudre", "Bi\u00c3\u00a8res et vins traditionnels (dolo, vin de palme, vin de raphia, etc.)": "Bi\u00e8res et vins traditionnels (dolo, vin de palme, vin de raphia, etc.)", "Bi\u00c3\u00a8res industrielles": "Bi\u00e8res industrielles", "": "Missing", "201": "Cigarettes, Tabac", "202": "P\u00e9trole lampant", "203": "Charbon de bois/Charbon min\u00e9ral", "204": "Bois de chauffe achet\u00e9", "205": "Bois de chauffe ramass\u00e9 (estimer la valeur)", "206": "Bougies", "207": "Allumettes", "208": "Carburant pour v\u00e9hicule", "209": "Carburant pour motocyclette", "210": "Transport urbain en taxi", "211": "Transport urbain en bus", "212": "Transport urbain / rural en moto-taxi", "213": "Transport urbain en train", "214": "Transport urbain / rural par voie fluviale", "215": "Transport urbain / rural par traction animale", "216": "Journaux", "217": "Frais de mouture des c\u00e9r\u00e9ales", "301": "Whisky et autres liqueurs", "302": "Vins modernes", "303": "Gaz domestique", "304": "Carburant pour groupe electrog\u00e8ne \u00e0 usage domestique", "305": "Piles \u00e9lectriques,", "306": "Savon de m\u00e9nage, lessive en poudre, d\u00e9tergents (eau de javel, etc.)", "307": "Insecticide, tortillon anti-moustique", "308": "Salaire du personnel de maison (gardien, boy, chauffeur, cuisinier, etc.)", "309": "Frais de blanchiment des v\u00eatements, linge, etc. (Pressing)", "310": "Frais de ramassage des ordures m\u00e9nag\u00e8res", "311": "Lavage de v\u00e9hicules", "312": "Frais de parking", "313": "Frais de communication t\u00e9l\u00e9phonique dans une cabine / t\u00e9l\u00e9centre", "314": "Billet de lotterie nationale, billet de PMU", "315": "Revues, journal ou magazine mensuel etc.", "316": "Frais de coiffure homme et femme (salon, tressage, m\u00e8ches, coupe, etc.), manucure, p\u00e9dicure", "317": "Savon de toilette, Shampoing", "318": "P\u00e2te dentifrice", "319": "Papier toilette", "320": "Serviettes hygi\u00e9niques, couches jetables pour b\u00e9b\u00e9, etc.", "321": "Lait, lotion de toilette corporelle (glyc\u00e9rine, vaseline, etc.)", "322": "Autres produits de toilettes (rasoir, coton, cr\u00e8me / mousse \u00e0 raser, etc.)", "401": "Frais d'entretien et de r\u00e9paration de chaussures: cirage, ressemelage, etc.", "402": "Ampoules \u00e9lectriques pour le logement", "403": "Lubrifiants (huile moteur; huile de frein; liquide batterie (acide); graisses; autres lubrifiants n.d.a.)", "404": "Services de r\u00e9paration et d'entretien (vidange, graissage, etc.) de moyens de transport personnel (voitures, motos, bicyclette, etc.)", "405": "Transport inter-localit\u00e9 par voitures", "406": "Transport inter-locait\u00e9 \u00e0 traction animale", "407": "Transport interlocalit\u00e9 par eau (bateau, pirogue, pinasse)", "408": "Frais de timbre postaux, d'exp\u00e9dition de mandat, etc", "409": "Frais d'envoi de fax", "410": "Produits pour le jardinage (plantes et fleurs ornementales), pas pour l'agriculture", "411": "Aliments, frais d'entretien, frais de v\u00e9t\u00e9rinaire des animaux de compagnie (chiens, chats, etc.)", "412": "Droit d'entr\u00e9e (achat d'un ticket) \u00e0 des manifestations sportives.", "413": "Droit d'entr\u00e9e (achat d'un ticket) pour cin\u00e9ma, concert, pi\u00e8ce de th\u00e9\u00e2tre, mus\u00e9e, expositions, etc", "414": "Autres services r\u00e9cr\u00e9atifs: services de photographe (d\u00e9veloppement, tirage), photo d'identit\u00e9, etc.", "415": "Parfums", "416": "Brosse \u00e0 dents", "417": "Contraceptifs", "418": "Frais de photocopies de document", "501": "Tissus d'habillement: tissus pagne, tissu pagne du tisserand, tissu synth\u00e9tique, etc.", "502": "V\u00eatements femmes (15 ans et plus): robe, jupe, pantalon, ensemble, etc.", "503": "Sous-v\u00eatements femme (15 ans et plus): slip, jupon, tee shirt,soutien gorge, collant, etc.", "504": "V\u00eatements enfants (0-14 ans): layette pour b\u00e9b\u00e9, chemise, pantalon gar\u00e7on, robe fillette, slip enfant, blouses, etc. (Pas inclure les uniformes scolaires)", "505": "V\u00eatements hommes (15 ans et plus): chemise, pantalon, veste, ensemble, v\u00eatements de travail, etc.", "506": "Sous-v\u00eatements homme (15 ans et plus): slip, chaussettes, tee shirt et maillot de corps, etc.", "507": "Frais de confection et de r\u00e9paration de v\u00eatements homme: ensemble, pantalon, chemise, r\u00e9paration, location v\u00eatement, etc.", "508": "Frais de confection et de r\u00e9paration de v\u00eatements femme: robe, pantalon, jupe, ensemble, r\u00e9paration, location, etc.", "509": "Frais de confection et de r\u00e9paration de v\u00eatements enfants", "510": "Chaussures hommes", "511": "Chaussures femmes", "512": "Chaussures enfants", "601": "Mat\u00e9riel pour l'entretien et les petites r\u00e9parations du logement (remplacement d'une t\u00f4le, d'une vitre, d'une ampoule, etc.)", "602": "Main-d'oeuvre et services d'entretien et de r\u00e9paration courante du logement (vidange fosse septique,main d'\u0153uvre pour l'entretien du logement, etc.)", "603": "Mat\u00e9riaux de ma\u00e7onnerie pour la construction ou les grosses r\u00e9parations de logement: ciment, briques, fer \u00e0 b\u00e9ton, sable, gravier, parpaings, etc.", "604": "Autres mat\u00e9riaux pour la construction ou les grosses r\u00e9parations de logement: t\u00f4les, bois de charpente, planches, lattes, contre-plaqu\u00e9s, mat\u00e9riaux d'\u00e9lectricit\u00e9, mat\u00e9riaux de plomberie, mat\u00e9riaux de peinture, carreaux, tapis et rev\u00eatement du sol, etc.", "605": "Main-d'oeuvre pour la construction et les grosses r\u00e9paration de logement (ma\u00e7onnerie, toiture et charpente, \u00e9lectricit\u00e9, plomberie, menuiserie, peinture et rev\u00eatement du sol), etc.", "606": "Frais d'acquisition d'un terrain ou d'un logement", "607": "Frais d'\u00e9tudes et d'architecte", "608": "Frais d'abonnement au r\u00e9seau de distribution d'eau", "609": "Frais d'abonnement au r\u00e9seau de distribution d'\u00e9lectricit\u00e9", "610": "Frais de connexion au r\u00e9seau de distribution d'eau", "611": "Frais de connexion au r\u00e9seau de distribution d'\u00e9lectricit\u00e9", "612": "Meubles de salon et de salle \u00e0 manger (fauteuils, table, chaises, armoires, etc.)", "613": "Lit, matelas, armoire et autres meubles de chambre \u00e0 coucher", "614": "R\u00e9paration de meubles (fauteuils, chaises, lits, armoires, etc.)", "615": "Linge de maison et articles associ\u00e9s (serviettes de bain, drap, couverture, couvre-lit, oreillers, moustiquaire, nattes, tapis, rideaux, \u00e9ventail, etc.)", "616": "Appareils \u00e9lectro-m\u00e9nagers: frigo, climatiseurs, r\u00e9chaud, four, cuisini\u00e8re, lave-linge, chauffe-eau, fer \u00e0 repasser, etc.", "617": "R\u00e9paration d'appareils \u00e9lectro-m\u00e9nagers (fer \u00e0 repasser, frigo, cuisini\u00e8re, four, r\u00e9chaud, climatiseur, ventilateur, chauffe-eau, etc.)", "618": "Vaisselle: assiettes, couteau, fourchette, cuill\u00e8re, gobelets, verres, etc.", "619": "Ustensiles de cuisine: casserole, marmite, tamis local, r\u00e9paration d'ustensiles de cuisine, etc.", "620": "Autres ustensiles de m\u00e9nage: seau, bouilloire, biberon, poubelle, tasses, caf\u00e9ti\u00e8re non \u00e9lectrique, th\u00e9i\u00e8re, calebasse, louche, jarre, canari, mortier, pilon, etc.", "621": "Outillage de maison: outils de bricolage (marteau, tournevis, etc.); outil de jardinage (pelle, r\u00e2teau, brouette, etc.);", "622": "Lampes \u00e9lectriques, lampes temp\u00eates, torches", "623": "Achat d'une voiture pour usage personnel", "624": "Achat d'un motocycle (v\u00e9lo, moto) pour usage personnel", "625": "Pi\u00e8ces d\u00e9tach\u00e9es de moyens de transport individuel: pneu, batterie, bougie, carburateur, etc.", "626": "Frais d'assurance d'un moyen de transport individuel (auto, moto, etc.), assurance de voyage", "627": "Vignette automobile/ moto", "628": "Location d'un v\u00e9hicule pour usage personnel: voiture, moto/v\u00e9lo, etc.", "629": "Transport inter-urbain en train dans le pays et \u00e0 l'\u00e9tranger", "630": "Transport en avion dans le pays et \u00e0 l'\u00e9tranger", "631": "Frais de d\u00e9m\u00e9nagement", "632": "Frais de visa, taxes d'a\u00e9roport", "633": "Achat d'un t\u00e9l\u00e9phone portable", "634": "Appareils de musique et d'images: radio, radio-cassette, cha\u00eene de musique, TV, lecteur CD/DVD, MP3, MP4, cam\u00e9ra, camescope, etc.", "635": "Ordinateur, imprimante, tablette,machine \u00e0 \u00e9crire, etc.", "636": "R\u00e9paration d'appareils \u00e9lectroniques: radio, radio-cassettes, TV, camera, lecteur CD/DVD, ordinateur, etc.", "637": "Petit mat\u00e9riel \u00e9lectronique \u00e0 usage personnel: cassettes, CD/DVD, cl\u00e9 USB, encre pour imprimante, papier d'impression photos, pellicule photos, etc.", "638": "Articles de sport et de d\u00e9tente: ballon, jeu ludo, poids (p\u00e9tanque), jeu de carte, jouets pour enfants, jeux vid\u00e9o, petits instruments de musique, etc.", "639": "Livres non scolaires, bande dessin\u00e9e", "640": "Papier rame, enveloppes, articles de dessin (pinceaux, papier, peinture etc.), etc.", "641": "Frais de p\u00e9l\u00e9rinage", "642": "Formation professionnelle (en particulier directement aupr\u00e8s des ateliers, ma\u00eetres, etc.)", "643": "Frais de cours particuliers pour adultes (alphab\u00e9tisation) et personnes non scolaris\u00e9es", "644": "Services d'h\u00e9bergement: chambres d'h\u00f4tel, etc.", "645": "Montres, r\u00e9veils", "646": "Boucle d'oreilles, colliers, bracelets, bijoux, autres articles de bijouterie et joaillerie n.d.a.", "647": "Autres effets personnels: valise, sac de voyage, sac \u00e0 main, perruques, chapeau, lunettes solaires, parapluies, parasol, canne, porte-monnaie, portefeuille, articles pour fumeurs (cendrier etc.); articles pour b\u00e9b\u00e9 (poussette, si\u00e8ges), articles fun\u00e9raires, etc.", "648": "Frais d'assurance d'une maison ou tout autre bien qu'un moyen de transport", "649": "Taxes d'habitation (immeubles b\u00e2ties et non b\u00e2ties), taxes de voiries", "650": "Frais d'assurance vie", "651": "Frais d'assurance maladie", "652": "Frais de l\u00e9galisation (confection) de documents administratifs (actes d'Etat-civil, dipl\u00f4mes, etc.)", "653": "Autres services: annonce \u00e0 la radio, dans un journal/\u00e0 la t\u00e9l\u00e9vision, pompe fun\u00e8bre, etc."}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
from cfe.df_utils import df_to_orgtbl
|
|
2
|
-
import pandas as pd
|
|
3
|
-
|
|
4
|
-
d = {}
|
|
5
|
-
for t in ['2005-06','2009-10','2010-11','2011-12','2013-14','2015-16','2018-19','2019-20']:
|
|
6
|
-
d[t] = pd.read_csv('../'+t+'/_/unitlabels.csv',index_col=0).squeeze()
|
|
7
|
-
|
|
8
|
-
d = pd.DataFrame(d)
|
|
9
|
-
print(df_to_orgtbl(d))
|
|
File without changes
|