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

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

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

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

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

这个操作有一些缺陷:

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

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

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

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

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

pandas 良好的数据读取接口

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 pymysql

def 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 环境的搭建几乎是零成本的。

用python分析excel数据_用 python 做数据分析:pandas 的 excel 应用初探相关推荐

  1. python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  2. python分析每月销售数据_利用Python进行某单品销售数据分析

    本篇文章将利用Python工具对一份某商品的销售数据进行如下几个方面的分析,结合业务场景,构件常用业务指标,以从销售数据中挖掘出其潜在的商业价值,促进运营.用户消费趋势分析: 用户个体消费分析: 用户 ...

  3. python处理nc数据_利用python如何处理nc数据详解

    利用python如何处理nc数据详解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用python如何处理nc数据详解.txt ] (友情提示:右键点上行txt ...

  4. python读取游戏数据_利用Python对游戏销量进行数据分析

    一.提出问题 1. 2005-2017年全球销量的top20的游戏是什么? 2. 2005-2017年各游戏生产商的销量对比,并使用堆叠柱状图进行可视化. 二.理解数据 数据大小:16599条 数据来 ...

  5. python处理行情数据_利用Python脚本来获取期货行情数据

    因为自己最近在学习做期货交易,想要下载期货的行情数据来做分析.有一些交易软件是可以导出数据的,但是导出的过程还是需要很多的手工操作,自己在想能不能通过Python程序来实现呢. 新浪期货数据接口介绍 ...

  6. 用python分析拼多多_利用Python分析拼多多上卖的最热的产品, 结果出乎大多数人意料!...

    一.缘起 当然,我们先走第一步,开个头.现在,我们就从一个切面来窥探下. 二.我们获取了多少商品条目? 三.这些商品总共卖出了多少钱? 四.销售额前十的品类是哪些? 拼多多的主打品类是什么呢? 一级类 ...

  7. python分析犯罪数据_使用 SparkSQL 分析纽约市犯罪数据

    在实验<使用 SparkSQL 分析纽约市犯罪数据>时候 创建 DataFrame 并注册成表,报错! sqlContext.createDataFrame(Crimes).registe ...

  8. python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法

    我在用Python在Twitter上做一个关于用户社交关系的研究.在 问题是"什么是最快的方式抓取某个用户的关注者信息" 我搜索了很多信息,目前正在使用Tweepy:c = twe ...

  9. python分析鸢尾花数据_鸢尾花(iris)数据集分析

    Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例.数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度.花萼宽度.花瓣长度. ...

最新文章

  1. 2021年大数据Hadoop(十四):HDFS的高可用机制
  2. 出去之后,好好做人!华为两年,苦乐参半!
  3. spring源码编译和导入eclipse
  4. python怎么发音乐到朋友圈_只要三步,用Python轻松制作短视频,你也能在朋友圈傲娇一把!...
  5. linux shell 之 grep
  6. java 准备 解析_深入理解JAVA虚拟机学习笔记24——类加载的准备和解析
  7. jsoup Java HTML解析器
  8. Java定时任务(一) Timer及TimerTask的案例解析及源码分析
  9. 使用http-server搭建web服务器
  10. 西华师范大学计算机专业保研资格,西华师范大学计算机学院 计算机应用技术保研条件...
  11. 转:Apple的App Analytics统计平台你必须知道的
  12. vb html编程,VB编程:vb打开网页代码
  13. 台式计算机有无线网卡吗,台式机无线网卡怎么用?图解在这自己收藏
  14. 综合1:stm32F4,ATKESP8266wifi,DS1302,AT24C02,KEY状态机,LCD屏幕320*240
  15. 《历史是个什么玩意儿》袁腾飞最新语录
  16. Dynamics 365 设置SMTP邮箱配置时凭据为灰色无法编辑的解决方法
  17. 关于录制短视频点播不能播放问题的总结
  18. 全面吃透JAVA Stream流操作,让代码更加的优雅
  19. [jzoj 4742] 单峰 {快速幂}
  20. 浅析MySQL死锁检测

热门文章

  1. ROS Navigation之amcl源码解析(完全详解)
  2. SpringBoot207 - 集成 spring data elasticsearch
  3. 冒泡排序的实现,及其效率具象化
  4. 顶象入选“工控安全推进分会” 助力贯标试点示范
  5. 《Real-Time Rendering 4th Edition》全文翻译 - 第3章 图形处理单元(GPU)(下)3.7 ~ 3.10
  6. 如何恢复android误删的文件夹,手机里的文件删了怎么恢复?这里有最全面的恢复方法...
  7. 前后端分离项目,vue+uni-app+php+mysql外卖点餐小程序系统设计与实现
  8. 手机长曝光是什么意思_干货!教你实现手机长曝光拍摄~
  9. zip 打包_一人一首流行最新歌曲精选MP3打包云盘ZIP下载
  10. 一台云服务器能做什么?