Files
training.python.datascience/source/pandas/01-pandas-files/01-json-demo-communes.py

37 lines
1.3 KiB
Python

import pandas as pd
from matplotlib import pyplot as plt
import matplotlib
if __name__ == '__main__':
# Configure Pandas to only display floats not in scientific notation
pd.options.display.float_format = "{:.2f}".format
# Read a list of FR lowest administrative divisions
# See france-communes-readme.md for field informations
df = pd.read_json("../data/json/france-communes.json")
# Get the mean of columns as a new row, and only keep the population column
df1 = df.copy()
df1.loc["mean"] = df1.mean(skipna=True, numeric_only=True)[["population"]]
# Show dataframe
print(df1.to_string(max_cols=9))
# Get only cities in the dept 94
df2: pd.DataFrame = df.copy()
# Filter rows by using criteria
df2 = df2.loc[(df2["departement"] == "94") & (df2["population"] > 0) & (df2["nom"].str.contains(""))]
# Sort data by columns
df2.sort_values("nom", inplace=True)
# Remove columns from the dataframe
df2.drop(columns=["chefLieu", "commune"], inplace=True)
print(df2.to_string(max_cols=10))
# Show lines
matplotlib.use("QtCairo")
plt.rcParams["figure.dpi"] = 96
gp = df2.plot.line(x="nom", y="population")
plt.show()
# Get postal codes from line 37237
row = df2.loc[37237]
print(row["codesPostaux"], type(row["codesPostaux"]))