halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据

人生苦短,我学python!

python是目前最流行的编程语言,功能十分强大,在爬虫、数据分析、人工智能方面均得以广泛应用。本专辑主要分享两个数据分析库numpy和pandas在数据分析方面的基础知识和各种技能,pandas的快、准、简洁远非office的excel可比,而且免费。本期开始将全面总结pandas在处理excel数据的方方面面的知识,力争通过100期左右,完成pandas和numpy相关知识的介绍及其配套数据可视化库matplotlib和seaborn的介绍。特别说明,做这个专辑,纯属爱好,总结所学知识。pandas的强大,谁用谁知道,绝非打广告。我把她叫做超级excel。由于是笔记,当然就是先从非常厉害的东东开始了,所以没有依据由浅入深的顺序。知识的记录仍然按照知识点的方式进行,所有代码均经过反复实践,力争知识点没有错误。操作平台有Jupyter Notebook 、pycharm。安装非常简单。后期估计会记录一些他们的设置。本期共6547个字,需要花费17分钟阅读。本期是第一期,如果没人喜欢,下期开始就设置权限了,本来就是自己的学习小结,错误在所难免,对您有用就看看,没用就绕道,谢谢!建议电脑查看,手机查看格式可能会乱。

知识点一:批量打开多工作薄并快速进行合并

具体步骤:

环境准备:

import pandas as pd

import os

第一步,新建文件夹(里需要合并的多个工作表)定义新建文件夹的路径;

imputdir = r'C:\Users\xiaobin\Desktop\111'

第一步,新建一个空的DateFrame;

dfe=pd.DataFrame(columns=['姓名','2011年','2012年','2013年','2014年'])

第三步:利用os库中的walk方法可以遍历文件夹的所有文件,并读取文件的名字,os.path.join能够将文件夹的路径和文件夹中的名字合并成每个文件完整路径。并将每个文件读取,再与空的DateFrame合并.

for parents,dirnames,filenames in os.walk(imputdir):

    for filename in filenames:

        df=pd.read_excel(os.path.join(parents,filename))

        dfe=dfe.append(df,ignore_index=True)

第四歩:保存数据

df_empty.to_excel(r'C:\Users\xiaobin\Desktop\111\汇总表.xlsx',index_label='序号')

10a480ff911174b10dd3a02096c1610b.gif

完整代码如下:

import pandas as pd

import os

imputdir = r'C:\Users\xiaobin\Desktop\111'

dfe=pd.DataFrame(columns=['姓名','2011年','2012年','2013年','2014年'])

for parents,dirnames,filenames in os.walk(imputdir):

    for filename in filenames:

        df=pd.read_excel(os.path.join(parents,filename))

        dfe=dfe.append(df,ignore_index=True)

df_empty.to_excel(r'C:\Users\xiaobin\Desktop\111\汇总表.xlsx',index_label='序号')

10a480ff911174b10dd3a02096c1610b.gif

知识点二:保存多个工作表到同一工作薄

环境安装:

import numpy as np

import pandas as pd

path='要保存的路径'

with pd.ExcelWriter(path) as writer:

    df.to_excel(writer,sheet_name='第一个文件的名字',columns=['需要保存的列名,用逗号隔开'],index=True,index_label='行索引的名字')

    df.to_excel(writer,sheet_name='第二个文件的名字',columns=['需要保存的列名,用逗号隔开'],index=True,index_label='行索引的名字')

    df.to_excel(writer,sheet_name='第一个文件的名字',columns=['需要保存的列名,用逗号隔开'],index=True,index_label='行索引的名字')  

10a480ff911174b10dd3a02096c1610b.gif

非常简单,就不赘述了。

10a480ff911174b10dd3a02096c1610b.gif

知识点三:神器筛选直接上我操练的代码吧。筛选方法第一种:通过索引筛选 filter函数

In [1]:

import numpy as np
import pandas as pd

In [139]:

