Python程式查詢字串列表中公共元素的頻率
在這篇 Python 文章中,給定的任務是獲取字串列表中公共元素的頻率。有時,使用 Python 分析的列表存在於 Excel 檔案中。要從 Excel 獲取此列表,使用一個名為 openpyxl 的模組。在這篇 Python 文章中,透過三個不同的示例,給出了獲取字串列表中重複項頻率的方法。在示例 1 中,找到了字串列表中公共字元的頻率。在接下來的兩個示例中,給出了方法,其中給出了字串列表中公共單詞的頻率。在這些示例中,字串列表是從 Excel 檔案的列中獲取的。
預處理步驟
步驟 1 − 使用 Google 帳戶登入。轉到 Google Colab。開啟一個新的 Colab 筆記本,並在其中編寫 Python 程式碼。
步驟 2 − 首先將 Excel 檔案“oldrecord5.xlsx”上傳到 Google Colab。
步驟 3 − 匯入“openpyxl”。
步驟 4 − 使用 openpyxl.load_workbook 函式載入 Excel 檔案。
步驟 5 − 在名為 myxlsxsheet 的變數中開啟活動工作表
步驟 6 − 使用 Pandas 將此字串列提取到資料框中。
步驟 7 − 將資料框轉換為列表。將此列表稱為“title_list”
這些示例中使用的 Excel 檔案內容

圖:顯示示例中使用的 Excel 檔案 oldrecord5.xls
將 Excel 檔案上傳到 colab

