Я написал программу на python для ранжирования имен, которые появляются в файлах, в зависимости от их частоты.Другими словами, существует несколько файлов, и требуется ранжировать частоту имен, которая появляется чаще всего, а затем наименее в конце.Каждое имя может появиться только один раз в каждом файле.Другими словами, одно и то же имя не может повторяться в одном и том же файле.
Ниже приведена программа, которую я написал и хотел услышать ваши мысли о стиле / эффективности и советы по ее улучшению..
from pandas import DataFrame
filenames = [ 'Q1.txt', 'Q2.txt' , 'Q3.txt' , 'Q4.txt']
pathToDataFiles = "C:\\DataFiles\\"
outputHTMLFile =pathToDataFiles + "list.html"
df = DataFrame( columns = ['Name', 'Q1', 'Q2', 'Q3', 'Q4' ])
currentQtr = 1
for filename in filenames:
entireFilename = pathToDataFiles + filename
# Get all the names from the file
allNames = [line.rstrip('\n') for line in open(entireFilename)]
# For each name from the latest .txt file
for eachname in allNames:
# If the name is in the dataframe then replace the current quarter with 'Y'
if ( df['Name'].str.contains(eachname).any() ):
rowNumber = df.loc[df['Name'] == eachname].index[0]
df.iloc[[rowNumber],[currentQtr]] = 'Y'
else:
# It is a new name, thus, replace the current Qtr with 'Y'. Rest with be Nan
emptyDataFrame =DataFrame( columns = ['Name', 'Q1', 'Q2', 'Q3', 'Q4' ])
emptyDataFrame = emptyDataFrame.append([{'Name':eachname}])
rowNumber = 0
emptyDataFrame.iloc[[rowNumber], [currentQtr]] = 'Y'
df = df.append(emptyDataFrame)
df.index = range(len(df))
currentQtr = currentQtr + 1
# Create a new column with 'Total' occurence of names
df['Total'] = currentQtr - df.isnull().sum(axis=1) - 1
# Sort by total
df = df.sort_values(by=['Total'], ascending=False)
df.index = range(len(df))
# Fill all Nan with 'X'
df = df.fillna('X')
df.to_html(outputHTMLFile)