from datetime import datetime
print(f"Date of last update: {datetime.now().strftime('%d.%m.%Y, %H:%M')}")
Date of last update: 16.02.2026, 04:05
Utility functions and imports¶
%load_ext jupyter_ai_magics
%load_ext autoreload
%autoreload 2
import seaborn as sns
import matplotlib.pyplot as plt
from IPython.display import display, Markdown
from mfnf import MFNF
def md(text):
display(Markdown(text))
df = MFNF().aggregate_pageviews()
Page view distribution over complete book¶
from datetime import datetime, timedelta
def analyze_page_distribution(df):
one_year_ago = datetime.now() - timedelta(days=365)
df = df[(df["timestamp"] > one_year_ago) & (df["page_name"] is not None)]
df = df[["page_name", "views"]].groupby("page_name").sum()
md("### Histogram of distribution")
plt.figure(figsize=(10, 6))
sns.histplot(df["views"], kde=True, log_scale=True, bins="sqrt")
plt.title("Distribution of page views in the last year")
plt.xlabel("Number of page views")
plt.ylabel("Frequency")
plt.grid(True)
plt.show()
md("### Information about distribution")
display(df["views"].describe())
analyze_page_distribution(df.copy())
Page view distribution per book¶
from mfnf import books
for book in books:
md(f"### {book}")
analyze_page_distribution(df[df["book_name"] == book].copy())
Analysis 1¶
Histogram of distribution¶
Information about distribution¶
count 117.000000 mean 4581.247863 std 3653.078763 min 784.000000 25% 2331.000000 50% 3838.000000 75% 5511.000000 max 27856.000000 Name: views, dtype: float64
Grundlagen der Mathematik¶
Histogram of distribution¶
Information about distribution¶
count 59.000000 mean 3919.915254 std 2131.337473 min 919.000000 25% 2418.500000 50% 3115.000000 75% 5067.000000 max 9942.000000 Name: views, dtype: float64
Lineare Algebra 1¶
Histogram of distribution¶
Information about distribution¶
count 49.000000 mean 4838.510204 std 3602.956582 min 1253.000000 25% 2622.000000 50% 3809.000000 75% 5651.000000 max 19035.000000 Name: views, dtype: float64
Maßtheorie¶
Histogram of distribution¶
Information about distribution¶
count 9.000000 mean 1522.444444 std 700.756397 min 526.000000 25% 1077.000000 50% 1280.000000 75% 1956.000000 max 2774.000000 Name: views, dtype: float64
Real Analysis¶
Histogram of distribution¶
Information about distribution¶
count 89.000000 mean 1619.146067 std 1575.185924 min 303.000000 25% 1012.000000 50% 1334.000000 75% 1684.000000 max 11518.000000 Name: views, dtype: float64
Linear algebra¶
Histogram of distribution¶
Information about distribution¶
count 42.000000 mean 1138.690476 std 307.525251 min 656.000000 25% 924.250000 50% 1167.500000 75% 1227.250000 max 2107.000000 Name: views, dtype: float64
Measure theory¶
Histogram of distribution¶
Information about distribution¶
count 8.000000 mean 1591.875000 std 365.435332 min 875.000000 25% 1425.750000 50% 1637.500000 75% 1814.250000 max 1999.000000 Name: views, dtype: float64
License of this report¶
Copyright 2025 Stephan Kulla ("Kulla")
Licensed under the Apache License, Version 2.0 (the "Apache License") and Creative Commons Attribution 4.0 International (the "CC-BY License"). You may choose either of these licenses to govern your use of this project.
You may obtain a copy of the Apache License at: http://www.apache.org/licenses/LICENSE-2.0
You may obtain a copy of the CC-BY License at: https://creativecommons.org/licenses/by/4.0/
Unless required by applicable law or agreed to in writing, software and content distributed under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for the specific language governing permissions and limitations under the License.
Under the CC-BY License, you are free to share and adapt the material provided you give appropriate credit, provide a link to the license, and indicate if changes were made. See the CC-BY License for full details.
Third-Party Components and Licenses: This product also includes third-party components which are distributed under their respective licenses. Please refer to the NOTICE file for details.