代码详解:使用Python从不同表格中提取数据
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
常用的表格数据存储文件格式——CSV,Microsoft Excel,Google Excel 。
Python通常称为粘合语言。这个名称归因于人们逐渐开发出的大量接口库和特征,也得益于广泛的使用和良好的开源社区。这些接口库和特征能直接访问不同的文件格式,还可以访问数据源如数据库、网页和各种API。
本文的学习内容:
从谷歌表格中提取数据
- 从CSV文件中提取数据
- 从Excel文件中提取数据
本文适用于以下读者:
- Python初学者
- 必须定期处理数据的人员
由于本文附有代码,建议处在开发环境之下(建议使用JupyterNotebook / Lab),并建立一个新的笔记本。
源代码和文件:https://github.com/FBosler/Medium-Data-Extraction
解决方法
本文将带你进入一个虚构但却可能异常熟悉的场景。你可以结合不同的数据来源去创建报告或进行分析。
注意!!!下面的示例和数据纯属虚构。
假设,你的任务是搞清楚如何提高销售团队的业绩。假设潜在的客户有相当自发的需求。这种情况发生时,销售团队将订单导入系统。然后,销售代表们会在订单交付时安排一个会议。具体日期有时在交付期之前,有时在交付期之后。你的销售代表有一笔费用预算,会在开会期间支付餐费。他们负责报销这笔费用,并将发票交给会计团队处理。在潜在客户决定是否要接受报价后,销售代表会跟踪订单是否达成。
可使用以下三个资料来源进行分析:
- 100,000 份订单 (Google表格)
- 约50,000张餐费发票(Excel文件)
- 负责公司及销售代表名单(CVS文件)
获取谷歌表格数据
访问谷歌表格是这三种方法中最复杂的,因为你需要在使用谷歌表格API前设置一些证书。理论上,你可以获取一个公开可用的谷歌表(即提取源HTML代码)但必须使用Beautiful Soup之类的工具进行大量数据操作,才能将HTML转储转换为有用的内容。我确实尝试过,但是结果很糟糕,不值得一试。所以,API就是如此。此外,还将使用gspread无缝转换数据分析DataFrame。
获取OAuth2证书
前往谷歌开发人员控制台,创建一个新项目(或选择现有的项目)。点击“创建项目”。如果公司使用谷歌邮件,可将其更改为私人帐户,以避免潜在的权限冲突。
为项目命名(名称无关紧要,此处将其命名为媒体数据提取)。
点击APIs & Services ,前往library。
启用谷歌Sheets API。单击结果,并在如下页面上单击启用 API。
创建一个服务帐户和密钥文件。服务帐户是用于程序访问的专用帐户,访问权限有限。服务帐户可以而且应该通过有尽可能多的特定权限项目进行设置,当前的任务也需要如此。
创建JSON(另一种文件格式)密钥文件。在角色上,选择“Project -> Viewer”。
如果还没有在前面的步骤中设置角色请立即设置。
注意:设置为“Viewer”会存在一些限制。如果希望以编程方式创建谷歌表格,则必须选择不同的设置。
然后,私有JSON密钥文件就可以下载或自动下载了。建议将该文件重命名为'Medium_Data_Extraction_Key,并将文件移动到JupyterNotebook文件夹中,以便与下面的示例无缝衔接。JSON文件包含最近创建的服务帐户证书。
非常好,就要成功了。
下载数据
首先,必须下载并安装其他软件包,在笔记本中运行以下命令。
!pip install gspread
!pip install oauth2client
其次,如果还没有移动密钥文件的话,必须确保将之前创建的JSON密钥文件移动到目前运行的木星笔记本(Jupyternotebook)文件夹中。或者,可以指定一个不同的GOOGLE_KEY_FILE路径。
- from oauth2client.service_account import ServiceAccountCredentials
- import gspread
- import pandas as pd
- scope = [
- 'https://www.googleapis.com/auth/spreadsheets',
- ]
- GOOGLE_KEY_FILE='Medium_Data_Extraction_Key.json'
- credentials = ServiceAccountCredentials.from_json_keyfile_name(GOOGLE_KEY_FILE, scope)
- gc = gspread.authorize(credentials)
- wokbook_key ='10HX66PbcGDvx6QKM8DC9_zCGp1TD_CZhovGUbtu_M6Y'
- workbook = gc.open_by_key(wokbook_key)
- sheet = workbook.get_worksheet(0)
- values = sheet.get_all_values()
- sales_data = pd.DataFrame(values[1:],columns=values[0])
- WORKBOOK_KEY是为本章内容准备的谷歌表格的工作簿id。
- WORKBOOK_KEY = '10HX66PbcGDvx6QKM8DC9_zCGp1TD_CZhovGUbtu_M6Y'
这份工作簿是公开的,如果想下载不同的数据,需要更改WORKBOOK_KEY。URL有问题的话,id通常可以在谷歌表格的最后两个反斜杠之间找到。
获取CSV数据
可以从repo以传统方式下载CSV数据,也可以使用以下代码片段进行下载。同样地,可能需要在笔记本上安装并运行缺失的请求包:
- !pip install requests
- import requests
- url ='https://raw.githubusercontent.com/FBosler/Medium-Data-Extraction/master/sales_team.csv'
- res = requests.get(url, allow_redirects=True)
- withopen('sales_team.csv','wb') asfile:
- file.write(res.content)
- sales_team = pd.read_csv('sales_team.csv')
CSV数据的美妙之处在于Python /panda可以立即进行处理。Excel则需要额外的库。
获取Excel数据
在开始之前,很可能还要安装openpyxl和xlrd,这能让Pandas也可以打开Excel表。
!pip install openpyxl
!pip install xlrd
完成这些步骤之后,可以相同的方式获得Excel数据,并将其加载到另一个DataFrame中。
- url ='https://github.com/FBosler/Medium-Data-Extraction/blob/master/invoices.xlsx?raw=true'
- res = requests.get(url, allow_redirects=True)
- withopen('invoices.xlsx','wb') asfile:
- file.write(res.content)
- invoices = pd.read_excel('invoices.xlsx')
大功告成!已经创建了三个不同的Pandas数据帧,并且可以在同一个Jupyter notebook中进行访问:
- sales_data
- sales_team
- invoices
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
为什么会产生微服务架构,原来是这些原因
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 Web应用架构受系统用户量、开发人员组织方式影响严重。过去二十年互联网迅速发展,Web架构也从单体式演进出微服务,背后还有比如 Martin Fowler 提出的理论支撑。虽然每个人都听说过微服务,但是很多人并不太清楚为什么要这么做,应该怎么做,怎么拆。要回答这个问题我认为需要从Web架构的演化历史的高度去理解这些架构设计中的取舍。 首先我们改进系统架构的目的是为了满足系统可靠性、并发量以及快速开发的需求。所有的改进方案都是为了解决这其中一个或多个问题而产生的。 单体结构 单体结构 最开始Web服务器、数据库全部部署在同一台服务器上,这也是最简单的应用架构,通常公司早期项目都采用这种方式。在很长一段时间里单体结构可以满足系统快速开发与并发量的需求。当用户量越来越大,通常会数据库性能会成为系统瓶颈,此时可以将Web业务与数据库部署在不同服务器上,增强数据库服务器的配置并做读写分离等提高系统的吞吐量与可用性。 与此同时也可以将业务系统等价部署在多台服务器上来提高系统吞吐量,但整体上这仍然是一个单体应用。 单体等价部署 ...
- 下一篇
中国自研数据库打破西方垄断
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 中国基础技术,再破外国垄断。 而且新近提交成绩,大幅刷新之前纪录,斩获全球第一。 荣誉属于阿里巴巴,属于蚂蚁金服。 十一期间,权威机构国际事务处理性能委员会(TPC)官网披露,阿里巴巴自主研发的金融级分布式关系数据库OceanBase,在TPC-C基准测试中登上榜首。 这一成绩还打破了由美国公司甲骨文(Oracle)保持了9年之久的世界记录,成为首个登顶该榜单的中国数据库产品。 中国工程院院士、计算机专家李国杰盛赞说:“这是中国基础软件取得的重大突破。” TPC-C基准测试,被誉为“数据库领域世界杯”,是全球公认的数据库性能评价金指标,美国公司Oracle(甲骨文)已经垄断了9年冠军。 而此次登顶的OceanBase,完全由阿里巴巴和蚂蚁金服自主研发,是全球首个应用于金融核心业务的分布式关系数据库。其创造的新的联机交易处理系统(OLTP)世界纪录,是Oracle最好成绩的两倍多。 此前,国内的数据库市场,长期由Oracle、IBM等国外科技公司占据主导地位,不仅导致软件服务费用高昂,而且在许多关键领域还存在信息安全...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块