Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Python 3中对频域数据进行分类?(无法将字符串转换为浮点)_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 如何在Python 3中对频域数据进行分类?(无法将字符串转换为浮点)

Python 3.x 如何在Python 3中对频域数据进行分类?(无法将字符串转换为浮点),python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我已使用以下方法将数据帧从时域转换为频域: df = np.fft.fft(df) 现在我需要使用一些机器学习算法对数据进行分类,比如随机森林和高斯朴素贝叶斯。问题是我不断地遇到这个错误: 无法将字符串转换为浮点:“(2.9510193818016135-0.47803712350473193j)” 我试图将字符串转换为DataFrame中的浮点数,但仍然出现相同的错误 如何解决此问题以获得分类结果?假设您的结果如下所示,您首先需要转换为真正的复杂类型: In[84]: # data setu

我已使用以下方法将数据帧从时域转换为频域:

df = np.fft.fft(df)
现在我需要使用一些机器学习算法对数据进行分类,比如随机森林和高斯朴素贝叶斯。问题是我不断地遇到这个错误:

无法将字符串转换为浮点:“
(2.9510193818016135-0.47803712350473193j)

我试图将字符串转换为
DataFrame
中的浮点数,但仍然出现相同的错误


如何解决此问题以获得分类结果?

假设您的结果如下所示,您首先需要转换为真正的复杂类型:

In[84]:
# data setup
df = pd.DataFrame({'fft':['(2.9510193818016135-0.47803712350473193j)']})
df

Out[84]: 
                                         fft
0  (2.9510193818016135-0.47803712350473193j)
现在转换为
complex
类型:

In[85]:

df['complex'] = df['fft'].apply(complex)
df

Out[85]: 
                                         fft                         complex
0  (2.9510193818016135-0.47803712350473193j)  (2.9510193818-0.478037123505j)
现在,您可以使用
apply
cmath.polar
提取极坐标:

In[86]:
import cmath
df['polar_x'],df['polar_y'] = df['complex'].apply(lambda x: cmath.polar(x)[0]), df['complex'].apply(lambda x: cmath.polar(x)[1])
df

Out[86]: 
                                         fft                         complex  \
0  (2.9510193818016135-0.47803712350473193j)  (2.9510193818-0.478037123505j)   

    polar_x   polar_y  
0  2.989487 -0.160595 
现在,
d类型
是兼容的,因此您可以传递浮点列:

In[87]:
df.dtypes

Out[87]: 
fft            object
complex    complex128
polar_x       float64
polar_y       float64
dtype: object

如果需要,您也可以使用

假设您的结果类似于以下表单,您首先需要转换为真正的复杂类型:

In[84]:
# data setup
df = pd.DataFrame({'fft':['(2.9510193818016135-0.47803712350473193j)']})
df

Out[84]: 
                                         fft
0  (2.9510193818016135-0.47803712350473193j)
现在转换为
complex
类型:

In[85]:

df['complex'] = df['fft'].apply(complex)
df

Out[85]: 
                                         fft                         complex
0  (2.9510193818016135-0.47803712350473193j)  (2.9510193818-0.478037123505j)
现在,您可以使用
apply
cmath.polar
提取极坐标:

In[86]:
import cmath
df['polar_x'],df['polar_y'] = df['complex'].apply(lambda x: cmath.polar(x)[0]), df['complex'].apply(lambda x: cmath.polar(x)[1])
df

Out[86]: 
                                         fft                         complex  \
0  (2.9510193818016135-0.47803712350473193j)  (2.9510193818-0.478037123505j)   

    polar_x   polar_y  
0  2.989487 -0.160595 
现在,
d类型
是兼容的,因此您可以传递浮点列:

In[87]:
df.dtypes

Out[87]: 
fft            object
complex    complex128
polar_x       float64
polar_y       float64
dtype: object

如果需要,您也可以使用

这些是复数,您建议如何转换为浮点数?基本上,你需要将这些数字转换成极坐标或矩形格式,然后拆分它们。怎么做?这些都是复数,你打算如何转换成浮点数?基本上,您需要将这些数字转换为极坐标或rect格式,并将其拆分如何实现?为什么我会得到'fft'和'complex'的KeyError?因为您的df是一个numpy数组,在我的示例中,我有一个熊猫数据帧,所以您需要修改您的代码不,我甚至使用了熊猫数据帧(df=pd.dataframe(df))为了确保它是一个DataFrame,那么您有这些列吗?我举了一个说明性的例子,我不知道实际的df是什么样子,例如
df.columns.tolist()
返回什么?那么你有那些列吗?我举了一个示例,我不知道实际的df是什么样子,例如
df.columns.tolist()
返回什么?这里的要点是,你使用你拥有的任何列名,或者你用这些列名构造一个df,这是你可以向上看的东西为什么我得到'fft'和'complex'的KeyError?因为你的df是一个numpy数组,在我的示例中,我有一个熊猫数据帧,所以你需要修改你的代码不,我甚至使用了熊猫数据帧(df=pd.dataframe)(df))为了确保它是一个DataFrame,那么你有那些列吗?我举出了一个示例,我不知道你真正的df是什么样子,例如
df.columns.tolist()是什么
return?你有那些列吗?我举了一个说明性的例子,我不知道你真正的df是什么样子,例如
df.columns.tolist()
return?这里的要点是,你可以使用你拥有的任何列名,或者用这些列名构造一个df,这是你可以查找的