本節主要講述如何把pandas中的數據用圖表的方式顯示在屏幕上,有點類似在excel中顯示圖表。
安裝matplotlib
為了能夠顯示圖表,首先需要安裝matplotlib庫,安裝方法如下:
pip3 install matplotlib
顯示圖表
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 產生1000個隨機數
data = pd.Series(np.random.rand(1000))
# 畫圖表
data.plot()
# 顯示圖表
plt.show()
在上面的代碼中,我們首先創建1000個隨機數序列點,然后對這1000個點進行畫圖表,最后調用plt.show()顯示圖表。
顯示的結果為:
在matplotlib中,如果想要顯示圖表,需要使用plt.plot()函數,但在pandas中,我們只要對序列數據調用plot()函數就能顯示其所擁有的數據,是不是很簡單。
顯示矩陣數據
顯示矩陣中的數據,就會把每列當做一個數據序列進行顯示,例如:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 產生1000個4列正態分布的隨機數
data = pd.DataFrame(np.random.randn(1000, 4))
# 對其中的數據進行累加,目的是為了能夠使例子中顯示的曲線有上升波動效果
data = data.cumsum()
# 打印出前幾行的數據,方便我們調試其中的數據值
print(data.head())
# 畫圖表
data.plot()
# 顯示圖表
plt.show()
其中顯示的頭幾行數據值為:
0 1 2 3
0 0.596323 0.195563 0.037300 0.900385
1 0.186813 2.217155 0.516096 0.623348
2 1.147338 2.362926 2.597531 0.960079
3 1.571033 2.910459 0.947950 0.609487
4 1.783988 3.702685 -0.358119 2.341726
顯示的圖表為:
還是挺漂亮的圖表,有點像股市走勢圖。:)
只是其中的0,1,2,3這幾個列名不大好看,我們可以修改產生數據集中的列名,這樣,在顯示圖表時就能按照數據集中的列名進行顯示了。
比如,我們想修改數據集中的列名顯示為A、B、C、D:
data = pd.DataFrame(np.random.randn(1000, 4), columns=list("ABCD"))
這樣顯示為:
顯示散點圖
可以用scatter()函數來顯示散點圖,但其使用方式跟顯示圖表的有點不一樣,主要是此函數是在plot屬性中的方法,需要注意一下:
data.plot.scatter(x='A', y='B')
完整的代碼為:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 產生1000個4列正態分布的隨機數
data = pd.DataFrame(np.random.randn(1000, 4), columns=list("ABCD"))
# 打印出前幾行的數據,方便我們調試其中的數據值
print(data.head())
# 顯示散點圖
data.plot.scatter(x='A', y='B')
# 顯示圖
plt.show()
顯示圖為:
在scatter函數中還可以添加額外的屬性,比如可以通過color來指定顏色,通過label來指定標簽,我們來看一下:
data.plot.scatter(x='A', y='B', color='DarkBlue', label="Class 1")
顯示的圖為:
如果我們想要在一張圖中再畫一下另一個散點圖,比如,在上面這個例子中,我們已經顯示了橫坐標是A縱坐標是B的散點圖,現在我們還想把橫坐標是A,縱坐標是C的數據也顯示在其中,該怎么進行呢?
# 顯示散點圖
pic1 = data.plot.scatter(x='A', y='B', color='DarkBlue', label="Class 1")
data.plot.scatter(x='A', y='C', color='DarkGreen', label='Class2', ax=pic1)
# 顯示圖
plt.show()
圖片顯示為:
更多圖形
更多的圖形還有:條形圖, 直方圖, 盒須圖, 餅圖等,相應的函數名有:bar, hist, box, kde, area, hexbin, pie等(前面不是一一對應的,有興趣的讀者可以自己去試試看。)