Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions bars/bars.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
data_bars = init_data_bars()
data_revenus = init_data_revenus()
barNumber = init_barNumber()
departements = json.load(open('./bars/data/departements-version-simplifiee.geojson'))
departements = json.load(
open('./bars/data/departements-version-simplifiee.geojson'))
data_bars_revenus = init_data_bars_revenus(data_bars, data_revenus)


Expand All @@ -19,7 +20,8 @@ def __init__(self, application=None):

nbBar_revenu_byCp = init_nbBar_revenu_byCp(data_bars_revenus)
data_bars_revenus_unique = data_bars_revenus.iloc[:, :6].drop_duplicates().merge(
nbBar_revenu_byCp[['Postal code', 'Revenu fiscal de référence par foyer fiscal']], on=['Postal code'],
nbBar_revenu_byCp[['Postal code', 'Revenu fiscal de référence par foyer fiscal']], on=[
'Postal code'],
how='inner')
fig_dep_1 = px.choropleth_mapbox(barNumber, geojson=departements,
locations='Département', featureidkey='properties.code', # join keys
Expand Down Expand Up @@ -69,8 +71,10 @@ def __init__(self, application=None):
fig_conc_revnFisc.update_layout(mapbox_style="carto-darkmatter")
fig_conc_revnFisc.update_layout(margin=dict(b=0, t=0, l=0, r=0))

code_postaux_geo = json.load(open('./bars/data/contours-codes-postaux.geojson'))
tmp = nbBar_revenu_byCp.drop('Revenu fiscal de référence par foyer fiscal', axis=1)
code_postaux_geo = json.load(
open('./bars/data/contours-codes-postaux.geojson'))
tmp = nbBar_revenu_byCp.drop(
'Revenu fiscal de référence par foyer fiscal', axis=1)
tmp['Revenu par foyer fiscal'] = nbBar_revenu_byCp['Revenu fiscal de référence par foyer fiscal'].round(
decimals=1)

Expand All @@ -84,7 +88,8 @@ def __init__(self, application=None):
opacity=0.75,
labels={'prix': 'Nombre de bars'}
)
fig_CP.update_layout(mapbox_style="carto-darkmatter", margin={"r": 0, "t": 0, "l": 0, "b": 0})
fig_CP.update_layout(mapbox_style="carto-darkmatter",
margin={"r": 0, "t": 0, "l": 0, "b": 0})

