1. xlsxwriter模块简介
xlsxwriter是一个用Python编写的Excel格式化工具。这个模块允许我们使用各种方法从Python应用程序中编写数据和图表到Excel XLSX文件。
xlsxwriter的优点包括:
具有高级Excel功能,例如支持图表、条件格式和数据验证等;
生成的Excel文件具有小尺寸、快速和异构性;
通过支持多个工作表和多个格式应用,具有对复杂报告的支持。
2. 绘制股票图表
2.1 准备数据
使用Python在Excel表格中绘制股票图表需要准备好数据。股票图表通常包括价格和时间两个方面的数据。下面是简单的示例代码,我们可以从Yahoo Finance API获取Apple股票的价格数据:
import requests
import pandas as pd
symbol = 'AAPL'
url = f'https://finance.yahoo.com/quote/{symbol}/history?p={symbol}'
res = requests.get(url)
data = pd.read_html(res.text)
prices = data[0]['Close*'][0:10]
dates = data[0]['Date'][0:10]
print(prices)
print(dates)
我们使用pandas中的read_html()函数获取网页文本中的表格数据,然后使用pandas的DataFrame()函数来创建数据帧。最终我们得到了两个数据列表:prices表示股票价格,dates表示日期。
这里我们只获取了10天的数据,实际使用中通常需要获取更长时间的数据。
2.2 创建Excel表格
在将数据写入Excel表格之前,我们需要创建一个新的工作簿(workbook)对象。我们使用xlsxwriter.Workbook()函数来创建这个对象,然后使用workbook.add_worksheet()函数添加新的工作表(worksheet)。
import xlsxwriter
workbook = xlsxwriter.Workbook('stock_data.xlsx')
worksheet = workbook.add_worksheet('Stock Data')
以上代码将创建一个名为"stock_data.xlsx"的Excel文件,并在其中创建工作表"Stock Data"。
2.3 写入数据
在工作表中添加数据的最简单方法是使用worksheet.write()函数。我们可以传递行数和列数作为函数的前两个参数,并在第三个参数中写入数据。数据可以是数字、字符串或日期。
row = 0
col = 0
for price in prices:
worksheet.write(row, col, price)
row += 1
row = 0
col = 1
for date in dates:
worksheet.write(row, col, date)
row += 1
以上代码将使用for循环遍历prices和dates列表,并使用worksheet.write()函数在工作表中写入数据。prices写入第1列,dates写入第2列。
2.4 创建股票图表
除了写入数据,我们还可以使用xlsxwriter模块在Excel表格中绘制各种图表。下面是一个简单的示例,我们将使用xlsxwriter模块在Excel表格中创建一张股票折线图表。
首先,我们需要创建一个 Chart 类的对象。在创建对象时,我们需要传递 chart_type 参数作为对象的参数。Chart 类支持多种不同类型的图表,包括折线图、柱状图、散点图等。我们在本例中使用折线图。
chart = workbook.add_chart({'type': 'line'})
然后,我们需要通过 add_series() 方法向图表添加数据系列。数据系列是一组相关数据的集合,例如,工作表中的一列或一行等。
我们将添加两个数据系列到图表中:股票价格和日期。因此,我们需要使用 add_series() 方法添加两个数据系列。我们可以在 add_series() 方法中指定数据系列的名称、类别以及值的范围。
chart.add_series({
'name': 'Price',
'categories': f'=\'Stock Data\'!$B$1:$B${len(dates)}',
'values': f'=\'Stock Data\'!$A$1:$A${len(prices)}',
})
chart.add_series({
'name': 'Date',
'categories': f'=\'Stock Data\'!$B$1:$B${len(dates)}',
'values': f'=\'Stock Data\'!$B$1:$B${len(dates)}',
})
以上代码将添加两个数据系列到股票折线图表中。第一个数据系列表示股票价格,该系列的名称为 "Price",类别为日期,值的范围为价格列表。第二个数据系列表示日期,该系列的名称为 "Date",类别为日期,值的范围为日期列表。
2.5 定制图表
最后,我们需要定制股票折线图表,以使其更具可读性。
我们可以使用 Chart 类中的 set_title() 方法为图表设置标题,使用 set_x_axis() 和 set_y_axis() 方法设置坐标轴,以及使用 set_legend() 方法设置图例等。
chart.set_title({'name': 'Stock Data'})
chart.set_x_axis({'name': 'Date'})
chart.set_y_axis({'name': 'Price'})
worksheet.insert_chart('D1', chart)
以上代码将为我们的股票折线图表添加标题并设置坐标轴。最后,我们使用 worksheet.insert_chart() 方法将图表插入到工作表中。
3. 总结
使用 Python 中的 xlsxwriter 模块,在 Excel 表格中绘制股票图表非常方便。我们可以使用这个模块创建一个新的工作簿和工作表,写入数据并创建图表。另外,我们还可以使用 xlsxwriter 提供的各种函数和方法对图表进行定制,以满足不同的需求。