Программа Python для ранжирования на основе частоты имен, которые появляются в текстовых файлах - PullRequest
0 голосов
/ 18 февраля 2019

Я написал программу на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...