首页
关于
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
页面
关于
搜索到
14
篇与
的结果
2022-09-19
Pandas数据清洗之替换字符串
1.replace:将指定位置的字符,替换为给定的字符串df['身高'] = df['身高'].str.replace(':','-') df['身高'] = df['身高'].apply(lambda x: x.replace(':','-'))2.findall使用正则表达式,做数据清洗,真的很香!df["身高"] df["身高"].str.findall("[a-zA-Z]+")3.split方法+expand参数:搭配join方法功能很强大# 普通用法 df["身高"].str.split(":") # split方法,搭配expand参数 df[["身高描述","final身高"]] = df["身高"].str.split(":",expand=True) df # split方法搭配join方法 df["身高"].str.split(":").str.join("?"*5) 3.strip/rstrip/lstrip:去除空白符、换行符df["姓名"] = df["姓名"].str.strip() #Python rstrip() 删除 string 字符串末尾的指定字符(默认为空格)。 #Python lstrip() 删除 string 字符串头部的指定字符(默认为空格)。
2022年09月19日
3 阅读
0 评论
0 点赞
2022-09-19
Pandas数据清洗之删除行、列的方法
1.删除指定列df.drop(['推荐花费','搜索花费'],axis=1,inplace=True)2.删除某列为空的行df.dropna(axis=0,how='any',subset=['pic_id'],inplace=True)3.删除符合条件的行、列#删除某列值的字符串包含某字符串的行 df = df[df['分配内容'].str.contains('系统')] df.drop(df[<some boolean condition>].index,inplace=True) #删除A列数值为2的行 df.drop(df.index[df['A'] == 2],inplace=True) # 删除a行数据为3的列 df.drop(df.columns[df.loc['a'] == 3],axis=1,inplace=True) 4.删除重复的行# 删除A、B两列重复的行 df.drop_duplicates(subset=['A','B'],keep='first',inplace=True) # 删除完全相同的行 data.drop_duplicates(inplace=True)
2022年09月19日
5 阅读
0 评论
0 点赞
2022-09-19
Pandas读取csv提示编码不对
1.使用Sublime Text打开文档,显示编码格式2.pd.read_csv(encoding='') 指定文件编码ps: Sublime Text显示编码方法1.打开「设置」菜单,点击下拉菜单的「首选项」。2.在右侧界面中,添加一行 "show_encoding": true, 并保存。3.保存设置之后,再看右下角就能看到当前文件的编码了。
2022年09月19日
3 阅读
0 评论
0 点赞
2022-05-30
Pandas的pivot_table函数(数据透视表)
pivot_table() 的特点就是默认显示指定索引列和所有数值列。索引显示的是唯一值,所以会把对应的数值处理成均值。其他str类型的列都会自动忽略。当然,使用pivot_table() 时,可以通过添加参数进行计数或求和示例中账号是int类型,如果是str类型,那么运行结果不会显示[‘账号’]这一列的内容。import numpy as np import pandas as pd df = pd.DataFrame({ '账号':[714466,714466,714466,737550,146832,218895,218895,412290,740150,141962,163416,239344,239344,307599,688981,729833,729833], '客户名称':['华山派股份有限公司','华山派股份有限公司','华山派股份有限公司','丐帮(北京) 合伙人公司','恶人谷资产管理公司','桃花岛','桃花岛','有间客栈','逍遥子影业','白驼山(上海)影视艺术有限公司','聚贤庄','全真教药业','全真教药业','天地会快递','福寿堂','快手三教育培训有限公司','快手三教育培训有限公司'], '销售':['令狐冲','令狐冲','令狐冲','令狐冲','江小鱼','江小鱼','江小鱼','段誉','段誉','欧阳克','欧阳克','欧阳克','欧阳克','韦小宝','韦小宝','韦小宝','韦小宝'], '销售总监':['岳不群','岳不群','岳不群','岳不群','岳不群','岳不群','岳不群','岳不群','岳不群','完颜洪烈','完颜洪烈','完颜洪烈','完颜洪烈','完颜洪烈','完颜洪烈','完颜洪烈','完颜洪烈'], '产品':['黑玉断续膏','葵花宝典','含笑半步癫','黑玉断续膏','黑玉断续膏','黑玉断续膏','葵花宝典','含笑半步癫','黑玉断续膏','黑玉断续膏','黑玉断续膏','含笑半步癫','葵花宝典','含笑半步癫','黑玉断续膏','黑玉断续膏','如意勾'], '数量':[1,2,1,3,1,3,1,2,4,2,2,1,3,5,2,3,1], '价格':[3000,2000,1000,3000,1000,3000,1000,2000,4000,2000,2000,1000,2000,3000,1000,4000,2000], '状态':['流程中','流程中','待审批','驳回','已完成','流程中','流程中','待审批','驳回','已完成','流程中','待审批','待审批','已完成','已完成','驳回','流程中'], })index指定单索引索引变成了[客户名称]这一列,values显示的只有数字,而且都处理成均值。比如:华山三个,数量4/3,价格6000/3,账号就不用说了,三个都一样,均值自然就是其中一个;快手两个,数量4/2,价格6000/2dd = pd.pivot_table(df,index=['客户名称'])指定多索引索引顺序能决定不同的视觉体验,虽然结果是一致的。dd = pd.pivot_table(df,index=['销售总监','销售','客户名称'])values如果不需要显示全部的数值列,可以用Values参数指定# 显然Values不能随便指定,pivot_table()只能显示数值列 print(pd.pivot_table(df, index=['销售总监','销售'], values=['状态'])) ''' Empty DataFrame Columns: [] Index: [(完颜洪烈, 欧阳克), (完颜洪烈, 韦小宝), (岳不群, 令狐冲), (岳不群, 段誉), (岳不群, 江小鱼)] '''aggfunc当我们未设置aggfunc时,它默认aggfunc='mean’计算均值。columnsfill_valuecolumns参数就是用来显示字符型数据的,和fill_value搭配使用补充:当 values,aggfunc,columns 的取值只有一个时,有无中括号效果略有不同。columns,没有的字段显示NaNfill_value,用0填充空值pd.pivot_table(df, index=['销售总监','销售'], values=['价格'],aggfunc=[np.sum],columns=['产品'])pd.pivot_table(df, index=['销售总监','销售'], values=['价格'],aggfunc=[np.sum],columns=['产品'],fill_value=0)通过添加参数,还可以显示更多信息。下面这个就花哨多了pd.pivot_table(df, index=['销售总监','销售','客户名称','产品'],values=['数量','价格'],aggfunc=[np.sum],columns=['状态'],fill_value=0,margins=True)以销售总监层面,来看销售状态(aggfunc的参数使用了字典的方式对每一列做出了不同的计算要求。也可以加多个,比如 ‘价格’:[np.mean,np.sum])pd.pivot_table(df,index=['销售总监','状态'], values=['数量','价格'], columns=['产品'],aggfunc={'数量':len,'价格':np.sum},fill_value=0,margins=True)数据透视表过滤生成数据后,你可以使用DataFrame的操作方式对其进行过滤。比如:你只想看某一位销售总监:data = pd.pivot_table(df,index=['销售总监','状态'], values=['数量','价格'], columns=['产品'],aggfunc={'数量':len,'价格':np.sum},fill_value=0) data.query("销售总监==['完颜洪烈']")查看所有待审批和驳回的交易data = pd.pivot_table(df,index=['销售总监','状态'], values=['数量','价格'], columns=['产品'],aggfunc={'数量':len,'价格':np.sum},fill_value=0) data.query("状态==['待审批','驳回']")转到Excelpd.pivot_table(df,index=['销售总监','销售','产品'], values=['数量','价格'],aggfunc=[np.sum,np.mean],fill_value=0)xs允许我向下钻取数据透视表的一个横截面。我们也可以向下钻取更多级别。取得「销售总监」为「岳不群」的数据data = pd.pivot_table(df,index=['销售总监','销售','产品'], values=['数量','价格'],aggfunc=[np.sum,np.mean],fill_value=0)xs中的level可以通过get_level_values来获得例如,我们要查看所有销售总监:查看所有销售:试着按「销售总监」进行输出:写入文件import numpy as np import pandas as pd df = pd.read_csv('F:\\Temp\\datas\\xiaoshou.csv') data = pd.pivot_table(df,index=['销售总监','销售','产品'], values=['数量','价格'],aggfunc=[np.sum,np.mean],fill_value=0) writer = pd.ExcelWriter('F:\\Temp\\datas\\output.xlsx') for name in data.index.get_level_values(0).unique(): temp_df = data.xs(name, level=0) temp_df.to_excel(excel_writer=writer, sheet_name=name) writer.save()我们得到了一个由两个sheet页的Excel文件,sheet_name分别是销售总监「完颜洪烈」和「岳不群」。
2022年05月30日
7 阅读
0 评论
0 点赞
2022-05-25
Pandas常用函数之groupby()、agg()
import pandas as pd import numpy as np df = pd.DataFrame( data={ 'name': ['z_s', 'l_s', 'w_w', 'z_l', 'y_s', 'j_j', 'l_b', 'z_f', 'hs_q', 'lbl_k', 'qy_n', 'mg_n'], 'score': [100, 97, 98, 89, 67, 59, 29, 87, 78, 89, 88, 80], 'group': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 'cls': ['A', 'A', 'A', 'B', 'B', 'B', 'A', 'A', 'A', 'B', 'B', 'B'], 'height': [178.0, 180.0, 176.0, 182.0, 189.0, 190.0, 172.5, 175.0, 165.0, 160.0, 158.5, 159.0] }, index=['stu_' + str(i) for i in np.arange(1, 13, 1)] ) print('df:\n', df)Pandas分组聚合分组聚合统计各个班的最高的成绩:# 先按照班级进行分组,再统计各个组里面的成绩的最大值! ret = df.groupby(by=['cls'])['score'].max().reset_index() print('ret:\n', ret)多重行索引分组聚合统计各个班的各个小组的最高成绩# 先按照班级分组,再按照小组分组,最后统计各个小组内成绩的最大值 ret = df.groupby(by=['cls', 'group'])['score'].max() print('ret:\n', ret) print('index:\n', ret.index) # MultiIndex ---多重行索引 ret = ret.reset_index() # 重设索引 print(ret)对多列数据进行分组聚合统计各个班级的成绩、身高的平均值:# 按照班级分组,统计各个组内 成绩、身高的平均值 ret = df.groupby(by=['cls'])[['score', 'height']].mean().reset_index() print('ret:\n', ret)综合应用# 先按照班级分组、再按照小组分组---统计各个小组内的成绩的平均值、身高的平均值 ret = df.groupby(by=['cls', 'group'])[['score', 'height']].mean().reset_index() print('ret:\n', ret)聚合函数 agg统计成绩、身高的最大值、均值# 使用agg 方法 可以对多列数据一次性求出多个指标 ret = df.loc[:, ['score', 'height']].agg([np.max, np.mean]) print('ret:\n', ret)对多列数据统计不同的指标统计成绩的均值、同时统计身高的最大值# 使用agg 方法 可以对多列数据一次性求出多个指标 ret = df.agg({'score': [np.mean], 'height': [np.max]}) print('ret:\n',ret)对多列数据统计不同个数的指标统计成绩的均值、最大值、中位数 和 身高的均值# 使用agg 方法 可以对多列数据一次性求出多个指标 ret = df.agg({'score': [np.mean, np.max, np.median], 'height': [np.mean]}) print('ret:\n', ret)使用agg 方法也可以配合着 分组 对不同列、不同的数据、统计不同个数的 不同指标!ret = df.groupby(by=['cls']).agg({'height': [np.max,np.mean], 'score': [np.min]}) print('ret:\n', ret)agg调用 自定义函数ret = df.loc[:, 'score'].agg(lambda x: x + 1) print('ret1:\n', ret) def func_add_one(x): return x + 1 ret = df.loc[:, 'score'].agg(func_add_one) print('ret2:\n', ret) # 对多列 使用自定义函数 ret = df.loc[:, ['score', 'height']].agg(func_add_one) print('ret3:\n', ret)使用agg 调用numpy的统计指标# 统计所有同学成绩的和 ret = df.loc[:, 'score'].agg(np.sum) print('ret:\n',ret) print('type:\n',type(ret)) # # 统计所有同学 成绩以及身高 的和 ret = df.loc[:, ['score', 'height']].agg(np.sum) print('ret:\n', ret) print('type:\n',type(ret)) # 统计身高 + 成绩(无意义的,只是为了演示能够 同一行相加) ret = df.loc[:, ['score', 'height']].agg(np.sum, axis=1) # 使用axis指定相加的方向 print('ret:\n', ret) print('type:\n',type(ret))
2022年05月25日
7 阅读
0 评论
0 点赞
1
2
3