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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

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

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

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

具體步驟:

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

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能夠?qū)⑽募A的路徑和文件夾中的名字合并成每個文件完整路徑。并將每個文件讀取,再與空的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='序號')

完整代碼如下:

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='序號')

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

環(huán)境安裝:

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='行索引的名字')??

非常簡單,就不贅述了。

知識點(diǎn)三:神器篩選直接上我操練的代碼吧。篩選方法第一種:通過索引篩選 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ū)張三李四王二麻子李山小李子曾賢志黃山級別
82103615896康定
144148856260烏魯木齊
1217314256145常州
1391191208694石家莊
931075583138唐山
1451116512666連云港
130123116132110蘇州
AAABABBBNaN

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

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

In?[144]:

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

Out[144]:

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

In?[145]:

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

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]:

西瓜西紅柿苦瓜南瓜馬鈴署地區(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]:

西瓜苦瓜南瓜張三李四王二麻子李山小李子曾賢志黃山級別
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]:

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

In?[152]:

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

Out[152]:

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

In?[153]:

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

In?[154]:

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

Out[155]:

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

In?[156]:

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

Out[157]:

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

In?[158]:

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

Out[158]:

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

In?[159]:

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

Out[159]:

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

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

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

In?[160]:

df

Out[160]:

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

In?[161]:

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

Out[161]:

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

In?[162]:

df.values #df數(shù)據(jù)內(nèi)容時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.級別.str.match('[AB]{2}',na=False)] #任務(wù)完成不過與原表不一致,咋整呢?

Out[163]:

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

In?[164]:

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

Out[164]:

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

編寫排版太麻煩,不喜歡也別噴。

總結(jié)

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

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