Source code for PAMI.extras.DF2DB.denseDF2DBPlus

# DenseFormatDFPlus in this code the dense dataframe is converting databases into different transactional, temporal, utility types.
#
# **Importing this algorithm into a python program**
# --------------------------------------------------------
#
#             from PAMI.extras.DF2DB import DenseFormatDFPlus as db
#
#             obj = db.DenseFormatDFPlus(idf, ">=", 16)
#
#             obj.save(oFile)
#
#             obj.createTransactional("outputFileName") # To create transactional database
#
#             obj.createTemporal("outputFileName") # To create temporal database
#
#             obj.createUtility("outputFileName") # To create utility database
#
#             obj.getFileName("outputFileName") # To get file name of the database
#




__copyright__ = """
Copyright (C)  2021 Rage Uday Kiran

     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""

import pandas as pd
import sys

[docs] class DenseFormatDFPlus: """ :Description: This class create Data Base from DataFrame. :Attributes: :param inputDF: dataframe : It is dense DataFrame :param thresholdConditionDF: str or int or float: It is condition to judge the value in dataframe **Importing this algorithm into a python program** -------------------------------------------------------- .. code-block:: python from PAMI.extras.DF2DB import DenseFormatDFPlus as db obj = db.DenseFormatDFPlus(iDdf, ">=", 16) obj.save(oFile) obj.createTransactional("outputFileName") # To create transactional database obj.createTemporal("outputFileName") # To create temporal database obj.createUtility("outputFileName") # To create utility database obj.getFileName("outputFileName") # To get file name of the database """ def __init__(self, inputDF, thresholdConditionDF) -> None: self.inputDF = inputDF.T self.thresholdConditionDF = thresholdConditionDF self.tids = [] self.items = [] self.outputFile = ' ' self.items = list(self.inputDF.index) self.tids = list(self.inputDF.columns) self.df = pd.merge(self.inputDF, self.thresholdConditionDF, left_index=True, right_index=True)
[docs] def createTransactional(self, outputFile: str) -> None: """ Create transactional data base :param outputFile: Write transactional data base into outputFile :type outputFile: str :return: None """ self.outputFile = outputFile with open(outputFile, 'w') as f: for tid in self.tids: transaction = [item for item in self.items if (self.df.at[item, 'condition'] == '>' and self.df.at[item, tid] > self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '>=' and self.df.at[item, tid] >= self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '<=' and self.df.at[item, tid] <= self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '<' and self.df.at[item, tid] < self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '==' and self.df.at[item, tid] == self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '!=' and self.df.at[item, tid] != self.df.at[item, 'threshold'])] if len(transaction) > 1: f.write(f'{transaction[0]}') for item in transaction[1:]: f.write(f',{item}') elif len(transaction) == 1: f.write(f'{transaction[0]}') else: continue f.write('\n')
[docs] def createTemporal(self, outputFile: str) -> None: """ Create temporal data base :param outputFile: Write temporal data base into outputFile :type outputFile: str :return: None """ self.outputFile = outputFile with open(outputFile, 'w') as f: for tid in self.tids: transaction = [item for item in self.items if (self.df.at[item, 'condition'] == '>' and self.df.at[item, tid] > self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '>=' and self.df.at[item, tid] >= self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '<=' and self.df.at[item, tid] <= self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '<' and self.df.at[item, tid] < self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '==' and self.df.at[item, tid] == self.df.at[item, 'threshold']) or (self.df.at[item, 'condition'] == '!=' and self.df.at[item, tid] != self.df.at[item, 'threshold'])] if len(transaction) > 1: f.write(f'{tid}') for item in transaction: f.write(f',{item}') elif len(transaction) == 1: f.write(f'{tid}') f.write(f',{transaction[0]}') else: continue f.write('\n')
[docs] def createUtility(self, outputFile: str) -> None: """ Create the utility data base. :param outputFile: Write utility data base into outputFile :type outputFile: str :return: None """ self.outputFile = outputFile with open(self.outputFile, 'w') as f: for tid in self.tids: df = self.inputDF.loc[tid].dropna() f.write(f'{df.index[0]}') for item in df.index[1:]: f.write(f'\t{item}') f.write(f':{df.sum()}:') f.write(f'{df.at[df.index[0]]}') for item in df.index[1:]: f.write(f'\t{df.at[item]}') f.write('\n')
[docs] def getFileName(self) -> str: return self.outputFile
if __name__ == '__main__': a = DenseFormatDFPlus(sys.argv[1], sys.argv[3]) a.DenseFormatDFPlus()