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

這是一張典型的日志記錄表,每1行依次記錄了哪一天(p_date)、產(chǎn)生哪種行為(action_type)的用戶數(shù)(pv)和獨(dú)立用戶數(shù)(uv)。
這張表是按照關(guān)系型數(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就是標(biāo)簽列。下面我們就來看看如何根據(jù)這個(gè)標(biāo)簽列的取值,將這張數(shù)據(jù)表拆分為若干張小表,并分別繪制折線圖。
使用Pandas進(jìn)行可視化
在可視化之前,我們先對數(shù)據(jù)進(jìn)行簡要的概覽,以了解數(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')
# 顯示列標(biāo)題和前幾行數(shù)據(jù)
print(df.head())
# 使用groupby按'action_type'列拆分DataFrame
grouped = df.groupby('action_type')
# 遍歷分組,并打印每個(gè)分組的數(shù)據(jù)
for group_name, group_df in grouped:
print(group_name)
print(group_df[:2])
print("========")
上面代碼的運(yùn)行結(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進(jìn)行簡單的折線圖可視化,
# 繪制每個(gè)分組的數(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()
運(yùn)行結(jié)果如下,每種action_type一張折線圖。

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

