Mer*_*moz 13 python numpy pandas scikit-learn
我正在使用read_csv()熊猫的优秀功能,它给出了:
In [31]: data = pandas.read_csv("lala.csv", delimiter=",")
In [32]: data
Out[32]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 12083 entries, 0 to 12082
Columns: 569 entries, REGIONC to SCALEKER
dtypes: float64(51), int64(518)
Run Code Online (Sandbox Code Playgroud)
但是当我从scikit-learn应用函数时,我松开了有关列的信息:
from sklearn import preprocessing
preprocessing.scale(data)
Run Code Online (Sandbox Code Playgroud)
给出numpy数组.
有没有办法在不丢失信息的情况下将scikit或numpy函数应用于DataFrames?
Mer*_*moz 19
这可以通过将返回的数据包装在数据框中,index并使用其中的columns信息来完成.
import pandas as pd
pd.DataFrame(preprocessing.scale(data), index = data.index, columns = data.columns)
Run Code Online (Sandbox Code Playgroud)
一种(略显天真)的方式是分别存储数据框的结构,即其列和索引,然后从预处理结果中创建一个新的数据框,如下所示:
In [15]: data = np.zeros((2,2))
In [16]: data
Out[16]:
array([[ 0., 0.],
[ 0., 0.]])
In [17]: from pandas import DataFrame
In [21]: df = DataFrame(data, index = ['first', 'second'], columns=['c1','c2'])
In [22]: df
Out[22]:
c1 c2
first 0 0
second 0 0
In [26]: i = df.index
In [27]: c = df.columns
# generate new data as a numpy array
In [29]: df = DataFrame(np.random.rand(2,2), index=i, columns=c)
In [30]: df
Out[30]:
c1 c2
first 0.821354 0.936703
second 0.138376 0.482180
Run Code Online (Sandbox Code Playgroud)
正如您所看到的Out[22],我们从数据框开始,然后在In[29]框架内放置一些新数据,保持行和列不变.我假设你的预处理将not洗牌数据的行/列.
| 归档时间: |
|
| 查看次数: |
2925 次 |
| 最近记录: |