作者:潮汐
來源:Python 技術
今天的文章講解如何利用 Pandas 來繪圖,前面寫過 matplotlib 相關文章,matplotlib 雖然功能強大,但是 matplotlib 相對而言較為底層,畫圖時步驟較為繁瑣,比較麻煩,因為要畫一張完整的圖表,需要實現很多的基本組件,比如圖像類型、刻度、标題、圖例、注解等等。目前有很多的開源框架所實現的繪圖功能是基于 matplotlib 的,pandas是其中之一,對于 pandas 數據分析而言,直接使用 pandas 本身實現的繪圖方法比 matplotlib 更方便簡單。關于更多 Pandas 的相關知識請參考官方文檔
Pandas 繪制線狀圖使用 Pandas 繪制線狀圖代碼如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def craw_line():
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
ts = ts.cumsum()
ts.plot()
plt.show()
if __name__ == '__main__':
craw_line()
顯示結果如下:
第二種繪畫線狀圖方式如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def craw_line1():
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list("ABCD"))
df = df.cumsum()
df.plot()
plt.show()
if __name__ == '__main__':
craw_line1()
線性圖顯示結果如下:
Pandas 繪制條形圖
除了繪制默認的線狀圖,還能繪制其他圖形樣式,例如通過以下方法繪制條形圖。繪圖方法可以作為plot()的kind關鍵字參數提供。
繪制條形圖1通過如下方法繪制條形圖1,詳細代碼如下:
def craw_bar():
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list("ABCD"))
plt.figure()
df.iloc[5].plot(kind="bar")
plt.show()
if __name__ == '__main__':
craw_bar()
結果圖顯示如下:
繪制條形圖2
通過如下方法繪制條形圖2,詳細代碼如下:
def craw_bar1():
#ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
df2 = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"])
df2.plot.bar()
plt.show()
if __name__ == '__main__':
craw_bar1()
圖形結果展示如下:
生成堆疊條形圖
上面的條形圖2可以生成堆疊條形圖,加上stacked=True參數即可,詳細代碼如下:
def craw_bar2():
df2 = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"])
df2.plot.bar(stacked=True)
plt.show()
if __name__ == '__main__':
craw_bar2()
堆疊條形圖展示如下:
将以上條形圖設置為水平條形圖,詳細代碼如下:
def craw_bar3():
df2 = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"])
df2.plot.barh(stacked=True)
plt.show()
if __name__ == '__main__':
craw_bar3()
展示結果圖如下:
總結
今天的文章就到這裡啦,希望今天的文章對大家有幫助!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!