Python中查找元素的方法詳解
python查找元素新方法
對(duì)于編程的入門選手來(lái)說(shuō),查找一個(gè)數(shù)據(jù)表中元素出現(xiàn)的個(gè)數(shù),腦海中立刻閃現(xiàn):兩個(gè)for循環(huán)——秒了。但是,對(duì)于Python來(lái)說(shuō),我在它的初始庫(kù)里面找到了另外一種辦法,能夠讓我們優(yōu)雅地解決這個(gè)問(wèn)題。話不多說(shuō),讓我們進(jìn)入正題。
1.導(dǎo)入必要的庫(kù)
import pandas as pd import numpy as np from collections import Counter import string
我們主要依靠Counter實(shí)現(xiàn)對(duì)元素的統(tǒng)計(jì),而這個(gè)庫(kù)屬于python的標(biāo)準(zhǔn)庫(kù),無(wú)需額外安裝。
2.生成隨機(jī)樣本數(shù)據(jù)
查找元素當(dāng)然需要先構(gòu)造數(shù)據(jù)集,為了大家編寫方便,我這里直接隨機(jī)生成(這種方法和實(shí)際開(kāi)發(fā)遇到需求時(shí)快速驗(yàn)證的原理相同,重點(diǎn)是快速高效,不為數(shù)據(jù)而煩惱)
定義函數(shù):generate_data:
def generate_data(rows,columns):
```
按照指定行列數(shù)生成隨機(jī)字母數(shù)據(jù),并將其轉(zhuǎn)換為DataFrame類型的變量
:param:row:指定的行數(shù)
:param:columns:指定列數(shù)
:return:df
```
columns_name = [f'col_{i+1}' for i in range(columns)]
letters = string.ascii_letters
random_data = np.random.choice(list(letters),size=(rows,columns))
return pd.DataFrame(random_data,columns=columns_name)
letters:它是一個(gè)字符串,主要是為了后續(xù)從中隨機(jī)選擇字母元素

3.統(tǒng)計(jì)元素并保存結(jié)果
定義函數(shù)分別執(zhí)行統(tǒng)計(jì)和對(duì)結(jié)果的保存:count_analysis和data_save。代碼如下:
def count_analysis(df):
all_elements = df.values.flatten()
return Counter(all_elements)
def data_save(elements_data):
data = pd.DataFrame.from_dict(elements_data,orient='index',columns=['count'])
data.index_name = 'elements'
file_path = './weblog/result.csv' #替換為自己的文件路徑
data.to_csv(file_path)
注意事項(xiàng):
1.df.values.flatten()
df.values:
df 是一個(gè) pandas 的 DataFrame 對(duì)象,df.values 方法用于獲取 DataFrame 中的數(shù)據(jù),并將其轉(zhuǎn)換為 NumPy 的 ndarray(多維數(shù)組)對(duì)象。該數(shù)組包含了 DataFrame 中的所有元素,并且保留了原有的數(shù)據(jù)類型。
ndarray.flatten()
flatten() 是 NumPy 數(shù)組對(duì)象的一個(gè)方法,用于將多維數(shù)組轉(zhuǎn)換為一維數(shù)組。它會(huì)按照行優(yōu)先(C 風(fēng)格)的順序?qū)?shù)組中的元素依次排列成一個(gè)一維數(shù)組。

2.Counter類
Counter 是 collections 模塊中的一個(gè)類,它繼承自dict,用于統(tǒng)計(jì)可迭代對(duì)象中每個(gè)元素的出現(xiàn)次數(shù)。它返回一個(gè)字典,其中鍵是可迭代對(duì)象中的元素,值是該元素的出現(xiàn)次數(shù)。但是讀者應(yīng)該注意到,我們?cè)趯⒁粋€(gè)Counter對(duì)象(elements_data)保存為DataFrame類型的變量時(shí),使用的是“pd.DataFrame.from_dict”方法。
4.執(zhí)行主函數(shù)
準(zhǔn)備工作已經(jīng)完成,接下來(lái)配置初始化參數(shù),執(zhí)行程序:
def main():
ROW = 40
COL = 12
df = generate_data(ROW,COL)
element_data = count_analysis(df)
data_save(element_data)
if __name__ == '__main__':
main()
你將得到一個(gè)result.csv文件。
總結(jié):
該方法的優(yōu)點(diǎn):我們可以看到使用Counter類進(jìn)行統(tǒng)計(jì),它不會(huì)涉及對(duì)列名的處理和引用,直抵問(wèn)題核心,擴(kuò)展了它的適用范圍。
該程序存在哪些可擴(kuò)展的點(diǎn)
a.首先,可以對(duì)其進(jìn)行擴(kuò)充,編寫一個(gè)多文件處理的邏輯,使其能夠處理多個(gè)數(shù)據(jù)文件。
b.其次,可以考慮對(duì)結(jié)果進(jìn)行篩選,比如我們對(duì)元素出現(xiàn)的次數(shù)其進(jìn)行排序,然后選出前幾名。
c.對(duì)于程序的健壯性,我們還需要考慮數(shù)據(jù)集里面是否存在缺失值或異常元素。
到此這篇關(guān)于Python中查找元素的方法詳解的文章就介紹到這了,更多相關(guān)Python查找元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用pycharm開(kāi)發(fā)django項(xiàng)目示例代碼
這篇文章主要介紹了用pycharm開(kāi)發(fā)django項(xiàng)目示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python實(shí)現(xiàn)的計(jì)算馬氏距離算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的計(jì)算馬氏距離算法,簡(jiǎn)單說(shuō)明了馬氏距離算法原理,并結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)與使用馬氏距離算法的相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
python使用itchat模塊給心愛(ài)的人每天發(fā)天氣預(yù)報(bào)
這篇文章主要介紹了python使用itchat模塊給心愛(ài)的人每天發(fā)天氣預(yù)報(bào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
解決jupyter 在瀏覽器中 代碼不執(zhí)行的問(wèn)題
這篇文章主要介紹了解決jupyter 在瀏覽器中 代碼不執(zhí)行的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Python學(xué)習(xí)之基礎(chǔ)語(yǔ)法介紹
大家好,本篇文章主要講的是Python學(xué)習(xí)之基礎(chǔ)語(yǔ)法介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
Python?正則表達(dá)式從入門到實(shí)戰(zhàn)(看完就能直接用在項(xiàng)目里)
本文介紹了Python正則表達(dá)式的基本概念、核心模塊re及其常用方法match、search、findall,詳細(xì)講解了正則表達(dá)式基礎(chǔ)語(yǔ)法、分組與分組引用、貪婪與非貪婪模式、修飾符等高級(jí)特性,并提供了一些實(shí)戰(zhàn)案例,感興趣的朋友跟隨小編一起看看吧2026-04-04
如何修改一個(gè)conda環(huán)境的python版本詳解
在深度學(xué)習(xí)開(kāi)發(fā)中,Python版本不匹配常導(dǎo)致依賴沖突與GPU調(diào)用失敗,這篇文章主要介紹了如何修改一個(gè)conda環(huán)境的python版本的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-03-03

