使用Pandas實現(xiàn)可視化帶有標簽列的數(shù)據(jù)表
使用Pandas可視化帶有標簽列的數(shù)據(jù)表
Pandas是Python中一個靈活強大的數(shù)據(jù)處理庫。它提供了大量數(shù)據(jù)操作和分析工具,并整合了Matplotlib和Seaborn等數(shù)據(jù)可視化庫的功能,這使得數(shù)據(jù)的可視化變得更加容易。
在本文中,我們將討論如何使用Pandas可視化帶有標簽列的數(shù)據(jù)表,以便更好地呈現(xiàn)和傳達數(shù)據(jù)的信息。
準備數(shù)據(jù)
本文以如下圖所示的Excel表為例。

這是一張典型的日志記錄表,每1行依次記錄了哪一天(p_date)、產(chǎn)生哪種行為(action_type)的用戶數(shù)(pv)和獨立用戶數(shù)(uv)。
這張表是按照關系型數(shù)據(jù)庫的范式存儲的,也就是說,這不是一張寬表,沒有把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就是標簽列。下面我們就來看看如何根據(jù)這個標簽列的取值,將這張數(shù)據(jù)表拆分為若干張小表,并分別繪制折線圖。
使用Pandas進行可視化
在可視化之前,我們先對數(shù)據(jù)進行簡要的概覽,以了解數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容。使用了Pandas以后就無需啟動Excel了。
# pip3 install openpyxl
# pip3 install pandas
# pip3 install matplotlib
import matplotlib.pyplot as plt
import pandas as pd
# 從Excel文件讀取數(shù)據(jù)
df = pd.read_excel('demo.xlsx')
# 顯示列標題和前幾行數(shù)據(jù)
print(df.head())
# 使用groupby按'action_type'列拆分DataFrame
grouped = df.groupby('action_type')
# 遍歷分組,并打印每個分組的數(shù)據(jù)
for group_name, group_df in grouped:
print(group_name)
print(group_df[:2])
print("========")
上面代碼的運行結(jié)果如下所示:
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方法結(jié)合Matplotlib進行簡單的折線圖可視化,
# 繪制每個分組的數(shù)據(jù)
for group_name, group_df in grouped:
# 按'p_date'列排序
group_df = group_df.sort_values(by='p_date')
# 將'p_date'列轉(zhuǎn)換為日期格式(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軸的數(shù)字格式化為千分位
ax = plt.gca()
ax.get_yaxis().set_major_formatter(
plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x)))
)
# 顯示圖形
plt.show()
運行結(jié)果如下,每種action_type一張折線圖。

通過使用Pandas的可視化功能,能夠更好地理解和傳達數(shù)據(jù)的信息。例如,從折線圖中,我們可以看到用戶數(shù)突然激增。
在實際的數(shù)據(jù)分析項目中,結(jié)合Pandas的數(shù)據(jù)操作和Matplotlib、Seaborn等庫的可視化功能,我們可以更深入地探索數(shù)據(jù),識別趨勢,發(fā)現(xiàn)異常,以支持更有洞察力的決策過程。
作者:胡譯胡說
鏈接:https://juejin.cn/post/7330471268032856074
來源:稀土掘金
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。
到此這篇關于使用Pandas實現(xiàn)可視化帶有標簽列的數(shù)據(jù)表的文章就介紹到這了,更多相關Pandas可視化數(shù)據(jù)表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
細數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別
今天小編就為大家整理了一篇細數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python利用CNN實現(xiàn)對時序數(shù)據(jù)進行分類
這篇文章主要為大家詳細介紹了Python如何利用CNN實現(xiàn)對時序數(shù)據(jù)進行分類功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-02-02
Python 基于Twisted框架的文件夾網(wǎng)絡傳輸源碼
這篇文章主要介紹了Python 基于Twisted框架的文件夾網(wǎng)絡傳輸源碼,需要的朋友可以參考下2016-08-08
Python ORM框架SQLAlchemy學習筆記之數(shù)據(jù)查詢實例
這篇文章主要介紹了Python ORM框架SQLAlchemy學習筆記之數(shù)據(jù)查詢實例,需要的朋友可以參考下2014-06-06
Python+pandas計算數(shù)據(jù)相關系數(shù)的實例
今天小編就為大家分享一篇Python+pandas計算數(shù)據(jù)相關系數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07

