No module named 'PyEMD'

Even though I have installed the PyEMD package, I am still getting the error as “No module named ‘PyEMD’'”. I want to use EMD and EEMD packages for time series applications

Check that you have import pyemd and not import PyEMD.

ImportError Traceback (most recent call last)
Cell In[1], line 15
12 from sklearn.metrics import mean_squared_error
14 from pandas import concat
—> 15 from pyemd import CEEMDAN,EMD,EEMD
17 from keras.models import Sequential
18 from keras.layers import Dense

ImportError: cannot import name ‘CEEMDAN’ from ‘pyemd’ (C:\Users\EEE\New folder\Lib\site-packages\

After changing PyEMD to pyemd it is coming like this sir

Looking at pyemd · PyPI, it would seem that you need, e.g., from pyemd import emd and not from pyemd import EMD.

1 Like

TypeError Traceback (most recent call last)
Cell In[13], line 24
21 scaler_DO = MinMaxScaler(feature_range=(0, 1))
22 DO = scaler_DO.fit_transform(DO)
—> 24 emd = emd()
25 imfs = emd.emd(DO.reshape(-1),None,8)
27 c = int(len(do) * .85)

File src\pyemd\emd.pyx:51, in pyemd.emd.emd()

TypeError: emd() takes at least 3 positional arguments (0 given)

Well… I don’t know how you wrote that code, but you will need to read the documentation I linked in order to understand how to use the module, such as what arguments the emd() function takes.

1 Like

Ok thanks sir

Yes sir I tried that way also, but while running this is taking me to some other function which i dont want. The docstring of it I am providing here
Return the EMD between two histograms using the given distance matrix.

The Earth Mover’s Distance is the minimal cost of turning one histogram into
another by moving around the “dirt” in the bins, where the cost of moving
dirt from one bin to another is given by the amount of dirt times the
“ground distance” between the bins.

My purpose in using EMD is to get several intrinsic mode functions after decomposing a time series signal

to get several intrinsic mode functions after decomposing a time series signal

What do you mean by that?

I don’t know what EMD is, but if the function signature and docstring do not make sense for your application, perhaps you’re looking at the wrong place? Which tutorial that you’re following (if any) pointed you to this?

I am trying to decompose the wind speed into several intrinsic mode functions using Empirical mode function which is available in PyEMD library. After decomposing I will go for forecasting. Earlier it worked in my system, but I dont know why it is not working fine now.

I see what’s going on. The “EMD” in the PyEMD module stands for Earth Moving Distance, while the “EMD” you’re looking for is “Empirical mode function”.

The module you’re looking for is probably EMD-signal. Their code example

from PyEMD import EMD

import numpy as np

s = np.random.random(100)
emd = EMD()
IMFs = emd(s)

seems to match what you were trying to do.

ModuleNotFoundError Traceback (most recent call last)
Cell In[28], line 1
----> 1 from PyEMD import EMD
3 import numpy as np
5 s = np.random.random(100)

ModuleNotFoundError: No module named ‘PyEMD’
This is the problem I am getting dear and you got my problem exactly what I am trying to do

Try pip install EMD-signal and run the code again.

Ya i did that but this is also giving error

What error did you encounter?

I ran the code example on my computer, there is no error.

import numpy as np
import matplotlib.pyplot as plt
from pyemd import emd

Define your signal

t = np.linspace(0, 1, 1000, endpoint=False) # Time vector
signal = (1/4) * np.cos(48 * np.pi * t) + (1/2) * np.cos(20 * np.pi * t) + (1/3) * np.cos(10 * np.pi * t)

Plot the original signal

plt.figure(figsize=(10, 5))
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.title(‘Original Signal’)

Apply Empirical Mode Decomposition

emd = emd()
imfs = emd(signal)

Plot the IMFs

plt.subplot(2, 1, 2)
for i, imf in enumerate(imfs):
plt.plot(t, imf, label=f’IMF {i+1}')

plt.title(‘Intrinsic Mode Functions (IMFs)’)

ModuleNotFoundError Traceback (most recent call last)
Cell In[4], line 3
1 import numpy as np
2 import matplotlib.pyplot as plt
----> 3 from pyemd import emd
5 # Define your signal
6 t = np.linspace(0, 1, 1000, endpoint=False) # Time vector

File ~\New folder\Lib\site-packages\
3 version = “1.5.2”
4 logger = logging.getLogger(“pyemd”)
----> 6 from PyEMD.CEEMDAN import CEEMDAN # noqa
7 from PyEMD.EEMD import EEMD # noqa
8 from PyEMD.EMD import EMD # noqa

ModuleNotFoundError: No module named ‘PyEMD’

Is there any problem with the version that I am using, or should I use a different folder to keep the code files? I am so confused about this error, as previously it worked well for me. Please guide me as I am new to this