path=r'C:\Users\xiaobin\Desktop\练习.xlsx'
df=pd.read_excel(path,index_col=0)
df

Out[139]:

西瓜西红柿苦瓜南瓜马铃署地区
张三82103615896康定
李四144148856260乌鲁木齐
王二麻子1217314256145常州
李山1391191208694石家庄
小李子931075583138唐山
曾贤志1451116512666连云港
黄山130123116132110苏州
级别AAABABBBNaN

对序列进行筛选,针对Series的序列

In [140]:

df.西瓜.filter(items=['李四','李山'])

Out[140]:

李四    144
李山 139
Name: 西瓜, dtype: object

In [141]:

df.西瓜.filter(like=('李'))

Out[141]:

李四     144
李山 139
小李子 93
Name: 西瓜, dtype: object

In [142]:

df.西瓜.filter(regex=('^李.$'))

Out[142]:

李四    144
李山 139
Name: 西瓜, dtype: object

针对DateFrame的index(行索引)columns(列索引)

In [143]:

df.filter(items=['李四','李山'],axis=0)  
#行索引筛选axis=0,如果axis=1针对列筛选

Out[143]:

西瓜西红柿苦瓜南瓜马铃署地区
李四144148856260乌鲁木齐
李山1391191208694石家庄

In [144]:

df.filter(items=['李四','李山'],axis=1)  #如果设置axis=1,
啥都没有

Out[144]:

张三
李四
王二麻子
李山
小李子
曾贤志
黄山
级别

In [145]:

df.filter(items=['西瓜','苦瓜'],axis=1) 
 #对列索引进行筛选

Out[145]:

西瓜苦瓜
张三8261
李四14485
王二麻子121142
李山139120
小李子9355
曾贤志14565
黄山130116
级别AAB

In [146]:

df.filter(items=['西瓜','苦瓜'],axis='columns') 

#对列筛选columns

Out[146]:

西瓜苦瓜
张三8261
李四14485
王二麻子121142
李山139120
小李子9355
曾贤志14565
黄山130116
级别AAB

In [147]:

df.filter(items=['李四','李山'],axis='index')  
#行索引筛选axis='index',如果axis=1针对列筛选

Out[147]:

西瓜西红柿苦瓜南瓜马铃署地区
李四144148856260乌鲁木齐
李山1391191208694石家庄

In [148]:

df.filter(like='李',axis='index')

Out[148]:

西瓜西红柿苦瓜南瓜马铃署地区
李四144148856260乌鲁木齐
李山1391191208694石家庄
小李子931075583138唐山

In [149]:

df.filter(like='瓜',axis='columns')

Out[149]:

西瓜苦瓜南瓜
张三826158
李四1448562
王二麻子12114256
李山13912086
小李子935583
曾贤志14565126
黄山130116132
级别AABAB

In [150]:

df.filter(regex='瓜',axis='columns')

Out[150]:

西瓜苦瓜南瓜
张三826158
李四1448562
王二麻子12114256
李山13912086
小李子935583
曾贤志14565126
黄山130116132
级别AABAB

In [151]:

df.filter(regex='^..$',axis='columns')

Out[151]:

西瓜苦瓜南瓜地区
张三826158康定
李四1448562乌鲁木齐
王二麻子12114256常州
李山13912086石家庄
小李子935583唐山
曾贤志14565126连云港
黄山130116132苏州
级别AABABNaN

In [152]:

df.filter(regex='^..$',axis='index')

Out[152]:

西瓜西红柿苦瓜南瓜马铃署地区
张三82103615896康定
李四144148856260乌鲁木齐
李山1391191208694石家庄
黄山130123116132110苏州
级别AAABABBBNaN

In [153]:

前面是针对Series和DateFrame的索引进行筛选,
下面针对DateFrame的数据行和列进行筛选
原理是针对序列Series的str.match方法
  File "", line 1    前面是针对Series和DateFrame的索引进行筛选,
