日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/7/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

人生苦短,我學(xué)python!

python是目前最流行的編程語(yǔ)言,功能十分強(qiáng)大,在爬蟲(chóng)、數(shù)據(jù)分析、人工智能方面均得以廣泛應(yīng)用。本專(zhuān)輯主要分享兩個(gè)數(shù)據(jù)分析庫(kù)numpy和pandas在數(shù)據(jù)分析方面的基礎(chǔ)知識(shí)和各種技能,pandas的快、準(zhǔn)、簡(jiǎn)潔遠(yuǎn)非office的excel可比,而且免費(fèi)。本期開(kāi)始將全面總結(jié)pandas在處理excel數(shù)據(jù)的方方面面的知識(shí),力爭(zhēng)通過(guò)100期左右,完成pandas和numpy相關(guān)知識(shí)的介紹及其配套數(shù)據(jù)可視化庫(kù)matplotlib和seaborn的介紹。特別說(shuō)明,做這個(gè)專(zhuān)輯,純屬愛(ài)好,總結(jié)所學(xué)知識(shí)。pandas的強(qiáng)大,誰(shuí)用誰(shuí)知道,絕非打廣告。我把她叫做超級(jí)excel。由于是筆記,當(dāng)然就是先從非常厲害的東東開(kāi)始了,所以沒(méi)有依據(jù)由淺入深的順序。知識(shí)的記錄仍然按照知識(shí)點(diǎn)的方式進(jìn)行,所有代碼均經(jīng)過(guò)反復(fù)實(shí)踐,力爭(zhēng)知識(shí)點(diǎn)沒(méi)有錯(cuò)誤。操作平臺(tái)有Jupyter Notebook 、pycharm。安裝非常簡(jiǎn)單。后期估計(jì)會(huì)記錄一些他們的設(shè)置。本期共6547個(gè)字,需要花費(fèi)17分鐘閱讀。本期是第一期,如果沒(méi)人喜歡,下期開(kāi)始就設(shè)置權(quán)限了,本來(lái)就是自己的學(xué)習(xí)小結(jié),錯(cuò)誤在所難免,對(duì)您有用就看看,沒(méi)用就繞道,謝謝!建議電腦查看,手機(jī)查看格式可能會(huì)亂。

知識(shí)點(diǎn)一:批量打開(kāi)多工作薄并快速進(jìn)行合并

具體步驟:

環(huán)境準(zhǔn)備:

import pandas as pd

import os

第一步,新建文件夾(里需要合并的多個(gè)工作表)定義新建文件夾的路徑;

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

第一步,新建一個(gè)空的DateFrame;

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

第三步:利用os庫(kù)中的walk方法可以遍歷文件夾的所有文件,并讀取文件的名字,os.path.join能夠?qū)⑽募A的路徑和文件夾中的名字合并成每個(gè)文件完整路徑。并將每個(gè)文件讀取,再與空的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)

第四歩:保存數(shù)據(jù)

df_empty.to_excel(r'C:\Users\xiaobin\Desktop\111\匯總表.xlsx',index_label='序號(hào)')

完整代碼如下:

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='序號(hào)')

知識(shí)點(diǎn)二:保存多個(gè)工作表到同一工作薄

環(huán)境安裝:

import numpy as np

import pandas as pd

path='要保存的路徑'

with pd.ExcelWriter(path) as writer:

? ? df.to_excel(writer,sheet_name='第一個(gè)文件的名字',columns=['需要保存的列名,用逗號(hào)隔開(kāi)'],index=True,index_label='行索引的名字')

? ? df.to_excel(writer,sheet_name='第二個(gè)文件的名字',columns=['需要保存的列名,用逗號(hào)隔開(kāi)'],index=True,index_label='行索引的名字')

? ? df.to_excel(writer,sheet_name='第一個(gè)文件的名字',columns=['需要保存的列名,用逗號(hào)隔開(kāi)'],index=True,index_label='行索引的名字')??

