使用Pandas实现可视化带有标签列的数据表
作者:胡译胡说
使用Pandas可视化带有标签列的数据表
Pandas是Python中一个灵活强大的数据处理库。它提供了大量数据操作和分析工具,并整合了Matplotlib和Seaborn等数据可视化库的功能,这使得数据的可视化变得更加容易。
在本文中,我们将讨论如何使用Pandas可视化带有标签列的数据表,以便更好地呈现和传达数据的信息。
准备数据
本文以如下图所示的Excel表为例。
这是一张典型的日志记录表,每1行依次记录了哪一天(p_date)、产生哪种行为(action_type)的用户数(pv)和独立用户数(uv)。
这张表是按照关系型数据库的范式存储的,也就是说,这不是一张宽表,没有把action_type
的所有取值和pv
、uv
组合起来作为列,即只有action_type
、pv
、uv
这3列,而不是action_type_A_pv
、action_type_B_pv
、……、action_type_A_uv
、action_type_B_uv
……这一系列字段。
表中的action_type
就是标签列。下面我们就来看看如何根据这个标签列的取值,将这张数据表拆分为若干张小表,并分别绘制折线图。
使用Pandas进行可视化
在可视化之前,我们先对数据进行简要的概览,以了解数据的结构和内容。使用了Pandas以后就无需启动Excel了。
# pip3 install openpyxl # pip3 install pandas # pip3 install matplotlib import matplotlib.pyplot as plt import pandas as pd # 从Excel文件读取数据 df = pd.read_excel('demo.xlsx') # 显示列标题和前几行数据 print(df.head()) # 使用groupby按'action_type'列拆分DataFrame grouped = df.groupby('action_type') # 遍历分组,并打印每个分组的数据 for group_name, group_df in grouped: print(group_name) print(group_df[:2]) print("========")
上面代码的运行结果如下所示:
p_date action_type pv uv
0 20240107 Action_A 209432 175390
1 20231205 Action_B 2219974 1511501
2 20231218 Action_A 68196 61948
3 20240111 Action_C 16624897 4379832
4 20231222 Action_C 2960038 1948306
Action_A
p_date action_type pv uv
0 20240107 Action_A 209432 175390
2 20231218 Action_A 68196 61948
========
Action_B
p_date action_type pv uv
1 20231205 Action_B 2219974 1511501
5 20240106 Action_B 6670116 2993844
========
Action_C
p_date action_type pv uv
3 20240111 Action_C 16624897 4379832
4 20231222 Action_C 2960038 1948306
========
Action_D
p_date action_type pv uv
35 20231124 Action_D 7145549 5891077
43 20231125 Action_D 8258851 5954404
========
接下来,我们可以使用Pandas的plot
方法结合Matplotlib进行简单的折线图可视化,
# 绘制每个分组的数据 for group_name, group_df in grouped: # 按'p_date'列排序 group_df = group_df.sort_values(by='p_date') # 将'p_date'列转换为日期格式(yyyymmdd) group_df['p_date'] = pd.to_datetime(group_df['p_date'], format='%Y%m%d') # 绘图 group_df.plot(x='p_date', y=['pv', 'uv'], title=group_name) # 将y轴的数字格式化为千分位 ax = plt.gca() ax.get_yaxis().set_major_formatter( plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))) ) # 显示图形 plt.show()
运行结果如下,每种action_type
一张折线图。
通过使用Pandas的可视化功能,能够更好地理解和传达数据的信息。例如,从折线图中,我们可以看到用户数突然激增。
在实际的数据分析项目中,结合Pandas的数据操作和Matplotlib、Seaborn等库的可视化功能,我们可以更深入地探索数据,识别趋势,发现异常,以支持更有洞察力的决策过程。
作者:胡译胡说
链接:https://juejin.cn/post/7330471268032856074
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
到此这篇关于使用Pandas实现可视化带有标签列的数据表的文章就介绍到这了,更多相关Pandas可视化数据表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!