下面针对DateFrame的数据行和列进行筛选     

In [154]:

对 DataFrame 行或列进行筛选
print('-----对 DataFrame 的正则筛选-------')
print(df[df.地区.astype(str).str.match('^..$')])#对 df 的行筛选
print(df.T[df.T.级别.astype(str).str.match('[AB]{2}')].T)#对 df 的列筛选
In [155]:
#筛选满足条件的某些列
df.地区.str.match('^..$',na=False)  
#含义是筛选出地区中只有两个字的地区的对应行内容。

Out[155]:

张三       True
李四 False
王二麻子 True
李山 False
小李子 True
曾贤志 False
黄山 True
级别 False
Name: 地区, dtype: bool

In [156]:

df[df.地区.str.match('^..$')] #此处出现错误主要是筛选字段地区中
有错误值或者空值如何处理看下面,参数na=False就是屏蔽掉错误值。
--------------------------------------------------------------------------ValueError   Traceback (most recent call last) in ----> 1 df[df.地区.str.match('^..$')] 
#此处出现错误主要是筛选字段地区中有错误值或者空值
如何处理看下面,参数na=False就是屏蔽调错误值d:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key) 2789   # Do we have a (boolean) 1d indexer?-> 2790  if com.is_bool_indexer(key):   2791  return self._getitem_bool_array(key)   2792 d:\ProgramData\Anaconda3\lib\site-packages\pandas\core\common.py in is_bool_indexer(key)    134    na_msg = "Cannot mask with non-boolean array containing NA / NaN values"    135   if isna(key).any():--> 136   raise ValueError(na_msg)    137  return False    138  return TrueValueError: Cannot mask with non-boolean array containing NA / NaN values

In [157]:

df[df.地区.str.match('^..$',na=False)]  #看吧,正确了,
不过还有其他方法处理错误值或者缺失值

Out[157]:

西瓜西红柿苦瓜南瓜马铃署地区
张三82103615896康定
王二麻子1217314256145常州
小李子931075583138唐山
黄山130123116132110苏州

In [158]:

df.地区.astype(str).str.match('^..$')#两者对比看一下,
空值转为字符串就变成false,放入索引中就不会被选择。

Out[158]:

张三       True
李四 False
王二麻子 True
李山 False
小李子 True
曾贤志 False
黄山 True
级别 False
Name: 地区, dtype: bool

In [159]:

df.地区.str.match('^..$')

Out[159]:

张三       True
李四 False
王二麻子 True
李山 False
小李子 True
曾贤志 False
黄山 True
级别 NaN
Name: 地区, dtype: object

上面是对列字段的处理,针对行字段的处理首先要把表格转置.T,

看一下数据,此次利用级别行来筛选

In [160]:

df

Out[160]:

西瓜西红柿苦瓜南瓜马铃署地区
张三82103615896康定
李四144148856260乌鲁木齐
王二麻子1217314256145常州
李山1391191208694石家庄
小李子931075583138唐山
曾贤志1451116512666连云港
黄山130123116132110苏州
级别AAABABBBNaN

In [161]:

df.T  #第一步,表格转置

Out[161]:

张三李四王二麻子李山小李子曾贤志黄山级别
西瓜8214412113993145130AA
西红柿10314873119107111123A
苦瓜61851421205565116B
南瓜5862568683126132AB
马铃署96601459413866110BB
地区康定乌鲁木齐常州石家庄唐山连云港苏州NaN

In [162]:

df.values  #df数据内容时ndarray,二维数组

Out[162]:

array([[82, 103, 61, 58, 96, '康定'],
[144, 148, 85, 62, 60, '乌鲁木齐'],
[121, 73, 142, 56, 145, '常州'],
[139, 119, 120, 86, 94, '石家庄'],
[93, 107, 55, 83, 138, '唐山'],
[145, 111, 65, 126, 66, '连云港'],
[130, 123, 116, 132, 110, '苏州'],
['AA', 'A', 'B', 'AB', 'BB', nan]], dtype=object)

