python数据可视化技巧的100个练习 -- 21. 网站流量数据的流图
你是一家公司的数据分析师,该公司监控其网站各个部分的流量。你的任务是创建一个流图,以可视化不同部分(首页、关于我们、产品、联系我们)在 12 个月内的网站流量数据。在代码中生成输入数据,并使用 Python 创建流图。【数据生成代码示例】
import pandas as pdimport numpy as npnp.random.seed(0)months = pd.date_range(start='2023-01-01', periods=12, freq='M')sections = ['Home', 'About', 'Products', 'Contact']data = {section: np.random.randint(1000, 5000, size=12) for section in sections}
【图表答案】
【代码答案】
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesnp.random.seed(0)months = pd.date_range(start='2023-01-01', periods=12, freq='ME')sections = ['Home', 'About', 'Products', 'Contact']data = {section: np.random.randint(1000, 5000, size=12) for section in sections}df = pd.DataFrame(data, index=months)fig, ax = plt.subplots(figsize=(10, 6))ax.stackplot(df.index, df.T, labels=sections)ax.set_title('Web Traffic Streamgraph')ax.set_xlabel('Month')ax.set_ylabel('Number of Visits')ax.legend(loc='upper left')ax.xaxis.set_major_locator(mdates.MonthLocator())ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))plt.xticks(rotation=45)plt.tight_layout()plt.show()
为了创建网站流量数据的流图,我们首先导入必要的库:用于数据操作的 pandas、用于生成随机数据的 numpy 和用于绘图的 matplotlib。我们设置随机种子以确保结果可复现,并生成一个表示 12 个月的日期范围。我们定义网站的各个部分,并创建一个字典,其中包含每个部分在 12 个月内的随机访问次数。我们将这个字典转换为 pandas DataFrame,月份作为索引。这种 DataFrame 结构使我们能够轻松地操作和可视化数据。接下来,我们设置一个 matplotlib 图形和坐标轴。我们使用 stackplot 函数创建流图,传入 DataFrame 的索引(月份)和转置的 DataFrame 值(每个部分的访问次数)。这个函数会将数据堆叠起来,以显示随时间累积的访问量。我们为图表添加标题和标签以便于理解。x 轴被格式化为显示月份和年份,标签被旋转以便更好地阅读。最后,我们使用 plt.tight_layout() 确保布局调整得当,并使用 plt.show() 显示图表。【小知识】
流图是一种堆叠面积图,用于显示随时间变化的数据。它们特别适用于显示不同类别之间的数据流动和分布。Matplotlib 中的 stackplot 函数是一个简单而强大的工具,用于创建流图。它自动处理数据堆叠,并可以通过各种参数进行自定义。在数据可视化练习中,使用 numpy 生成随机数据是一种常见做法,可以在不需要实际数据的情况下模拟现实场景。