![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
米Py
一个偏执的Pyhtoner! 专业的数据工程师,从事数据采集,清洗,存储,分析,挖掘,展示全流程开发工作。
展开
-
一个逗号(,)引起的BUG (list秒变tuple)
昨天工作,突然发现之前好好的list,在赋值给新变量后居然类型变了,一个好好的list几分钟不见妥妥的叛变了,变成了tuple,由此,一场闹剧开始上演… 前情回要:话说有一个类对象内有一方法如下:def call_frequency(self, data): ... return list返回的是一个list,内部是一个个dict,结构如下:[{x...原创 2018-08-04 04:57:08 · 1872 阅读 · 2 评论 -
Python requests post 提交form-data表单
问题: 对接接口,发现对方的接口使用form-data进行数据提交,直接使用requests库的data参数对接,会报参数错误:params = { 'timestamp':timestamp, 'nonce':nonce, 'apikey':APIKEY, 'signature': signature}data = { 'name': n...原创 2018-08-22 14:03:24 · 125762 阅读 · 1 评论 -
python 使用requests请求https输出警报InsecureRequestWarning
问题描述 使用requests请求https时会输出警告: python2.7/site-packages/requests/packages/urllib3/connectionpool.py:852: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verific...原创 2018-08-22 14:19:50 · 2381 阅读 · 0 评论 -
pandas对时间索引进行分割(truncate requires a sorted index)
情景开发时碰到需要截取近1个月,近3个月,近6个月的数据,进行统计分析使用truncate对df进行数据集截取,遇到截取数据不符合预期,且若时间序列无序会抛出异常挖一挖使用truncate时的索引必须先进行排序,不然会报错源码一进truncate方法就会检测index是否经过排序,没有排序,报错极端情况,若时间序列只有两个的时候不会报错,但是结果会不符合预期预期是截取掉201...原创 2018-10-15 19:28:12 · 5913 阅读 · 1 评论 -
获取6个月前首日的时间戳
获取6个月前首日的时间戳先获取月份在获取首日再转换为时间戳import time,datetimefrom dateutil.relativedelta import relativedeltatime.mktime(time.strptime((datetime.today() + relativedelta(months=-5)).strftime('%Y-%m-01 00:0...原创 2018-10-31 19:23:56 · 1523 阅读 · 0 评论 -
Python 获取时间段内的随机时间(list)、时间戳(list)
获取两个时间点间的随机时间方案一# python2 不兼容,python3正常import datetime,randomdef randomtimes(start, end, n, frmt="%Y-%m-%d"): stime = datetime.datetime.strptime(start, frmt) etime = datetime.datetime.strp...原创 2018-10-31 19:35:06 · 12058 阅读 · 2 评论 -
时间戳(timestamp)、时间字符串(datetimestr)、时间(datetime)之间的相互转换
总览# 时间戳转时间字符串(timestamp to datetimeStr)def timestampToDateStr(stamps, frmt='%Y-%m-%d %H:%M:%S'):# return time.strftime(frmt, time.localtime(stamps)) return datetime.fromtimestamp(stamps).st...原创 2018-10-31 20:03:31 · 6220 阅读 · 0 评论 -
Pandas auto convert list to tuple error
Pandas 自动转格式(list to tuple)问题问题描述一向稳定的线上,突然报出一个错误:AttributeError: 'tuple' object has no attribute 'remove'意思是元组(tuple)没有remove方法,但是代码逻辑设计的是针对列表(list)使用的,且安全生产了很久很久……结果经过不懈努力,目前暂时结论:pandas在处理某...原创 2018-11-07 19:17:15 · 577 阅读 · 0 评论 -
报错:unzip2: command not found
问题安装anaconda时,报错:bunzip2: command not found解决办法安装bzip2,yum install -y bzip2原创 2018-11-13 17:47:41 · 422 阅读 · 0 评论 -
一句话系列:字符串清洗(邻位去重&去所有空格)
一句话系列:字符串清洗(邻位去重&去所有空格)功效:邻位去重去除所有空格符import itertoolsdata = "测测 试试试""".join(([i[0] for i in itertools.groupby("".join(data.split()))]))...原创 2018-11-19 18:47:33 · 691 阅读 · 0 评论 -
一句话系列:列表(list)去除所有指定元素
一句话系列:列表(list)去除所有指定元素功效:迅速从列表中剔除不需要的数据from operator import is_notfrom functools import partialL = [0, 23, 234, 89, '', 0, 35, 9]print([i for i in L if i not in [None]])print(list(filter(parti...原创 2018-11-19 18:53:17 · 3641 阅读 · 0 评论 -
白话文系列:正则split&字符串split
白话文系列:re.split&str.split正则split:一次能处理多个更灵活能保留分割符字符串split:简单好用a ="王大锤"b = "*大*"import repat = u"([\u4e00-\u9fff]+)"pattern = re.compile(pat)results = pattern.findall(b)print(re...原创 2018-11-19 19:05:55 · 358 阅读 · 0 评论 -
mongo insert_many BulkWriteError
问题: 在对mongo插入数据时,报写入问题,报错信息如下:Traceback (most recent call last): File "/root/crs/call_history_crawler/worker/communicate.py", line 149, in insert_db_data if db[table].insert_many(data):...原创 2018-08-12 19:27:46 · 2320 阅读 · 1 评论 -
Python JSON文件 读写(缩进、排序、格式化)
写文件,格式化 indent: 缩进(一般填4,缩进4格); sort_keys: 是否排序(默认False–不排序)def write_info(file_name, file_info): with open('{}.json'.format(file_name), 'w') as fp: json.dump(file_info, fp, ind...原创 2018-08-12 19:24:58 · 17018 阅读 · 2 评论 -
Python 三元表达式(条件表达式)
条件表达式: 使用一行代码快速判断,替换复杂的多行if语句,使得代码简单可维护。# 如果条件为真,返回真,否则返回假condition_is_true if condition else condition_is_falseis_fat = Truestate = "fat" if is_fat else "not fat"元组条件表达式:# (返回假...原创 2018-08-12 19:18:19 · 11658 阅读 · 0 评论 -
从dict中按需提取子集(Python dict)
需求给你一个条件,从已给字典中构造一个符合条件的新字典,为原字典的子集。解决方案使用字典推导式:prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}# Make a dictionary of all prices o...原创 2018-08-04 05:35:00 · 9238 阅读 · 0 评论 -
python set 交集、并集、差集
交集(intersection)example:valid = set(['yellow', 'red', 'blue', 'green', 'black'])input_set = set(['red', 'brown']) print(input_set.intersection(valid))### 输出:set(['red'])# 方法一:>>> a...原创 2018-08-04 23:38:16 · 40333 阅读 · 0 评论 -
Python try...except使用bug
情景描述 Python开发时,使用try…except进行异常捕捉; 容易忽略这样一个问题:try 里面成功执行的代码就是成功的,如果报错,并不会回滚,只会把失败和未执行的代码替换成except里面的代码继续执行代码如下: 结果: 可见,b是成功执行了,字典也是成功插入一个字段的。...原创 2018-08-05 00:15:23 · 534 阅读 · 0 评论 -
python 迭代器(iterators)&生成器详解(Generators)
可迭代对象(iterable): 能提供迭代器的任意对象;只要定义了一个迭代器的iter方法或定义了支持下标索引的getitem方法,那就是一个可迭代对象。迭代器(iterators): 任意对象,只要定义了next或者next方法,那就是一个迭代器迭代(iteration): 从某个地方(如列表)取出一个元素的过程;使用一个循环来遍历某个东西(如列表)...原创 2018-08-06 21:37:27 · 717 阅读 · 0 评论 -
python rrule 月份日期超限bug
http://dateutil.readthedocs.io/en/stable/_modules/dateutil/rrule.html月份日期超限 BUG Per RFC section 3.3.10, recurrence instances falling on invalid dates and times are ignored rather than coerced:...原创 2018-08-06 21:44:42 · 1166 阅读 · 2 评论 -
Python代码调试 Pdb(Python debugger)
Pdb(Python debugger): 主旨:方便在开发、测试、DEBUG时的代码调试命令行运行: 直接在运行脚本时 添加-m pdb参数,如下:python -m pdb my_script.py脚本内部运行: 在代码中需要调试处添加如下代码,正常执行脚本:import pdb;pdb.set_trace()常用命令: 进入p...原创 2018-08-12 10:39:33 · 517 阅读 · 0 评论 -
Python string 去掉标点符号 最佳实践
Python 字符串去掉标点符号最佳实践方法一: str.isalnum: S.isalnum() -> bool Return True if all characters in S are alphanumeric and there is at least one character in S, False otherwise.>>&a原创 2018-08-12 10:44:27 · 42401 阅读 · 7 评论 -
Python中给数值型str前面加0&保留小数位(The most pythonic way to pad zeroes to string)
The most pythonic way to pad zeroes to stringStrings:>>> n = '7'>>> n.zfill(3)>>> '007'>>> '{:0>3}'.f原创 2018-08-12 10:55:28 · 2373 阅读 · 0 评论 -
pandas 获取不符合条件的dataframe
search for “does-not-contain” on a dataframe in pandas 问题来源:做项目时,想拿到不符合条件的所有数据,比如:通话类型有好多种(主叫、被叫、呼转……),现在想分析所有非主叫数据,那么问题就来了。方法一:df[~df.col.str.contains(word)]>>> df = pd.DataFr...原创 2018-08-12 10:57:21 · 7895 阅读 · 2 评论 -
Python args and kwargs解析
*args: 传递一个非键值对的可变数量的参数列表给一个函数。def test_var_args(f_arg, *argv): print("first normal arg:", f_arg) for arg in argv: print("another arg through *argv:", arg)test_var_args('yas...原创 2018-08-12 10:58:45 · 465 阅读 · 0 评论 -
profile cProfile 效率分析
功效:对脚本进行简单的效率分析并生成分析图表test.py:import osimport sysdef process(filename): print filenamefor (dirpath, dirnames, filenames) in os.walk(sys.argv[1]): for filename in filenames: ...原创 2018-08-12 11:05:05 · 1006 阅读 · 0 评论 -
Python 三大函数(Map、Filter、Reduce)
Map 将一个函数映射到一个输入列表的所有元素上。items = [1, 2, 3, 4, 5]squared = list(map(lambda x: x**2, items))# output:[1, 4, 9, 16, 25]map作用于一列表的函数:def multiply(x): return (x*x)def add(x): ...原创 2018-08-12 19:11:42 · 1376 阅读 · 0 评论 -
一句话系列:姓名模糊匹配算法
一句话系列:姓名模糊匹配算法关键点:使用相同字符做切片,根据切片结果,进行匹配(split)功效:对中文姓名进行模糊匹配import relist_ = [("赵紫斌", "赵*斌"), ("李方雪", "李**"), (原创 2018-11-19 19:14:52 · 4794 阅读 · 0 评论