In [163]:

df.T[df.T.级别.str.match('[AB]{2}',na=False)]  #任务完成
不过与原表不一致,咋整呢?

Out[163]:

张三李四王二麻子李山小李子曾贤志黄山级别
西瓜8214412113993145130AA
南瓜5862568683126132AB
马铃署96601459413866110BB

In [164]:

df.T[df.T.级别.str.match('[AB]{2}',na=False)].T #再次进行转置

Out[164]:

西瓜南瓜马铃署
张三825896
李四1446260
王二麻子12156145
李山1398694
小李子9383138
曾贤志14512666
黄山130132110
级别AAABBB

10a480ff911174b10dd3a02096c1610b.gif

编写排版太麻烦,不喜欢也别喷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算参考架构3.0

来源:萤火虫智能家居沙龙全球已经掀起行业数字化转型的浪潮,数字化是基 础,网络化是支撑,智能化是目标。通过对人、物、环境、过程等对象,进行数字化而产生数据,通过网络化实 现数据的价值流动,…

以二维振动为例展示使用matlab画圆形三维图的偷懒方法

画图主要是用极坐标,我们使用画复数的函数来画。 clc;%清空上次的 %draw_Bessel%画这个东西 a4;%圆形半径% %定义角向和径向的步长和范围 fai[-4:0.1:4]; r[0:0.02:a];%将fai和r组合起来并生成复平面 [R,T] meshgrid(fai,r); Z R.*exp(1i*T);%和画具体图有关的 m…

tensorflow 转张量类型为float_5个简单的步骤掌握Tensorflow的Tensor

在这篇文章中,我们将深入研究Tensorflow Tensor的细节。我们将在以下五个简单步骤中介绍与Tensorflow的Tensor中相关的所有主题:第一步:张量的定义→什么是张量?第二步:创建张量→创建张量对象的函数第三步&#xff1a…

指针和字符串

指针和字符串 [前言] 我们所写的应用程序都需要从网络获取数据,或者从网络下载数据,这些操作都需要和网络另一端的服务器进行数据传输,这些数据都是通过文件进行传输的,文件中就是字符串,我们程序员需要保证正确解析从…

华为手机怎么使用读卡器_华为手机使用小窍门

华为手机电池耐用,信号好,系统流畅,外观也一改以往的呆板现在追求时尚,所以深得国人的喜爱,也因为美国的打压激起了国人的爱国意识,华为在国内手机销量高居第一,使用的人很多。现在国产最好的手…

报告 | 数字孪生城市研究报告(2019年)

来源 :数据观数字孪生技术应用最早起源于工业领域,尤其飞机、火车发动机等高端制造领域,对产品、生产线和工艺等进行数字仿真、实时跟踪,研发周期大幅缩减,生产成本大幅降低,形成多设备互联、协同和优化的建…

立方体引起的引力异常计算&画图

地球重力学需要我们计算立方体引起的重力异常,公式见《重力学与固体潮》。 这个程序取的z方向是竖直向下的,也就是说地面向下为正,地面向上为负 %定义一个立方体函数% function [gravity]draw_square(a,b,c,x0,y0,H,ph,z) %长方体模型参数说…

win10开始不显示python_win10从零安装配置pytorch全过程图文详解

1.安装anaconda (anaconda内置python在内的许多package,所以不用另外下载python) 可以点击下面的清华开源软件镜像站,在官网下载anaconda不如在这下的快 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 镜像站 我下载的…

大雁展翅,轮回,国甲,国丙,速龙,傲龙,御龙这些魔方有什么区别

大雁:展翅:曾经最顶级的速柠魔方。顺滑,容错大,无小卡。菲神的5.66就是用它破的。 轮回:角块有双重卡脚,稳定性好,不易pop,但容错较小。大雁的其它产品有孤鸿,大…

