撸主:

大毛 岂安科技业务风险分析师

多年订单业务反欺诈经验,负责岂安科技多款产品运营工作。

上回笔者分享过一些 pandas 的常用数据查询语法,但是数据查询对于 pandas 而言只是冰山一角,它还有着更多更有价值的的应用场景。今天要分享的是,用 pandas 来写 excel。

我的数据分析工作经常是在这样的场景下开展的:数据格式五花八门,有些存储在关系型数据库内,有些则是 csv 或者是 json,而最后老板想要的数据报告是 excel 版本的。

在没有使用 pandas 处理数据以前,我会周旋在各个数据源之间,将取完的数之后黏贴到 excel 中,最终在统一在 excel 内进行处理。

这个操作有一些缺陷:

各个数据源取数方法不统一。自己掌握可以通过反复操作熟练,一旦教授给新人需要花更多时间。

数据处理环节效率低下,易受干扰。在频繁的复制黏贴中,很难确保不受外界干扰,一旦恍神了,很难想起刚刚的取数的一些细节。并且过多的复制黏贴可能导致excel崩溃。

问题排查难以溯源。仔细想来,excel承担了打草稿的功能,在多次复制黏贴之后,没有人会清楚记得每一步为什么复制黏贴。一旦数据报告有误,想要定位问题所在,常常需要从头开始复盘。

如果把数据的获取到处理全部交给 pandas 呢?

这样一来 excel 只负责最终呈现层面的功能。为了实现这些,除了 pandas 本身强大的数据分析功能之外,还得益于两点:

1. pandas 良好的数据读取接口

2. xlsxwriter

良好的数据读取接口

一旦 import pandas as pd 了之后,就可以任意的 pd.read_json / pd.read_csv / pd.read_sql 了,是不是很方便?

example.json[{ "teamName": "GoldenArch", "distCode": 04, "distArea": "Shanghai", "month": 11, "income": 16255, "cost": 30250,},{ "teamName": "OldFather", "distCode": 02, "distArea": "Beijing", "month": 11, "income": 135300, "cost": 27200,}]

>>>>

结果

csv,相对省力,甚至可以用 excel 直接打开处理,不过这种方式影响到了这个数据处理方案的一致性。举例略。

data_csv = pd.read_csv('example.csv')

结果和上面json结果结构是一致的。

sql,最复杂的一项,在 read_sql 之前,你还需要关心数据库连接问题,和要处理的 sql 语句问题。

这里我遭遇的坑在后者,如果你打算用 read_sql 打入 dataframe 的是一张大表,那么可以暂时放弃这个念头,因为在 read_sql 的过程中,虽然读表很快,但是写入 dataframe 的速度却受制于数据规模,个人建议是,如果人类没有耐心把这些数据一一读完,那么就不要打给 dataframe,至少在目前的 0.20 版本是这样。不过好在我们可以在语句上做处理,在 where 之后按需做一些 group 或者 limit。

#数据库连接部分import pymysqldef getConn(): connect_config = { 'host':'0.1.0.1', 'port':8888, 'user':'myname', 'password':'mypassword', 'db':'mydb', 'charset':'utf8' } conn = pymysql.connect(**connect_config) return conn#实例化连接对象conn = getConn()#语句sql = "select company, sum(totaAmount) from myTable where ... and ... group by company"#最熟悉的语法data_sql = pd.read_sql(sql,con=conn)

结果和上面 json 结果结构是一致的

这个环节最大的收益就是将所有来源的数据 dataframe 或者 series 化了,然后就可以统一用 pandas 功能来进行下一步数据处理工作。数据处理环节环节太庞大,本文不做描述。这里我们跳过了处理环节,直奔 excel。

xlsxwriter

这个包的作用就是用 python 语法来写 excel 文件,在把所有关心的数据都裁剪完成后,下一步就是把它们按需塞进 excel 中。

import xlsxwriter 之后,用三行代码就能用 python 创建一个 excel 文件。

workbook = xlsxwriter.Workbook('helloworld.xlsx')worksheet = workbook.add_worksheet(‘made by xlsxwriter’)workbook.close()

简单吧,看字面意思就能理解——先创建文件,再创建表单,最后关闭。这是官网的文档,但是却不完全适用目前的场景。因为,我们需要借助于 pandas 来写,而不是直接写。

df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})writer = pd.ExcelWriter('example2.xlsx', engine='xlsxwriter')df.to_excel(writer, sheet_name='Sheet1')writer.save()

这也是官网的文档,这两种方法处理 excel 都可以,区别是前者是可以方便地指定打在哪些格子里,而后者是将数据作为一个整体的打入 excel,这里更推荐后者。如果是多个不同数据源或者不同意义的数据,可以在 to_excel 的时候,新增一些 Sheet 来分类数据,sheet_name 参数,使得你能自如的掌控数据的内容。

所谓的塞数据也就是把你最终处理完的 dataframe 或者 series 交给了 excel,用 sheet_name 来管理不同意义的数据。

取数工作一般是周期性的,在数据需求没有产品化之前,需要利用更高效的工具来压缩取数环节所耗费的时间,将更多的精力留给数据分析之后结论以及建议上,毕竟分析才是数据价值。

