标簽:Python與Excel,pandas
在上篇文章中,我們簡要地讨論了如何使用web資料在Python中建立一個圖形,但是如果我們所能做的隻是在Python中顯示一個繪制的圖形,那麼它就沒有那麼大的用處了。假如使用者不知道如何運作Python并重新這個繪制圖形呢?解決方案是使用Excel作為顯示結果的媒介,因為大多數人的電腦上都安裝有Excel。是以,我們隻需将Python生成的圖形儲存到Excel檔案中,并将電子表格發送給使用者。
根據前面用Python繪制圖形的示例(參見:在Python中繪圖),在本文中,我們将:
1)美化這個圖形,
2)将其儲存到Excel檔案中。
美化圖表
之前我們生成的這個圖,盡管對于2行代碼來說并不太糟糕,但該圖與專業級圖相差甚遠,是以讓我們使它更漂亮。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZlBnauIDOlZjMhBjZxUTNhJDNwczMhhzM3IDNhVGZhljY2cDNvwFO1AjN0gTNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.jpeg)
圖1
我們将使用matplotlib修改繪圖格式。由于這不是本文的主題,是以不會詳細介紹下面的代碼。後續文章中會有講解。
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import (
FormatStrFormatter,
AutoMinorLocator,
FuncFormatter,
)
import matplotlib.dates as mdates
from matplotlib.dates import DateFormatter
df =pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
df = df.iloc[:,4:]
global_num = df.sum()
fig, ax = plt.subplots()
ax.set(title = 'Global CovidConfirmed Cases',
xlabel = 'Time',
ylabel = 'Number of cases')
ax.yaxis.set_major_formatter(FuncFormatter(lambdax, p: format(x/1000000) +'M'))
date_form = DateFormatter("%m-%d")
ax.xaxis.set_major_formatter(date_form)
locator = mdates.DayLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_locator(mdates.WeekdayLocator(interval=3))
ax.yaxis.grid()
dates = pd.to_datetime(global_num.index)
plt.plot(dates, global_num)
plt.show()
複制
圖2
将Python生成的圖形儲存到Excel檔案中
我們需要先把圖形儲存到電腦裡。
plt.savefig(r'D:\python_pretty_plot.png')
複制
然後可以使用xlsxwriter庫建立一個Excel檔案。要将确認病例資料儲存到Excel中,執行以下操作:
writer = pd.ExcelWriter(r'D:\Python_plot.xlsx',engine = 'xlsxwriter')
global_num.to_excel(writer,sheet_name='Sheet1')
複制
然後,将圖像添加到該工作表:
worksheet = writer.sheets['Sheet1']
worksheet.insert_image('C2','D:\python_pretty_plot.png')
writer.save()
複制