Home > Back-end >  NameError: name 'df' is not defined
NameError: name 'df' is not defined

Time:03-23

def extract_features(files):
    # Sets the name to be the path to where the file is in my computer
    # file_name = os.path.join(os.path.abspath('voice')   '/'   str(files.file))
    file_name = os.path.join(os.path.abspath('/content/drive/MyDrive/ColabNotebooks/LibriSpeech/26-495-0000 (1).wav'))
    # Loads the audio file as a floating point time series and assigns the default sample rate
    # Sample rate is set to 22050 by default
    X, sample_rate = librosa.load(file_name, res_type='kaiser_fast')

    # Generate Mel-frequency cepstral coefficients (MFCCs) from a time series
    mfccs = np.mean(librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40).T, axis=0)

    # Generates a Short-time Fourier transform (STFT) to use in the chroma_stft
    stft = np.abs(librosa.stft(X))

    # Computes a chromagram from a waveform or power spectrogram.
    chroma = np.mean(librosa.feature.chroma_stft(S=stft, sr=sample_rate).T, axis=0)

    # Computes a mel-scaled spectrogram.
    mel = np.mean(librosa.feature.melspectrogram(X, sr=sample_rate).T, axis=0)

    # Computes spectral contrast
    contrast = np.mean(librosa.feature.spectral_contrast(S=stft, sr=sample_rate).T, axis=0)

    # Computes the tonal centroid features (tonnetz)
    tonnetz = np.mean(librosa.feature.tonnetz(y=librosa.effects.harmonic(X),
                                              sr=sample_rate).T, axis=0)

    # We add also the classes of each file as a label at the end
    label = files.label

    return mfccs, chroma, mel, contrast, tonnetz, label
    startTime = datetime.now()

# Applying the function to the train data by accessing each row of the dataframe
features_label = df.apply(extract_features, axis=1)

error message

CodePudding user response:

You need to first declare and define the dataframe, on which you want to apply this function. Then call the apply method on that particular dataframe.

For more information on correct usage of pandas.DataFrame.apply, check -- https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html

CodePudding user response:

You have to read the data from CSV file. And assign it to df and then do df.apply.

import pandas as pd
df = pd.read_csv("CSV file path")
  • Related