python,numpy,pandas,matplotlib包應用,畫時間序列圖


應用pandas可讀取excel文件中的數據,存儲為數據框,並應用matplotlib包中的方法進行數據可視化。

本例中讀取的stock.xlsx文件中的數據為

 

 一、畫餅圖

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
# 時間序列繪圖示例
stock = pd.read_excel('stock.xlsx', index_col = 0)# 讀取Excel文件,存為數據框stock,並指導第0列為數據框的索引列
print(stock.head)
plt.rcParams['font.sans-serif'] = 'Simhei' #設置中文
plt.figure(figsize=(6,6))  #設置長寬,建立窗口
plt.title('2018年5月成效量餅圖') #設置圖標題
plt.pie(stock.volume[0:5], labels = stock.index[0:5, autopct = '%1.1f%%')
plt.grid(True)
plt.show()

繪制的圖形如下:

畫折線圖代碼如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
from datetime import datetime
# 時間序列繪圖示例
stock = pd.read_excel('stock.xlsx')# 讀取Excel文件,存為數據框stock,並指導第0列為數據框的索引列
print(stock.head)
plt.rcParams['font.sans-serif'] = 'Simhei' #設置中文
fig1 = plt.figure(figsize=(8,8)) #設置長寬,建立窗口

xs = stock['date'].astype(str)
xs = [datetime.strptime(d, '%Y-%m-%d').date() for d in xs]
ax1 = fig1.add_subplot(1, 1, 1)
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')) # 設置時間標簽顯示格式
plt.xticks(pd.date_range(xs[1],xs[-1]))
plt.plot(xs,stock.open, color = 'k', label = '開盤')
plt.plot(xs,stock.close, color = 'b', label = '收盤')
plt.plot(xs,stock.high, color = 'r', label = '最高價')
plt.legend(loc = 0)

plt.grid(True)
plt.show()
運行后生成下圖:

 

 

畫直方圖代碼如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
from datetime import datetime
# 時間序列繪圖示例
stock = pd.read_excel('stock.xlsx')# 讀取Excel文件,存為數據框stock,並指導第0列為數據框的索引列
print(stock.head)
plt.rcParams['font.sans-serif'] = 'Simhei' #設置中文
fig1 = plt.figure(figsize=(8,8)) #設置長寬,建立窗口

xs = stock['date'].astype(str)
xs = [datetime.strptime(d, '%Y-%m-%d').date() for d in xs]
ax1 = fig1.add_subplot(1, 1, 1)
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d')) # 設置時間標簽顯示格式
plt.xticks(pd.date_range(xs[0],xs[-1]))
plt.bar(xs,stock.volume, color = 'g', width = 0.5)
plt.title('成交量直方圖')
plt.xlabel('日期')
plt.ylabel('成交量')
運行后顯示

 
        




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM