数据处理
micromicrofat
Python | Go | Deep Learning
展开
-
【JS | Py】如何获取对象(字典)的子集
今天在写前端接口请求代码时,出现接口因收到多余json键值对而导致的异常,故需要前端在发送请求前对发送的对象进行过滤。如果你的后端语言是Python,则可以使用如下方式在后端对接收到的json进行过滤。原创 2022-08-20 08:52:57 · 286 阅读 · 0 评论 -
【Py】对字典进行join连接操作
对键进行fulljoin全连接,对值进行rightjoin右连接,即需要从d1中找出d2中没有的键值对,添加到d2中。原创 2022-07-19 11:57:43 · 823 阅读 · 0 评论 -
正则工具网站
正则验证https://www.regexpal.com/nginx中可能会用到正则来匹配location,用下面的工具可以很方便的进行验证https://nginx.viraptor.info/原创 2021-04-23 11:41:32 · 736 阅读 · 0 评论 -
【Xpath】使用following-sibling获取后面的同级节点
以下面html代码为例子,尝试使用xpath提取“2022年06月07日”关键点在于使用“following-sibling”提取后面的同级节点参考:http://xpather.com/原创 2022-06-07 09:18:25 · 732 阅读 · 0 评论 -
【Py】对列表字典混合嵌套的对象进行遍历
今天项目需要对列表字典混合嵌套的对象进行key重命名,经过一番搜索后找到如下代码od = {'name': 'John', '1': [{'name': 'innername'}]}kd = { 'name': 'cname', '1': '2', 3: 'z' }def replace_keys(data_dict, key_dict): new_dict = { } if isinstance(data_dict, list): dict_value_list =原创 2022-04-27 16:59:59 · 525 阅读 · 0 评论 -
【Py】【Pandas】使用groupby实现类似Excel纵向合并单元格操作
最近一个项目需要使用Pandas对数据中某几列进行类似Excel中的合并单元格操作首先想到的是使用dataframe的set_index()方法通过测试,发现也确实能实现但是,一旦两条数据不相临,合并就失效了我们可以使用dataframe的groupby方法groupby更多是用在分组统计中,比如groupby().count(),而且groupby()后返回的是DataFrameGroupBy对象,而非DataFrame。但我们这里可以可以通过agg(lambda x: x)对分组后的数据原创 2022-04-22 11:34:45 · 4063 阅读 · 1 评论 -
【Py】去掉字典列表中某几个key的一种方法
今天在对字典构成的列表数据结构进行处理的时候,需要移除字典中的某几个key。可以使用map+filter的方式进行处理。for item in data: list(map(item.__delitem__, filter(item.__contains__,l)))但为什么要在map函数外套一层list,还不得而知参考:https://stackoverflow.com/a/30351294/7151777...原创 2022-04-18 14:16:10 · 689 阅读 · 0 评论 -
【Py】Python对列表按数量分割
def batch(iterable, n=1): l = len(iterable) for ndx in range(0, l, n): yield iterable[ndx:min(ndx + n, l)]for x in batch(list(range(0, 10)), 3): print(x)[0, 1, 2][3, 4, 5][6, 7, 8][9]参考:https://stackoverflow.com/a/8290508/7151原创 2022-02-24 16:58:44 · 2058 阅读 · 0 评论 -
【Py】获取列表字典中某键不重复的值
L = [ {"id": 1, "name": "john", "age": 34}, {"id": 1, "name": "john", "age": 34}, {"id": 2, "name": "hanna", "age": 30},]>>> {v["id"] for v in L}{1, 2}参考:https://stackoverflow.com/questions/11092511/list-of-unique-dictionaries原创 2022-02-10 09:01:26 · 657 阅读 · 0 评论 -
【Py】使用next函数实现空列表取值返回默认值
假设我们有如下数据a = [{'a':1, 'b': 1}, {'a':2, 'b':2}]a有两种情况:列表不为空且其中所有项的结构都相同空列表我们想输出键的列表for key in a[0].keys(): print(key)如果为空列表则报错a = []for key in a[0].keys(): print(key)IndexError Traceback (most recent ca原创 2022-01-05 17:02:25 · 740 阅读 · 0 评论 -
【Py】数据处理速度对比
@《Go语言设计与实现》在工作中难免要对数据进行各种各样的处理,在Python中,我接触到的数据处理工具包括Pandas、原生语法等等,在Pandas中我们需要对列表字典数据进行转换,转换为DataFrame,而使用原生语法则不需要进行转换。添加新列>>> myList = [{'a': 'A'}, {'b': 'B'}, {'c': 'C'}]>>> %timeit for item in myList: item['elem']='value'128 n.原创 2021-12-07 17:50:56 · 748 阅读 · 0 评论 -
【JS】递归获取树的所有叶子节点
《前后端分离》出差中,与前端直线距离约1000km假设我们从后端获取到的json数据如下{ "success": true, "code": "200", "message": "成功获取产品档案", "data": [ { "id": "01", "name": "01名称", "list": [ { "id": "001", "name": "001名称", .原创 2021-09-27 14:48:47 · 4637 阅读 · 0 评论 -
【Postman】使用pre-request script进行数据处理
项目中需要使用postman模拟业务请求, 每次请求需要header中生成6位随机字符串nonceheader中生成时间戳timestampheader中生成签名x-xlx-timestamp = sha1({body}:{timestamp}:{secret}:{nonce})body{ "op": "create", "data": { "data_id": dataId, // dataId = md5({timestamp}+{nonce}+{payload})原创 2021-09-06 11:42:02 · 2353 阅读 · 0 评论 -
【Py】自下而上递归搜寻路径
假设我们有如下行政区划数据[ { "code": "110000000000", "name": "北京市", "level": "1", "pcode": "0" }, { "code": "110100000000", "name": "市辖区", "level": "2", "pcode": "110000000000" }, { "code": "110101000000", "name": "东城原创 2021-07-30 14:56:22 · 210 阅读 · 0 评论 -
【Py】列表字典转为字典
假设我们有如下列表[ { "一级": "数码产品", "二级": "手机", "三级": "苹果", "四级": "iPhone11", "编码": "001" }, { "一级": "数码产品", "二级": "电脑", "三级": "苹果", "四级": "MacBook", "编码": "002" }, { "一级": "数码产品", "二级": "手机", "三级": "苹果原创 2021-07-14 15:10:48 · 436 阅读 · 0 评论 -
【Py】时间转换
import datetimefrom datetime import timezone, timedeltafrom dateutil import parserrfc3339转datetime(本地时区)>>> datetime.datetime.fromtimestamp(parser.parse('2021-05-19T10:10:10.000Z').timestamp()).astimezone(timezone(timedelta(hours=8)))dateti原创 2021-05-19 22:16:53 · 641 阅读 · 0 评论 -
使用pandas groupby的一个案例
mongodb中有下面一组数据,业务场景就不介绍了,看数据应该很好理解[ { "_id":"606fdd0805f5710008a82223", "brand_id":"1", "brand_name":"APPLE", "series_id":"11", "series_name":"iPhone", "product_name":"iPhone12", "cover":[原创 2021-04-22 10:38:06 · 190 阅读 · 0 评论 -
解决pandas报错:XLRDError: Excel xlsx file; not supported
用pandas读xlsx文件时报错:/usr/python3/lib/python3.8/site-packages/xlrd/__init__.py in open_workbook(filename, logfile, verbosity, use_mmap, file_contents, encoding_override, formatting_info, on_demand, ragged_rows, ignore_workbook_corruption) 168 # files原创 2021-03-05 08:36:34 · 15881 阅读 · 4 评论 -
基于Python3多进程(多线程)+多协程的数据并发处理模版
上一篇文章《基于Python3单进程+多线程+多协程的生产者-消费者模型示例代码》介绍了如何使用Python在单进程的情况下利用协程并发地处理数据,由于Python的GIL,所有代码只利用到了一个CPU核心,无法发挥多核心优势,所以我又做了一个多进程+多协程的模板,这里的代码不涉及具体业务。代码地址:https://github.com/MacwinWin/multiprocessing_asyncio_data_processing总览这里用到的库包括Python3自己的multiprocessin原创 2021-01-31 16:28:48 · 998 阅读 · 0 评论 -
Python3 JSON库json、orjson、rapidjson loads和dumps速度对比
项目中需要将json字符串反序列化成Python字典对象,但发现原生的json库速度非常慢,就想使用第三方库取代它,发现了orjson和rapidjson两个比较流行的第三方库,测试一下环境Python 3.8.6macOS 11.1orjson 3.4.6rapidjson 1.0介绍orjsonFast, correct Python JSON library supporting dataclasses, datetimes, and numpy号称Python下最快的jso原创 2020-12-29 18:21:38 · 2467 阅读 · 1 评论 -
使用正则环视匹配字符串中json结构体
最近项目中想要从字符串中提取出json结构,json结构的一个特点就是花括号嵌套,而且这里默认json内不存在空格,而不同的json间则存在空格,由此可以通过如下正则进行匹配(?=\{)[^\s]*(?<=\})原创 2020-12-12 10:29:58 · 2748 阅读 · 0 评论 -
df.to_csv时双引号导致的问题解决
在使用df.to_csv的时候出现了一些和双引号有关的问题构造测试数据,其中在value中包含双引号>>> import pandas as pd>>> df = pd.DataFrame([{"test": 'id={"name":"test"}'}])使用df.to_csv导出>>> df.to_csv("test.txt", sep='|',index=False,header=True)可以发现引号多了很多这是由于csv格式中原创 2020-12-11 19:13:29 · 7778 阅读 · 2 评论 -
Python使用re.sub进行匹配后替换
目标:":method: Put :scheme: http"替换为"method: Put scheme: http"方法>>> import re>>> line = ":method: Put :scheme: http">>> re.sub(r":\w+", lambda m: f"{m.group()[1:]}", line)'method: Put scheme: http're.match 从头进行查找,找不到就立原创 2020-12-08 17:35:59 · 730 阅读 · 0 评论 -
libpcap、struct、dpkt、scapy、pyshark五种方式获取pcap原始包的速度对比
import structfrom dpkt.pcap import Readerfrom scapy.all import PcapReaderimport pysharkfrom timeit import repeatdef orig_test(): fileName = "/Users/microfat/Downloads/new/N1N2.pcap" string_data = None with open(fileName, 'rb') as fpcap:原创 2020-11-27 11:08:47 · 2858 阅读 · 1 评论 -
Python提取pcap文件中原始数据
项目中需要根据pcap文件中原始数据进行数据核对,而使用wireshark查看太不方便所以就希望将文件中所有packet提取出来,汇成一个txt文件,方便查看import pysharkcap = pyshark.FileCapture('xxxxx.pcap', use_json=True, include_raw=True)with open('raw.txt', 'a') as f: for packet in cap: f.write(str(packet.get_raw_packe原创 2020-11-26 21:01:22 · 3639 阅读 · 0 评论 -
pandas 添加空列并赋空值
创建测试dataframe:>>> import pandas as pd>>> df = pd.DataFrame([{'a':1, 'b':2}, {'a':3, 'b':4}])>>> df a b0 1 2 1 3 4 添加两个空列>>> df[['c','d']]=df.apply(lambda x:('',''),axis=1,result_type='expand')>>原创 2020-08-26 10:54:40 · 13188 阅读 · 0 评论 -
xpath语法:不包含某属性
不包含id属性并且不包含class属性//tr[not(@id) and not(@class)]或//tr[not(@id) or not(@class)]参考:https://stackoverflow.com/a/2404138/7151777原创 2020-08-12 12:00:02 · 2089 阅读 · 0 评论 -
pyhanlp使用自定义词典进行分词
ubuntu 18.04.4 LTSpython 3.6.9pyhanlp 0.1.66hanlp jar 1.7.8hanlp data 1.7.8在没有使用自定义词典时:>>> from pyhanlp import HanLP>>> print(pyhanlp.HanLP.segment('大数据技术'))[大/a, 数据/n, 技术/n]可以发现’大’和’数据’被分开了,而我们希望’大数据’是一个词,这时就需要我们自定义词典,将’大数据’放.原创 2020-08-09 08:58:53 · 1105 阅读 · 0 评论 -
pandas报cannot set a frame with no defined index and a scalar的一个原因
使用pandas时遇到‘ValueError: cannot set a frame with no defined index and a scalar’错误,其中一个原因可能是由于你正在对一个空的dataframe进行操作>>> import pandas as pd>>> df = pd.DataFrame()>>> df.loc[:, 'test'] = 1ValueError: cannot set a frame with no de原创 2020-08-05 10:39:08 · 13795 阅读 · 0 评论 -
pandas导出到Excel报URLS数量超出65530警告
今天在整理数据时报警告:>>> df_all.to_excel('xxxx.xlsx', index=False)/home/microfat/.local/lib/python3.6/site-packages/xlsxwriter/worksheet.py:945: UserWarning: Ignoring URL 'https://xxxxxxx' since it exceeds Excel's limit of 65,530 URLS per worksheet.这是由原创 2020-08-02 17:12:49 · 4466 阅读 · 2 评论 -
解决pandas.read_excel报错‘Must explicitly set engine if not passing in buffer or path for io.‘
希望通过requests获取到xls,再通过pandas.read_excel转换为dataframe>>> res = requests.get(url)>>> df = pd.read_excel(result.content)以上代码在本机上运行没有问题,但是,通过docker部署到服务器时报错: File "/usr/lib/python3/dist-packages/pandas/util/_decorators.py", line 208, in原创 2020-07-27 14:45:43 · 1749 阅读 · 3 评论 -
beautifulsoup获取同级标签
<p class="fp"> <span class="label">职能类别:</span> <a class="el tdn" href="https://jobs.51job.com/guangzhou/peixunjiangshi/">培训讲师</a> <a class="el tdn" href="https://jobs.51job.com/guangzhou/zhijijiaoshi/">职业技术教师</a&g原创 2020-07-26 19:55:42 · 1869 阅读 · 0 评论 -
pandas删除列名中包含某些字符的列
>>> df = df[df.columns.drop(list(df.filter(regex='Test')))]参考:https://stackoverflow.com/a/44272830/7151777原创 2020-07-17 11:47:11 · 3602 阅读 · 1 评论 -
使用pandas.DataFrame.to_sql时报错Operand should contain 1 column(s)
在使用to_sql写入数据库时,出现报错sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1241, 'Operand should contain 1 column(s)')是由于dataframe中存在值为列表的情况,需要将列表转为字符串df.loc[:, ‘xxxx’] = df_main[‘xxxx’].astype(str)...原创 2020-06-05 17:49:17 · 1113 阅读 · 4 评论 -
python将包含子列表的列表展开
有一个列表>>> [[1,2,3],[4,5,6]]我们希望将子列表展开>>> [1,2,3,4,5,6]方法:>>> [item for sublist in _list for item in sublist]参考:https://stackoverflow.com/a/952952/7151777原创 2020-05-27 09:57:22 · 651 阅读 · 0 评论 -
python sqlalchemy中执行mysql操作需转义百分号
如果构建的sql中包含百分号,如:INSERT INTO child (pk, data_id, material_type) VALUES ('5e995e464bec3a00067402f4_0', '5e995e464bec3a00067402f4', '28%');则会报错:ValueError: unsupported format character '?'搜索后需要将’%...原创 2020-05-07 17:26:30 · 2480 阅读 · 0 评论 -
python执行非查询类sql时最好使用conn.execute
在使用read_sql_query时可能会报错:>>> from sqlalchemy import create_engine>>> import pandas as pd>>> engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(user, password, ...原创 2020-04-23 16:16:21 · 1413 阅读 · 0 评论 -
DataFrame格式化为sql
今天遇到一个问题,需要将DataFrame中数据格式化为sql语句df = pd.DataFrame([{'a':1, 'b':2, 'c':'3'}])sql = "UPDATE table_name SET a=1, b=2, c='3' WHERE id=1"解决方案:>>> import pandas as pd>>> df = pd.Dat...原创 2020-04-23 14:38:36 · 603 阅读 · 0 评论 -
python中rfc3339转时区
今天遇到一个关于使用python将rfc3339格式转为本地时区的情况:2020-04-21T01:15:44.706Z转为2020-04-21 09:15:44有两种方式:使用pytz.timezonefrom pytz import timezoneimport datetimedef convert(rfc3339): converted_date = dat...原创 2020-04-22 11:56:47 · 2135 阅读 · 0 评论 -
pandas添加自增列的两种方式
有时候我们需要添加一列自动增加数字的列,可以用下面两种方法:第一种>>> import pandas as pd>>> df = pd.DataFrame([{'name':'apple', 'count':4},\ {'name':'orange', 'count':2}])>>> d...原创 2020-04-07 16:05:41 · 9777 阅读 · 0 评论