pandas抓取国家外汇管理局网站汇率数据;openpyxl绘制excel折线图;
公司的一个小工作,需要抓取美元、欧元汇率并绘制成折线图。很小的功能,背后却涉及很多Python知识,甚至一些冷门的知识点。知识点总结如下:
1.python抓取网页数据,利用pandas.read_html()进行解析
2.python日期操作,包括获取今天日期,获取上周一日期,上周五日期,今年的第一天等。还有个必须要提的就是将DataFrame里面的字符串写进excel文件时,如何让excel显示为日期格式,分为两步:
①利用pandas.to_datetime()将DataFrame先转化成日期格式,然后用to_excel()写入EXCEL文件
②利用cell.number_format = 'yyyy/m/d'将单元格格式调整成日期格式
这是核心的两步,具体的还要看下面的源代码。
3.openpyxl绘制折线图,其中还包括两个比较冷门的知识点:
①调整数据标签(dLbls)的字体、颜色
②调整趋势线(trendline)的线型、颜色
网上关于这两知识点的案例极少,以至于我费了好长时间才整明白。
话不多说,上代码。
import pandas import requests import datetime from openpyxl import load_workbook from openpyxl.chart import LineChart, Reference from openpyxl.chart.label import DataLabelList from openpyxl.chart.shapes import GraphicalProperties from openpyxl.chart.text import RichText from openpyxl.chart.trendline import Trendline from openpyxl.drawing.line import LineProperties from openpyxl.drawing.text import Paragraph, ParagraphProperties, CharacterProperties from openpyxl.styles import Font, Border, Side, Alignment # 获取上周一 def getLastMonday(): monday = datetime.date.today() # 获取今天的日期 one_day = datetime.timedelta(days=1) # 获取日期单位增量:一天 monday -= (7 * one_day) # 将今天的日期减去7天,得到上周的今天 # 以下代码,将上周的今天每次减1天,直到monday.weekday()为0为止。monday.weekday()是获取星期几,周一到周日依次是0到6 while monday.weekday() !=<
