b2c電子商務網站主要操作流程怎么在百度上做廣告
需求:數據在后綴為xlsx的Excel的sheet1中且量比較大,比如幾十萬行幾百列;想查找一個關鍵字所在的行,比如"全網首發(fā)";
情況①知道關鍵字在哪一列
情況②不確定在哪一列,很多列相似又不同,本文演示遍歷所有數據,但做點優(yōu)化避免浪費時間性能;
關鍵字可能是一串數字,日志的部分內容,加密的某一段等
Excel實現和python實現;
數據大概這樣子,這純粹是我瞎編的簡單演示數據,假設關鍵字為中文,商品全稱、簡稱、特點列會造成查找重復:
1.知道關鍵字在哪一列
比如關鍵字在?商品簡稱 這一列!
1.1excel實現
①直接用篩選,包含,推薦!
②超級表ctrl+T,小數據可以這樣,數據多不推薦,就是將表本身的數據變成了插入的表格,超級表的篩選功能貌似更強,但數據一多,超級表會很卡;
③用Excel本身的函數:不推薦,麻煩不好用,比如關鍵字是? 猛火
函數嵌套大致這樣:
先在sheet2中,弄一個輔助列(本文是演示,其實可以將輔助列的結果包在函數中),用函數判斷,這對鎖行、列號和excel的公式功底有一定的要求;
find("查找關鍵字","哪個單元格")-->找到返回起始位置,沒有返回錯誤;
輔助列中,找商品簡稱列,有沒有包含猛火;可以看到輔助列,3和4就是sheet1中商品簡稱那一列有;
再疊加if,如果輔助列不是錯誤,就用index返回sheet1中對應數據,都需要往右邊推一列,因為輔助列占了一個位置,或者其他函數,大概就是先這樣,再那樣,就行啦。
然后定位,錯誤,刪掉,但我們的數據是很大的,而且excel的函數但凡寫多點就令人窒息。
④power query、VBA、數據透視表,一般用這些稍微復雜點的方法,那肯定是經常做這些方面的工作,基本懂的都會用,本文主講臨時需求,簡單高效干完就擦屁股完事。
1.2python實現
讀寫文件用pandas庫為例
例如,我們知道這個關鍵字,必然在“商品簡稱”之中:
import pandas as pd
path = "d:/test.xlsx"
df = pd.read_excel(path)row_list= [] # 存符合條件的行號
for index_num in df.index:data = df.loc[index_num,"商品簡稱"]if data.find("家用")!=-1:print(data)row_list.append(index_num)
print(row_list)
?find方法,找到了返回關鍵字在str中起始位置,找不到返回-1;
別用str.contains方法,因為你會遇到很討厭的錯誤!同時避免了正則,運行效率upupup。
2.假如列很多,根本就不知道關鍵字在哪一列
此時excel就很蛋疼了,感覺應該可以,但是并不想去弄。
python實現:
此時基本上是遍歷數據硬來了,可以自寫方法,iloc或者loc,根據數據類型從行、列df.index,df.columns遍歷都行;
不過推薦使用一個函數iterrows(),返回df的行索引和df每一個行數據,注意是行數據series類型;
row_list= []
for row_index,row_data in df.iterrows():try:for col in df.columns:cell_data = df.loc[row_index,col]# if str(row_data[col]).find("猛火")!=-1:if str(cell_data).find("猛火")!=-1:row_list.append(row_index)raise ValueError("已找到條件")except:passprint(row_list)
①為什么要用try,except?
因為我們要的數據是整個行,只要其中某一列符合條件,整行都要。但凡哪一列找到了關鍵字,結果存到list中,直接報個錯,避免了往后面的列遍歷的無用功,比set去重好;
②注意要str(cell_data),因為時間列這種東西,總會出點小問題;