mean_by_bar_number = init_mean_by_bar_number(nbBar_revenu_byCp)
fig_blue_1 = px.histogram(data_frame=mean_by_bar_number, x='Revenu fiscal de référence par foyer fiscal',
Expand Down Expand Up @@ -116,7 +121,8 @@ def __init__(self, application=None):
"""),
html.Div(
[
dcc.Graph(id='fig_concentration', figure=fig_concentration1),
dcc.Graph(id='fig_concentration',
figure=fig_concentration1),
dcc.RadioItems(
id='radio_concentration',
options=[{'label': 'Concentration des bars en France', 'value': 'graph1'},
Expand Down Expand Up @@ -247,7 +253,8 @@ def update_graph_blue(self, value):
return fig_blue_7
else:
fig_blue_6 = px.line(x=np.arange(len(nbBar_revenu_byCp)),
y=np.sort(nbBar_revenu_byCp['Revenu fiscal de référence par foyer fiscal']),
y=np.sort(
nbBar_revenu_byCp['Revenu fiscal de référence par foyer fiscal']),
log_y=True,
title='Revenu fiscal de référence des %d bars' % len(nbBar_revenu_byCp), labels={
"y": "Revenu fiscal de référence par foyer fiscal"})
Expand Down
58 changes: 37 additions & 21 deletions bars/get_data_bars.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@


def init_postal_code():
postalCodes = pd.read_csv('https://bano.openstreetmap.fr/data/full.csv.gz', compression='gzip',
usecols=['01400', '46.147624', '4.923727'],
dtype={'01400': str, '46.147624': np.float64, '4.923727': np.float64})
postalCodes = pd.read_csv('./bars/data/cord_departement.csv', sep=",",
usecols=['01400', '46.15', '4.92'],
dtype={'01400': str, '46.15': np.float64, '4.92': np.float64})
postalCodes.columns = ['Postal code', 'Latitude', 'Longitude']
postalCodes['Latitude'] = postalCodes['Latitude'].apply(lambda lat: round(lat, 3))
postalCodes['Longitude'] = postalCodes['Longitude'].apply(lambda long: round(long, 3))
return postalCodes


def init_data_revenus():
data_revenus = pd.read_excel('./bars/data/revenus_communes_2019.xlsx') # header=3
data_revenus.drop(data_revenus.columns[[0, 3, 7, 8, 9, 10, 11, 12, 13]], axis=1, inplace=True)
data_revenus.drop(data_revenus.tail(2).index, inplace=True) # drop last 2 rows
data_revenus = pd.read_excel(
'./bars/data/revenus_communes_2019.xlsx') # header=3
data_revenus.drop(
data_revenus.columns[[0, 3, 7, 8, 9, 10, 11, 12, 13]], axis=1, inplace=True)
data_revenus.drop(data_revenus.tail(2).index,
inplace=True) # drop last 2 rows
data_revenus.rename(columns=lambda n: data_revenus[n][2], inplace=True)
data_revenus.drop(index=[0, 1, 2], inplace=True)
data_revenus = data_revenus[
Expand All @@ -26,7 +27,8 @@ def init_data_revenus():

def init_code_commune():
code_commune = pd.read_csv('./bars/data/code-commune.csv', sep=';')
code_commune.drop(['Nom_commune', 'Ligne_5', 'Libellé_d_acheminement', 'coordonnees_gps'], axis=1, inplace=True)
code_commune.drop(['Nom_commune', 'Ligne_5', 'Libellé_d_acheminement',
'coordonnees_gps'], axis=1, inplace=True)
code_commune.columns = ['Code commune', 'Postal code']
code_commune['Postal code'] = code_commune['Postal code'].astype(str)
code_commune['Postal code'] = code_commune['Postal code'].apply(
Expand Down Expand Up @@ -56,14 +58,18 @@ def init_data_bars():
data_bars.isnull().sum().sum()
data_bars['Latitude'] = data_bars['Latitude'].astype(float)
data_bars['Longitude'] = data_bars['Longitude'].astype(float)
data_bars['Latitude'] = data_bars['Latitude'].apply(lambda lat: round(lat, 3))
data_bars['Longitude'] = data_bars['Longitude'].apply(lambda long: round(long, 3))
data_bars['Latitude'] = data_bars['Latitude'].apply(
lambda lat: round(lat, 2))
data_bars['Longitude'] = data_bars['Longitude'].apply(
lambda long: round(long, 2))

postalCodes = init_postal_code()
data_bars = pd.merge(data_bars, postalCodes, how='left', on=['Latitude', 'Longitude']).drop_duplicates()
data_bars = pd.merge(data_bars, postalCodes, how='left', on=[
'Latitude', 'Longitude']).drop_duplicates()
data_bars["Postal code"] = data_bars["Postal code"].str.strip()
data_bars.dropna(subset=['Postal code'], inplace=True)
data_bars['Département'] = data_bars['Postal code'].apply(lambda code: str(code)[0:2])
data_bars['Département'] = data_bars['Postal code'].apply(
lambda code: str(code)[0:2])
data_bars.drop_duplicates(subset=['Geo Point'], inplace=True)

return data_bars
Expand All @@ -77,7 +83,8 @@ def init_barNumber():
def update_data_revenus(data_revenus):
code_commune = init_code_commune()

data_revenus.insert(1, "Code commune", data_revenus['Dép.'].str.strip().apply(lambda dep: dep[:2]) + data_revenus['Commune'])
data_revenus.insert(1, "Code commune", data_revenus['Dép.'].str.strip().apply(
lambda dep: dep[:2]) + data_revenus['Commune'])
data_revenus.drop(["Dép.", "Commune"], axis=1, inplace=True)
data_revenus['Code commune'] = data_revenus['Code commune'].str.strip()
data_revenus = pd.merge(data_revenus, code_commune, on=['Code commune'], how='left').drop(
Expand All @@ -88,22 +95,31 @@ def update_data_revenus(data_revenus):


def init_data_bars_revenus(data_bars, data_revenus):
data_bars_revenus = pd.merge(data_bars, update_data_revenus(data_revenus), on=['Postal code'], how='left')
data_bars_revenus = pd.merge(data_bars, update_data_revenus(
data_revenus), on=['Postal code'], how='left')
data_bars_revenus.drop(
data_bars_revenus[data_bars_revenus['Revenu fiscal de référence des foyers fiscaux'] == 'n.c.'].index,
inplace=True)
data_bars_revenus.drop_duplicates(inplace=True)
data_bars_revenus['Revenu fiscal de référence des foyers fiscaux'] = data_bars_revenus['Revenu fiscal de référence des foyers fiscaux'].astype(np.float64)
data_bars_revenus['Revenu fiscal de référence par foyer fiscal'] = data_bars_revenus['Revenu fiscal de référence des foyers fiscaux'] / data_bars_revenus['Nombre de foyers fiscaux']
data_bars_revenus['Revenu fiscal de référence des foyers fiscaux'] = data_bars_revenus[
'Revenu fiscal de référence des foyers fiscaux'].astype(np.float64)
data_bars_revenus['Revenu fiscal de référence par foyer fiscal'] = data_bars_revenus[
'Revenu fiscal de référence des foyers fiscaux'] / \
data_bars_revenus['Nombre de foyers fiscaux']
return data_bars_revenus


def init_nbBar_revenu_byCp(data_bars_revenus):
nbBar_revenu_byCp = pd.merge(
data_bars_revenus.groupby('Postal code')['Revenu fiscal de référence par foyer fiscal'].mean().reset_index(),
data_bars_revenus.groupby('Postal code')[
'Revenu fiscal de référence par foyer fiscal'].mean().reset_index(),
data_bars_revenus.groupby('Postal code')['Nom'].nunique().reset_index(), on=['Postal code'], how='inner')
nbBar_revenu_byCp.columns = ['Postal code', 'Revenu fiscal de référence par foyer fiscal', 'Nombre de bars']
nbBar_revenu_byCp.columns = [
'Postal code', 'Revenu fiscal de référence par foyer fiscal', 'Nombre de bars']
return nbBar_revenu_byCp


def init_mean_by_bar_number(nbBar_revenu_byCp):
mean_by_bar_number = nbBar_revenu_byCp.groupby('Nombre de bars').mean().reset_index()
return mean_by_bar_number
mean_by_bar_number = nbBar_revenu_byCp.groupby(
'Nombre de bars').mean().reset_index()
return mean_by_bar_number