非常簡(jiǎn)單,就不贅述了。

知識(shí)點(diǎn)三:神器篩選直接上我操練的代碼吧。篩選方法第一種:通過(guò)索引篩選 filter函數(shù)

In?[1]:

import numpy as npimport pandas as pd

In?[139]:

path=r'C:\Users\xiaobin\Desktop\練習(xí).xlsx'df=pd.read_excel(path,index_col=0)df

Out[139]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)張三李四王二麻子李山小李子曾賢志黃山級(jí)別
82103615896康定
144148856260烏魯木齊
1217314256145常州
1391191208694石家莊
931075583138唐山
1451116512666連云港
130123116132110蘇州
AAABABBBNaN

對(duì)序列進(jìn)行篩選,針對(duì)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

針對(duì)DateFrame的index(行索引)columns(列索引)

In?[143]:

df.filter(items=['李四','李山'],axis=0) #行索引篩選axis=0,如果axis=1針對(duì)列篩選

Out[143]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)李四李山
144148856260烏魯木齊
1391191208694石家莊

In?[144]:

df.filter(items=['李四','李山'],axis=1) #如果設(shè)置axis=1,啥都沒(méi)有

Out[144]:

張三李四王二麻子李山小李子曾賢志黃山級(jí)別

In?[145]:

df.filter(items=['西瓜','苦瓜'],axis=1) #對(duì)列索引進(jìn)行篩選

Out[145]:

西瓜苦瓜張三李四王二麻子李山小李子曾賢志黃山級(jí)別
8261
14485
121142
139120
9355
14565
130116
AAB

In?[146]:

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

#對(duì)列篩選columns

Out[146]:

西瓜苦瓜張三李四王二麻子李山小李子曾賢志黃山級(jí)別
8261
14485
121142
139120
9355
14565
130116
AAB

In?[147]:

df.filter(items=['李四','李山'],axis='index') #行索引篩選axis='index',如果axis=1針對(duì)列篩選

Out[147]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)李四李山
144148856260烏魯木齊
1391191208694石家莊

In?[148]:

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

Out[148]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)李四李山小李子
144148856260烏魯木齊
1391191208694石家莊
931075583138唐山

In?[149]:

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

Out[149]:

西瓜苦瓜南瓜張三李四王二麻子李山小李子曾賢志黃山級(jí)別
826158
1448562
12114256
13912086
935583
14565126
130116132
AABAB

In?[150]:

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

Out[150]:

西瓜苦瓜南瓜張三李四王二麻子李山小李子曾賢志黃山級(jí)別
826158
1448562
12114256
13912086
935583
14565126
130116132
AABAB

In?[151]:

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

Out[151]:

西瓜苦瓜南瓜地區(qū)張三李四王二麻子李山小李子曾賢志黃山級(jí)別
826158康定
1448562烏魯木齊
12114256常州
13912086石家莊
935583唐山
14565126連云港
130116132蘇州
AABABNaN

In?[152]:

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

Out[152]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)張三李四李山黃山級(jí)別
82103615896康定
144148856260烏魯木齊
1391191208694石家莊
130123116132110蘇州
AAABABBBNaN

In?[153]:

前面是針對(duì)Series和DateFrame的索引進(jìn)行篩選,下面針對(duì)DateFrame的數(shù)據(jù)行和列進(jìn)行篩選原理是針對(duì)序列Series的str.match方法 File "", line 1 前面是針對(duì)Series和DateFrame的索引進(jìn)行篩選,下面針對(duì)DateFrame的數(shù)據(jù)行和列進(jìn)行篩選

In?[154]:

對(duì) DataFrame 行或列進(jìn)行篩選print('-----對(duì) DataFrame 的正則篩選-------')print(df[df.地區(qū).astype(str).str.match('^..$')])#對(duì) df 的行篩選print(df.T[df.T.級(jí)別.astype(str).str.match('[AB]{2}')].T)#對(duì) df 的列篩選In?[155]:#篩選滿(mǎn)足條件的某些列df.地區(qū).str.match('^..$',na=False) #含義是篩選出地區(qū)中只有兩個(gè)字的地區(qū)的對(duì)應(yīng)行內(nèi)容。