圖:將 oldrecord5.xls 上傳到 Google Colab
示例 1:使用 reduce 函式獲取字串列表中找到的字元的頻率
在這種方法中,使用了 reduce 函式。
步驟 1 − 使用來自上述預處理步驟的列表“title_list”。
步驟 2 − 使用 reduce、lambda 和 Counter 查詢這些字串中所有公共字元的字元頻率。
步驟 3 − 以字典的形式顯示結果。
在 Google Colab 工作表的程式碼單元格中編寫以下程式碼
import openpyxl
from openpyxl import load_workbook
import pandas as pd
from functools import reduce
from collections import Counter
# load excel file with its path
myxlsx = openpyxl.load_workbook("oldrecord5.xlsx")
myxlsxsheet = myxlsx.active
# Convert to DataFrame
df = pd.DataFrame(myxlsxsheet.values)
#Select those rows that contain "Discussion" String
df1=df[df.iloc[:,3].str.contains('Discussion')]
#Select only the titles' column
df2 = df1.iloc[:,3]
title_list=df2.values.tolist()
print(title_list)
itemFreq = reduce(lambda m, n: m & n, (Counter(elem) for elem in title_list[1:]),Counter(title_list[0]))
print("Common Characters and their occurrence : " , str(dict(itemFreq)))
檢視結果
按下程式碼單元格上的播放按鈕以檢視結果。
['Types of Environment - Class Discussion', 'Management Structure and Nature - Class Discussion', 'Macro- Demography, Natural, Legal & Political - Class Discussion']
Common Characters and their occurrence : {'e': 2, 's': 5, ' ': 5, 'o': 1, 'n': 1, 'i': 2, 'r': 1, 'm': 1, 't': 1, '-': 1, 'C': 1, 'l': 1, 'a': 1, 'D': 1, 'c': 1, 'u': 1}
圖 1:顯示使用 Google Colab 的結果。
示例 2:透過組合和排序列表獲取字串列表中找到的單詞的頻率
要遵循此方法,我們使用了以下步驟
步驟 1 − 使用來自上述預處理步驟的列表“title_list”。
步驟 2 − 對單個列表項使用 split 將其分成單詞,然後將這些單詞組合成一個組合列表。
步驟 3 − 對此組合列表進行排序,並使用 Counter 查詢頻率。以字典的形式顯示結果。
在 Google Colab 工作表的程式碼單元格中編寫以下程式碼。
from collections import Counter
import openpyxl
from openpyxl import load_workbook
import pandas as pd
# load excel file with its path
myxlsx = openpyxl.load_workbook("oldrecord5.xlsx")
myxlsxsheet = myxlsx.active
# Convert to DataFrame
df = pd.DataFrame(myxlsxsheet.values)
#Select those rows that contain "Discussion" String
df1=df[df.iloc[:,3].str.contains('Discussion')]
#Select only titles' column
df2 = df1.iloc[:,3]
title_list=df2.values.tolist()
print(title_list)
lst1= title_list[0].split()
lst2= title_list[1].split()
lst3= title_list[2].split()
combinedlist = [*lst1, *lst2, *lst3]
# Print output
print("Concatenated List: ",combinedlist)
for elem in sorted(combinedlist):
print(elem)
frequencyofelements=Counter(combinedlist)
print("frequency of elements: ",frequencyofelements)
示例 2 的輸出
要檢視 colab 中的結果,請按下程式碼單元格上的播放按鈕。
['Types of Environment - Class Discussion', 'Management Structure and Nature - Class Discussion', 'Macro- Demography, Natural, Legal & Political - Class Discussion']
Concatenated List: ['Types', 'of', 'Environment', '-', 'Class', 'Discussion', 'Management', 'Structure', 'and', 'Nature', '-', 'Class', 'Discussion', 'Macro-', 'Demography,', 'Natural,', 'Legal', '&', 'Political', '-', 'Class', 'Discussion']
&
-
-
-
Class
Class
Class
Demography,
Discussion
Discussion
Discussion
Environment
Legal
Macro-
Management
Natural,
Nature
Political
Structure
Types
and
of
frequency of elements: Counter({'-': 3, 'Class': 3, 'Discussion': 3, 'Types': 1, 'of': 1, 'Environment': 1, 'Management': 1, 'Structure': 1, 'and': 1, 'Nature': 1, 'Macro-': 1, 'Demography,': 1, 'Natural,': 1, 'Legal': 1, '&': 1, 'Political': 1})
圖 2:顯示使用 Google Colab 的結果。
示例 3:使用 Pandas 及其函式獲取字串列表中找到的單詞的頻率
要遵循此方法,我們使用了以下步驟
步驟 1 − 使用來自上述預處理步驟的列表“title_list”。
步驟 2 − 對單個列表項使用 split 將其分成單詞,然後將這些單詞組合成一個組合列表。
步驟 3 − 使用 Pandas Series,然後使用 value_counts() 函式計算所用單詞的頻率。顯示輸出。
在 Google Colab 工作表的程式碼單元格中編寫以下程式碼。
import openpyxl
from openpyxl import load_workbook
import pandas as pd
# load excel file with its path
myxlsx = openpyxl.load_workbook("oldrecord5.xlsx")
myxlsxsheet = myxlsx.active
# Convert to DataFrame
df = pd.DataFrame(myxlsxsheet.values)
#Select those rows that contain "Discussion" String
df1=df[df.iloc[:,3].str.contains('Discussion')]
#Select only titles' column
df2 = df1.iloc[:,3]
title_list=df2.values.tolist()
print(title_list)
lst1= title_list[0].split()
lst2= title_list[1].split()
lst3= title_list[2].split()
#combinedlist = [*lst1, *lst2, *lst3, *lst4, *lst5]
combinedlist = [*lst1, *lst2, *lst3]
# Print output
print("Concatenated List: ",combinedlist)
frequencyofelements = pd.Series(combinedlist).value_counts()
print("frequency of elements: ")
print(frequencyofelements)
檢視結果
按下程式碼單元格上的播放按鈕以檢視結果
['Types of Environment - Class Discussion', 'Management Structure and Nature - Class Discussion', 'Macro- Demography, Natural, Legal & Political - Class Discussion'] Concatenated List: ['Types', 'of', 'Environment', '-', 'Class', 'Discussion', 'Management', 'Structure', 'and', 'Nature', '-', 'Class', 'Discussion', 'Macro-', 'Demography,', 'Natural,', 'Legal', '&', 'Political', '-', 'Class', 'Discussion'] frequency of elements: - 3 Class 3 Discussion 3 Types 1 of 1 Environment 1 Management 1 Structure 1 and 1 Nature 1 Macro- 1 Demography, 1 Natural, 1 Legal 1 & 1 Political 1 dtype: int64
在這篇 Python 文章中,透過三個不同的示例,給出了顯示如何查詢字串列表中找到的元素頻率的方法。在第一個示例中,給出了透過將元素視為字串中出現的簡單字元來執行此操作的方法。在示例二和三中,首先將字串分隔成單個有意義的單詞,然後將它們用作元素以獲取頻率。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP