首页
关于
Search
1
git lg彩色显示日志
24 阅读
2
在 Ubuntu 22.04 LTS 中安装 Docker
19 阅读
3
CentOs/Ubuntu搭建上网x-ui
18 阅读
4
git使用多个源和多个分支
15 阅读
5
git保存账号密码
14 阅读
默认分类
网站搭建
Windows
Linux
Docker
OpenWrt
Hackintosh
Git
Python
Pandas
Web开发
JavaScript
FFmpeg
Demo
工具
刷机
油猴脚本
Excel
Chrome Extension
登录
Search
标签搜索
Pandas
读取
时区
Chrome
centos8
求和
Nginx
Typecho
404
csv
国际站
询盘导出
油猴脚本
bbr
Ubuntu
远程桌面
日志
log
数据清洗
打印机
野生程序猿
累计撰写
151
篇文章
累计收到
0
条评论
首页
栏目
默认分类
网站搭建
Windows
Linux
Docker
OpenWrt
Hackintosh
Git
Python
Pandas
Web开发
JavaScript
FFmpeg
Demo
工具
刷机
油猴脚本
Excel
Chrome Extension
页面
关于
搜索到
151
篇与
的结果
2022-05-23
Pandas常用函数之rename()
df.rename()df.rename(mapper=None,index=None,columns=None,axis=None,copy=True,inplace=False,level=None)index,columns:表示待转换的行索引和列索引。axis:表示轴的名称,可以使用index或columns,也可以使用数字0或1。copy:表示是否复制底层的数据,默认为False。inplace:默认为False,表示是否返回新的Pandas对象。如果设为True,则会忽略复制的值。 //相当于是否创建副本修改数据,还是直接在原数据直接修改level:表示级别名称,默认为None。对于多级索引,只重命名指定的标签。import pandas as pd #重命名轴索引 df=pd.DataFrame({'A':['A0','A1','A2','A3'] ,'B':['B0','B1','B2','B3'] ,'C':['C0','C1','C2','C3']}) df.rename(columns={'A':'a','B':'b','C':'c'},inplace=True) #columns可以接受一个字典, 键为 旧索引 ,值为 新索引 df.rename(index={1:'a',2:'b'}) # index 也可以接受一个字典,键为 旧索引 ,值为 新索引可以用lower方法把字符串变成小写:import pandas as pd jk=pd.DataFrame({'A':['A0','A1','A2','A3'] ,'B':['B0','B1','B2','B3'] ,'C':['C0','C1','C2','C3']}) jk.rename(str.lower,axis='columns') #使用str中的lower()方法把字符串变成小写,根据 axis 指定变得地方,是要求是字符串才能变
2022年05月23日
3 阅读
0 评论
0 点赞
2022-05-21
Tampermonkey阿里巴巴国际站批量导出之[询盘分配记录]
// ==UserScript== // @name 阿里巴巴国际站批量导出分配记录 // @namespace http://tampermonkey.net/ // @version 2.1.3 // @description 在询盘分配页面,搜索按钮后面插入一个下载按钮,点击可以从头开始记录每个客户的分配记录,最终输出成JSON文件自动下载。再结合Python程序生成Excel表格。 // @author Mike // @icon http://is.alicdn.com/favicon.ico // @match https://message.alibaba.com/message/* // @grant GM_addStyle // ==/UserScript== 'use strict'; var globalAllresult = []; var downloaded = false; var repeated = false; // 下面这段代码生成下载方式 (function(console){ console.save = function(data, filename){ if(!data) { console.error('Console.save: No data found!') return; } if(!filename) filename = 'console.json' if(typeof data === "object"){ data = JSON.stringify(data, undefined, 4) } var blob = new Blob([data], {type: 'text/json'}), e = document.createEvent('MouseEvents'), a = document.createElement('a') //var text = await blob.text() a.download = filename a.href = window.URL.createObjectURL(blob) a.dataset.downloadurl = ['text/json', a.download, a.href].join(':') e = new MouseEvent ("click"); //e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) !!!deprecated!!! a.dispatchEvent(e) } })(console) // 分配记录收集方法 function collectItems(){ var contactEmails = document.getElementsByClassName('contact-email'); var contactNames = document.getElementsByClassName('contact-name'); var assignContents = document.getElementsByClassName('assign-content'); var assignDates = document.getElementsByClassName('assign-date'); var assignTimes = document.getElementsByClassName('assign-time'); var productWrapprs = document.getElementsByClassName('product-wrappr'); var result=[]; for (var i = 0; i < contactEmails.length; i++) { console.log(contactEmails[i].innerText,contactNames[i].innerText) var url_pic = '' if ("product-img" == productWrapprs[i].childNodes[0].classList.value){ url_pic = productWrapprs[i].childNodes[0].src } result.push({ 'contactEmail':contactEmails[i].innerText, 'contactName':contactNames[i].innerText, 'assignContent':assignContents[i].innerText, 'assignTime':assignDates[i].innerText + ' ' + assignTimes[i].innerText, 'productWrappr':productWrapprs[i].innerText, 'url_pic':url_pic }); } return result; } //与元数据块中的@grant值相对应,功能是生成一个style样式 GM_addStyle('#down_contacts_btn{color:#fb7d3c;}'); //下载按钮的html代码 var down_btn_html = '<span>'; down_btn_html += '<a href="javascript:void(0);" id="down_contacts_btn" class="S_txt2" title="一直点击,直到翻页到最后一页,自动下载,若无效请刷新重试">导出分配记录</a>'; down_btn_html += '</span>'; var inner = document.createElement('span'); inner.innerHTML = down_btn_html; //将以上拼接的html代码插入到网页标签中 var ul_tag = document.getElementsByClassName('search-box')[0].parentNode; if (ul_tag) { ul_tag.append(inner); } var btn = document.getElementById('down_contacts_btn'); btn.onclick = function(){ if (repeated) { confirm('请刷新页面后重试'); return; } if(downloaded) { repeated = true; return;//防抖,防止多次下载,刷新重启 } var nextBtns = document.getElementsByClassName('next-btn-helper'); var n = nextBtns.length-1; if (nextBtns[n].innerText != '下一页') { n = n-1; } console.log(nextBtns[n].innerText); var nextBtn = nextBtns[n].parentNode if(!nextBtn.disabled) { console.log('next page'); let result = collectItems(); globalAllresult.push(result); nextBtn.click(); }else{ console.log('page end'); let result = collectItems(); globalAllresult.push(result); globalAllresult = [].concat(...globalAllresult); console.save(globalAllresult,"Inquiry&TM.json"); downloaded = true; } // 下载数据,第一个参数是数据对象,第二个参数是要保存成文件的名字。 }
2022年05月21日
5 阅读
0 评论
0 点赞
2022-05-20
Pandas常用函数之read_csv()
pd.read_csv()pd.read_csv( filepath_or_buffer: 'FilePathOrBuffer', sep=<no_default>, delimiter=None, header='infer', names=<no_default>, index_col=None, usecols=None, squeeze=False, prefix=<no_default>, mangle_dupe_cols=True, dtype: 'DtypeArg | None' = None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal: 'str' = '.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, encoding_errors: 'str | None' = 'strict', dialect=None, error_bad_lines=None, warn_bad_lines=None, on_bad_lines=None, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options: 'StorageOptions' = None, )分隔符 sep# str, default ‘,’ # 数据分隔转化是逗号, 如果是其他可以指定 pd.read_csv(data, sep='\t') # 制表符分隔 tab pd.read_table(data) # read_table 默认是制表符分隔 tab pd.read_csv(data, sep='|') # 制表符分隔 tab pd.read_csv(data,sep="(?<!a)\|(?!1)", engine='python') # 使用正则引擎 engine使用的分析引擎,可以选择C或者是python。C 语言速度最快,python 的功能最为完善。# engine=None, {‘c’, ‘python’, ‘pyarrow’}, optional pd.read_csv(data, engine='c')列数据处理 converters对列的数据进行转换,列名与函数组成的字典。key 可以是列名或者列的序号。# dict, default None data = 'x,y\na,1\nb,2' def foo(p): return p+'s' # x 应用函数, y 使用 lambda pd.read_csv(StringIO(data), converters={'x': foo, 'y': lambda x: x*3}) # 使用列索引 pd.read_csv(StringIO(data), converters={0: foo, 1: lambda x: x*3})编码 encoding指定字符集类型,通常指定为'utf-8'。 参见 Python标准编码列表 。如果不知道文件是什么编码,可以借助 codecs 和 chardet 这两个三方库在检测文件的编码方式。# str, default None pd.read_csv('gairuo.csv', encoding='utf8') pd.read_csv("gairuo.csv",encoding="gb2312") # 常见中文 # 其他常用编码 ISO-8859-1 latin-1 gbk
2022年05月20日
2 阅读
0 评论
0 点赞
2022-05-19
Pandas常用函数之read_excel()
1.读取表格pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds) #openpyxl,表格 sheet_name可以指定 Excel 文件读取哪个 sheet,默认取第一个。# str, int, list, or None, default 0 pd.read_excel('tmp.xlsx', sheet_name=1) # 第二个 sheet pd.read_excel('tmp.xlsx', sheet_name='总结表') # 按 sheet 的名字 # 取第一个、第二个、名为 Sheet5 的,返回一个 df 组成的字典 dfs = pd.read_excel('tmp.xlsx', sheet_name=[0, 1, "Sheet5"]) dfs = pd.read_excel('tmp.xlsx', sheet_name=None) # 所有的 sheet dfs['Sheet5'] # 读取时按 sheet 名表头 header# int, list of int, default 0 pd.read_excel('tmp.xlsx', header=None) # 不设表头 pd.read_excel('tmp.xlsx', header=2) # 第三行为表头 pd.read_excel('tmp.xlsx', header=[0, 1]) # 两层表头,多层索引列名/表头名 names默认取数据中默认的表头名称,可以重新指定。# array-like, default None pd.read_excel('tmp.xlsx', names=['姓名', '年龄', '成绩']) pd.read_excel('tmp.xlsx', names=c_list) # 传入列表变量 # 没有表头,需要设置为 None pd.read_excel('tmp.xlsx', header=None, names=None)索引列 index_col作为索引的列,默认不设置,使用自然索引(从 0 开始)。# int, list of int, default None pd.read_excel('tmp.xlsx', index_col=0) # 指定第一列 pd.read_excel('tmp.xlsx', index_col=[0,1]) # 前两列,多层索引使用列 usecols指定使用的列,其余的不读取,默认是全部使用。pd.read_excel('tmp.xlsx', usecols='A:H') # 取 A 到 H 列 pd.read_excel('tmp.xlsx', usecols='A,C,E:H') # 取 A和C列,再加E到H列 pd.read_excel('tmp.xlsx', usecols=[0,1]) # 取前两列 pd.read_excel('tmp.xlsx', usecols=['姓名','性别']) # 取指定列名的列 # 表头包含 Q 的 pd.read_excel('team.xlsx', usecols=lambda x: 'Q' in x)返回序列 squeezebool如果只要一列,则返回一个 Series,默认还是 DataFrame。# default False pd.read_excel('tmp.xlsx', usecols='A', squeezebool=True)数据类型 dtype数据类型,如果不传则自动推断。如果被 converters 处理则不生效。# Type name or dict of column -> type, default None pd.read_excel(data, dtype=np.float64) # 所有数据均为此数据类型 pd.read_excel(data, dtype={'c1':np.float64, 'c2': str}) # 指定字段的类型 pd.read_excel(data, dtype=[datetime, datetime, str, float]) # 依次指定处理引擎 engine可接受的参数值是 “xlrd”, “openpyxl” 或者 “odf”,如果文件不是缓冲或路径,就需要指定,用于处理 excel 使用的引擎,三方库。# str, default None pd.read_excel('tmp.xlsx', engine='xlrd')默认的 xlrd 引擎不会读取内容为星号*、百分号 % 等特殊字符的行,可以更换为 openpyxl 解决。Excel 的三方库依赖:从 Pandas 1.3 版本开始,在读取新的 Excel 2007+(.xlsx)文件时,read_excel() 默认参数 engine=None,将配置项 io.Excel.xlsx.reader 设置为“auto”时,都会使用 openpyxl 引擎。以前,有些情况下会使用 xlrd 引擎。由于不再维护用于编写旧式 .xls Excel 文件的 xlwt 包。从 Pandas 1.2 开始,xlrd 包现在仅用于读取旧式 .xls 文件。以前,read_excel() 的默认参数 engine=None 下使用 xlrd 引擎,包括新的 Excel 2007+(.xlsx)文件。如果安装了openpyxl,许多情况下现在将默认使用 openpyxl 引擎。因此,强烈建议安装 openpyxl 来读取Excel 2007+(.xlsx)文件。使用 xlrd 读取 .xlsx 文件时,不再支持,请改为使用 openpyxl。除非选项 io.excel.xls.writer 设置为“xlwt”,否则尝试使用 xlwt 引擎将发出未来警告。虽然此选项现在已被弃用,并且还会引发 FutureWarning,但可以全局设置此选项并抑制警告。建议用户使用 openpyxl 引擎编写 .xlsx 文件。列数据处理 converters对列的数据进行转换,列名与函数组成的字典。key 可以是列名或者列的序号。# dict, default None def foo(p): return p + 's' # x 应用函数, y 使用 lambda pd.read_excel('tmp.xlsx', converters={'x': foo, 'y': lambda x: x * 3}) # 使用列索引 pd.read_excel('tmp.xlsx', converters={0: foo, 1: lambda x: x * 3})真假值指定 true_values false_values将指定的文本转换为 True 或者 False, 可以用列表指定多个值。# list, default None pd.read_excel('tmp.xlsx', true_values=['Yes'], false_values=['No'])跳过指定行 skiprows# list-like, int or callable, optional # 跳过前三行 pd.read_excel(data, skiprows=2) # 跳过前三行 pd.read_excel(data, skiprows=range(2)) # 跳过指定行 pd.read_excel(data, skiprows=[24,234,141]) # 跳过指定行 pd.read_excel(data, skiprows=np.array([2, 6, 11])) # 隔行跳过 pd.read_excel(data, skiprows=lambda x: x % 2 != 0) # 跳过最后几行用 skipfooter=2读取行数 nrows需要读取的行数,从文件开头算起,经常用于较大的数据,先取部分进行代码编写。# int, default None pd.read_excel(data, nrows=1000)空值替换 na_values一组用于替换 NA/NaN 的值。如果传参,需要制定特定列的空值。# scalar, str, list-like, or dict, default None # 5 和 5.0 会被认为 NaN pd.read_excel(data, na_values=[5]) # ? 会被认为 NaN pd.read_excel(data, na_values='?') # 空值为 NaN pd.read_excel(data, keep_default_na=False, na_values=[""]) # 字符 NA 字符 0 会被认为 NaN pd.read_excel(data, keep_default_na=False, na_values=["NA", "0"]) # Nope 会被认为 NaN pd.read_excel(data, na_values=["Nope"]) # a、b、c 均会被认为 NaN 等于 na_values=['a','b','c'] pd.read_excel(data, na_values='abc') # 指定列的指定值会被认为 NaN pd.read_excel(data, na_values={'c':3, 1:[2,5]})日期时间解析 parse_dates# boolean or list of ints or names or list of lists or dict, default False. pd.read_excel(data, parse_dates=True) # 自动解析日期时间格式 pd.read_excel(data, parse_dates=['年份']) # 指定日期时间字段进行解析 # 将 1、4 列合并解析成名为 时间的 时间类型列 pd.read_excel(data, parse_dates={'时间':[1,4]})日期时间解析器 date_parser用于解析日期的函数,默认使用dateutil.parser.parser来做转换。Pandas 尝试使用三种不同的方式解析,如果遇到问题则使用下一种方式。使用一个或者多个arrays(由parse_dates指定)作为参数;连接指定多列字符串作为一个列作为参数;每行调用一次date_parser函数来解析一个或者多个字符串(由parse_dates指定)作为参数。千分位分割符 thousands# str, default None pd.read_excel(data, thousands=',') # 逗号分隔转为浮点 convert_float读取 Excel 默认把数字转为浮点,设为 False 将保留整型。# bool, default True pd.read_excel('tmp.xlsx', convert_float=False)
2022年05月19日
5 阅读
0 评论
0 点赞
2022-05-15
Pandas按照行、列进行求和
基础数据:data_test= pd.DataFrame([ ['张三',1,1], ['李四',2,2], ['张三',3,3], ['张三',4,4], ['王五',5,5], ['王五',6,6,], ['赵六',7,7] ], columns =['name','number_1','number_2'] )使用1值表示沿着每一行或者列标签模向0.行对应的方法data_test['axis_1']=data_test.loc[:,['number_1','number_2']].apply(lambda x:x.sum(),axis=1)使用0值表示沿着每一列或行标签\索引值向下执行方法data_test.loc['axis_0']=data_test.loc[:,['number_1','number_2','axis_1']].apply(lambda x:x.sum())
2022年05月15日
8 阅读
0 评论
0 点赞
1
...
29
30
31