Out[155]:

張三 True
李四 False
王二麻子 True
李山 False
小李子 True
曾賢志 False
黃山 True
級(jí)別 False
Name: 地區(qū), dtype: bool

In?[156]:

df[df.地區(qū).str.match('^..$')] #此處出現(xiàn)錯(cuò)誤主要是篩選字段地區(qū)中有錯(cuò)誤值或者空值如何處理看下面,參數(shù)na=False就是屏蔽掉錯(cuò)誤值。--------------------------------------------------------------------------ValueError Traceback (most recent call last) in ----> 1 df[df.地區(qū).str.match('^..$')] #此處出現(xiàn)錯(cuò)誤主要是篩選字段地區(qū)中有錯(cuò)誤值或者空值如何處理看下面,參數(shù)na=False就是屏蔽調(diào)錯(cuò)誤值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.地區(qū).str.match('^..$',na=False)] #看吧,正確了,不過(guò)還有其他方法處理錯(cuò)誤值或者缺失值

Out[157]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)張三王二麻子小李子黃山
82103615896康定
1217314256145常州
931075583138唐山
130123116132110蘇州

In?[158]:

df.地區(qū).astype(str).str.match('^..$')#兩者對(duì)比看一下,空值轉(zhuǎn)為字符串就變成false,放入索引中就不會(huì)被選擇。

Out[158]:

張三 True
李四 False
王二麻子 True
李山 False
小李子 True
曾賢志 False
黃山 True
級(jí)別 False
Name: 地區(qū), dtype: bool

In?[159]:

df.地區(qū).str.match('^..$')

Out[159]:

張三 True
李四 False
王二麻子 True
李山 False
小李子 True
曾賢志 False
黃山 True
級(jí)別 NaN
Name: 地區(qū), dtype: object

上面是對(duì)列字段的處理,針對(duì)行字段的處理首先要把表格轉(zhuǎn)置.T,

看一下數(shù)據(jù),此次利用級(jí)別行來(lái)篩選

In?[160]:

df

Out[160]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)張三李四王二麻子李山小李子曾賢志黃山級(jí)別
82103615896康定
144148856260烏魯木齊
1217314256145常州
1391191208694石家莊
931075583138唐山
1451116512666連云港
130123116132110蘇州
AAABABBBNaN

In?[161]:

df.T #第一步,表格轉(zhuǎn)置

Out[161]:

張三李四王二麻子李山小李子曾賢志黃山級(jí)別西瓜西紅柿苦瓜南瓜馬鈴署地區(qū)
8214412113993145130AA
10314873119107111123A
61851421205565116B
5862568683126132AB
96601459413866110BB
康定烏魯木齊常州石家莊唐山連云港蘇州NaN

In?[162]:

df.values #df數(shù)據(jù)內(nèi)容時(shí)ndarray,二維數(shù)組

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.級(jí)別.str.match('[AB]{2}',na=False)] #任務(wù)完成不過(guò)與原表不一致,咋整呢?

Out[163]:

張三李四王二麻子李山小李子曾賢志黃山級(jí)別西瓜南瓜馬鈴署
8214412113993145130AA
5862568683126132AB
96601459413866110BB

In?[164]:

df.T[df.T.級(jí)別.str.match('[AB]{2}',na=False)].T #再次進(jìn)行轉(zhuǎn)置

Out[164]:

西瓜南瓜馬鈴署張三李四王二麻子李山小李子曾賢志黃山級(jí)別
825896
1446260
12156145
1398694
9383138
14512666
130132110
AAABBB

編寫(xiě)排版太麻煩,不喜歡也別噴。

總結(jié)

以上是生活随笔為你收集整理的halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。