上述方案比 excel+ 复制黏贴来的高效且可靠,既统一了数据采集方式,又使得取数过程可视化且易于维护。成本则是你需要花一些时间阅读 pandas 和 xlsxwriter 的文档,而 python 环境的搭建几乎是零成本的。

xlsxwriter文档://xlsxwriter.readthedocs.io

pandas文档://pandas.pydata.org/pandas-docs/stable/api.html

python如何安装panda数据库_python怎么安装pandas相关推荐

  1. python从oracle提取数据库_Python编程实战之Oracle数据库操作示例

    本文实例讲述了Python编程实战之Oracle数据库操作.分享给大家供大家参考,具体如下: 1. 要想使Python可以操作Oracle数据库,首先需要安装cx_Oracle包,可以通过下面的地址来 ...

  2. python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)

    开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍.Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且 ...

  3. python pip 安装与使用_Python pip 安装与使用(安装、更新、删除)

    pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. pip检测更新 命令:pip list –outdated pip升级包 命令:pip insta ...

  4. python为什么运行不了_python为什么安装了运行不了?

    有朋友在安装了Python之后发现不能正常使用,就说明安装过程出了问题.有同样问题的朋友和小编一起来了解一下吧. 实际上不能用.就不能算是安装成功.肯定是安装过程出错了.建议重新下载安装看看. 1.选 ...

  5. python的pyaudio教程入门_Python PyAudio 安装使用

    Python PyAudio安装: Python3.7 无法安装pyaudio pip install pyaudio 提示error: Microsoft Visual C++ 14.0 is re ...

  6. python安装第三方包_python 怎么安装第三方包

    使用Pip工具进行第三方包安装 Pip工具是Pytho自带的第三包安装工具,在pytho安装过程中已经安装完成,无需独立安装,附上python第三方安装包地址:https://pypi.python. ...

  7. python读取excel写入数据库_python实现读取excel写入mysql的小工具详解

    Python是数据分析的强大利器 利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理. 这里向大家分享python如何读取excel,并使 ...

  8. python自带的数据库_Python小白的数据库入门

    前言 SQL数据库数据库SQL语言入门SQL简介SQL 的作用 SQL语句分类 SQLite 数据库SQLite 中的数据类型 DDL语句创建表 删除表 修改表 DML语句添加 删除 修改 查询 Py ...

  9. python脚本监控mysql数据库_Python脚本监控mysql数据库,Python脚本监控mongo数据库

    任务:应帅气的领导要求,需要监控生产环境mysql和mongo数据库服务.不仅要connect successful还要进行数据交互进一步确认数据库服务正常. 思路: mysql和mongo 数据库i ...

最新文章

  1. 比赛杀器LightGBM常用操作总结!
  2. 关于SQL Server下无限多级别分类查询解决办法
  3. 关于学习Python的一点学习总结(49->迭代协议及迭代器的创建)
  4. c 多线程运行混乱_一篇文章读懂 Python 多线程
  5. Delphi 7 在程序中直接执行SQL脚本文件
  6. 固态器件理论(2)价和晶体结构
  7. python基础包括什么-Python基础教程 模块包含什么
  8. 模拟业务最小测试用例01
  9. Ubuntu下ICE-3.4.2的安装
  10. 用Java解决生产者-消费者问题
  11. 【数字逻辑 Verilog】全面剖析数据选择器——从基础到拓展,从理论到设计的实现,从表面到本质
  12. HTTP权威指南记录 ---- 网络爬虫
  13. vue router 跳转php,vue路由:路由跳转后怎么知道切换到那个router-view中
  14. 未来两年九大信息安全威胁
  15. C++ Primer 第5版--练习8.4
  16. matlab实现单峰物体复原--光栅投影-多频外差
  17. python 数据填充
  18. HUAWEI Mate40Pro解除账号忘记密码ID强制刷机鸿蒙系统激活锁能解开吗
  19. Idea 常用设置和快捷键
  20. cursor(鼠标手型)属性

热门文章

  1. Nat Micro | 沈建忠团队发现新型可转移的替加环素高水平耐药机制
  2. MetaPhlAn2-增强版宏基因组分类谱工具-一条命令获得宏基因组物种组成
  3. NC:MetaSort通过降低微生物群落复杂度以突破宏基因组组装难题
  4. matlab中sinks,MATLAB Simulink模块库详解(二)Sinks篇
  5. R语言ggplot2可视化NHANES数据集年龄和身高的关系并按照性别因子分析男性和女性的差异
  6. seaborn使用violinplot函数可视化分组小提琴图(Grouped Violinplot with Seaborn violinplot)并保存可视化结果
  7. pandas使用resample函数计算每个月的统计均值、使用matplotlib可视化特定年份的按月均值
  8. pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据
  9. seaborn使用boxplot函数进行箱图可视化(使用色彩调色板自定义设置箱图的颜色、在boxplot函数内设置palette参数自定义调色板)
  10. R语言使用magick包的image_border函数和image_background函数自定义图像的边界和背景(Change image border and background)