Data Downloader

背景

有时候需要从数据库中把数据导出来查看,可以在编辑器中直接拷出来或者导出来。

又或者像 weekly/monthly 的数据,我偶尔导一次,不想再打开 sqldeveloper 去操作 Oracle,所以就写了类似下面的工具。

Read more

pyodbc unicode issue

这两天SRD这边有文件中存在乱码,导致那一行数据插入失败。

下面是我晚上在家里电脑重现的时候信息,所以是中文的:

1
pyodbc.Error: ('HY090', '[HY090] [Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 (0) (SQLBindParameter)')

我一开始以为是这列数据的字符串长度过长,有1万多个字符,但是我用别的值试了一下,是没有问题的。

然后我尝试着使用print输出来看一下,竟然直接error了。
下面是例子:

1
2
3
text = "you are right \udef6 thanks"
print(text)
# UnicodeEncodeError: 'utf-8' codec can't encode character '\udef6' in position 14: surrogates not allowed
Read more

My 2019

又是 一年的末尾,冷热交替,雨下个不停,今天稍稍停歇。

今天是冬至,包了一些饺子,韭菜鸡蛋馅的。试着做肉圆,但不是很成功。

01

今年过的很“困惑”,不是很顺心。我一直在反思,到底是哪里的问题。

来 PXO 快近一年。刚转组的那一段时间,特别的不适应,很困惑,想不通。

我是谁?
我在哪里?
我在干什么?

Read more

Text Similarity

背景

在工作中有需要从 comment 中提取所需要的值,是通过前缀来判断的,由于注释是人为输入的,所以很多时候会有一些拼写错误。
目前是通过写死前缀的字符串依次遍历来达到目的。

比如我们要的是 as of date mm/dd/yyyy,但也想要接受 as of data mm/dd/yyyy 那这样的话,就可以兼容许多拼写的错误。

字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。

评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein 距离
海明距离是编辑距离的一种特殊情况,只计算等长情况下替换操作的编辑次数,只能应用于两个等长字符串间的距离度量。

其他常用的度量方法还有 Jaccard distance、J-W 距离(Jaro–Winkler distance)、余弦相似性(cosine similarity)、欧氏距离(Euclidean distance)等。

Read more

openpyxl with big data

背景

最近写了一个脚本,用 openpyxl 从 sql server 数据库中读取数据,使用 template 文件,将数据填充进去,生成最后的 daily report。

使用 openpyxl 来操作 excel,很方便,但发现当要写入大量数据的时候,时间非常慢,而且非常占内存。

最直接的原因是 openpyxl 会将读写过的 cell 都加载在内存中方便后面 update,不会释放这些 cell 而会一直驻留在内存中。

所以如果单纯写的话建议使用 xlrd,而且 pandas 有 to_csv/to_excel 这样的直接的方法。

但是因为我需要使用模板,在研究后发现 openpyxl 有 read_only/write_only 的模式,可以满足我的需求。
(一定要保证安装了 lxml 库,不然就算使用 write_only 模式,也一样会点用大量占存。)

Note:针对 office2007 以后的版本,xlsx 文件上限行数大约为 100 多万条的样子。

Read more

Compare csv file

背景

最近有个需求是对比 CSV 文件,其中一个为 Source, 另一个是系统生成的,理论上要满足 mapping 关系。

现在想要用 python 来验证一下生成的文件对应关系是正确的。

Read more

Compare data by pandas

背景

最近的项目会根据一些数据的值来得到一定的结果,用户原来使用 python 直接生成 excel 文件,我们相当于移植到数据库中,使用 SP 去做业务逻辑。

所以理论上最后的结果需要一致,之前没有做全部数据的对比,这次相关 features 由我在改动,所以无论如何还是要保证数据能对比上,所以就写了相关的脚本来处理。

Read more

Count data rows in excel

背景

今天手动给用户提供了 Report,其中需要对 excel 中的数据与数据库中的进行对比。数据文件不少,我要一个个打开去数,真的很费时间。

想要写一个小脚本,但发现没那么快,还是先手动给做了,写一个还是挺快的。

Read more

Recent Summary 08/28/2019

搬家

最近从物华搬到了政苑B区,就在银泰的边上,房租果断的长了一些。因为是年付,所以优惠了些,还能接受,不过来年就不知道还有没有优惠了。

还好有XM帮忙收拾,周末的时间就弄好了。如果是我自己一个人的话,很多东西都不知道要塞在袋子里多久才会收拾出来,哈哈哈。

搬家是真的折腾。原来的物化不过也只住了一年而已。被迫的搬家是租房最大的痛点之一。

Read more

Process data by pandas

背景

最近做了一些数据处理方面的事,用到了 pandas,记录一下。

  • python 3.6.5
  • pandas 0.25
  • xlrd 1.2.0

默认包引入:

1
import pandas as pd
Read more