暗备用的运行状态_瞧:我利用“无偏二极管”发明设计出了【宇宙“暗物质”、“暗能量”探测器】...

《瞧:我利用“无偏二极管”发明设计出了【宇宙“暗物质”、“暗能量”探测器】》楔子:首先,我要在此留下“2020”——“爱你爱你”印迹的一张照片:这不是口罩而是爱!中国人以【爱家人、爱自己】这一特殊形式的“爱”战…

【必读】2019年深度学习自然语言处理最新十大发展趋势, 附报告下载

https://blog.floydhub.com/ten-trends-in-deep-learning-nlp/来源:专知2018年是基于深度学习的自然语言处理(NLP)研究发展快速的一年。在此之前,最引人注目的是Word2Vec,它于2013年首次发布。在此期间,深度学习模型在语言建模领域…

spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析

网上关于Spring事务传播性以及隔离型的文章漫天盖地,还有不负责任的直接复制名词意思,文章虽然很多却是看的云里雾里,我们今天将给出案例分别和大家一起学习。1、spring给出经常面试的考点Spring事务的4个特性含义---这个很容易理解2、spring…

[matlab]斜阶梯式长条引起的重力异常计算

画的是《重力学与固体潮》那本书的斜阶梯的重力异常 function [gravity]draw_gravity_dixing(h1,h2,alpha,xigma,x0,z,direction) %h1100;%上表面 %h2200;%下表面 %x00;%移动原点位置,向右为正 %xigma3*10^3;%剩余密度 pi3.1415926535 %alphaalpha*pi;%倾角%采样区…

[Android]使用MVP解决技术债务(翻译)

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5892671.html 使用MVP解决技术债务 原文:https://medium.com/picnic-engineering/tackling-technical-debt-with-mvp-67e805ed5103#.…

Science:睡眠剥夺影响大脑思考竟是因为蛋白质罢工了!

来源:生物探索睡眠会影响我们的思维,当我们获得充足的睡眠后,大脑思维会变得清晰;而当我们睡眠不足时,大脑会变得迟钝。那么进入睡眠状态后,大脑又是如何调整以保证睡醒后脑回路清晰的呢?近日&a…

【Matlab】滤波器常用命令

在命令行中输入: designfilt然后就会弹出滤波器的种类,选定后会让你填参数。 参数填好之后点确定,会在命令行窗口生成这个滤波器,复制到编辑器里直接用就好。 %读取音频文件% [x,Fs]audioread(C:\Users\16000\Desktop\testfile.…

element ui input视图没刷新_[Selenium自动化测试实战] 如何在UI自动化测试中加入REST API的操作...

问题当我们描述一个“好的自动化测试用例”时,经常出现标准是:精确。自动化测试用例应该测试一件事,只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。独立。自动化测试用例不应该受测试套件中任何其他测试用例…

语句中如何结束本循环进入下一循环_Python3基础语法(八)--控制循环 while...

一、while 简介Python 的循环有 for 和 while 两种&#xff0c;while 为条件控制循环&#xff0c;通过循环控制条件表达式控制循环结束。流程图如下&#xff1a;Python 中 while 语句的格式如下&#xff1a;while <条件表达式>:【语句块】释&#xff1a;当 while 的 <…

关于生命、宇宙和万事万物的42个终极问题

来源&#xff1a;世界科技创新论坛" 我们的宇宙是否稳定&#xff0c;黑洞熵的起源和温度是什么&#xff0c;爱因斯坦的相对论和标准场论总是有效的吗&#xff0c;时空几何中是否存在奇异的性质&#xff0c;化学、应用物理和科技的极限是什么……“在达到完全开悟的道路上&…

【matlab】画图的文字调整大小

hxlabel(x); set(h,Fontsize,14);hylabel(df(x)/dx); set(h,Fontsize,14);htitle(精确解和二阶差分对比); set(h,Fontsize,14);hlegend(精确的一阶偏导,二阶差分得到的偏导); set(h,Fontsize,14);这样就行了