对 pandas DataFrame 的每一列进行归一化
每一列的数据框(Dataframe)都需要根据该列第一个元素的值进行归一化处理。
for timestamp, prices in data.iteritems():
normalizedPrices = prices / prices[0]
print normalizedPrices # how do we update the DataFrame with this Series?
但是,一旦我们创建了归一化的数据列,怎么才能更新这个数据框呢?我觉得如果我们用 prices = normalizedPrices
这样的方式,我们其实是在操作数据框的一个副本,而不是直接修改原来的数据框。
3 个回答
0
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这个过程就像是搬家,把东西从一个房间搬到另一个房间。
在这个过程中,我们可能会用到一些工具,比如变量、函数或者库。变量就像是一个箱子,可以用来存放数据;函数就像是一个搬运工,负责把数据从一个地方搬到另一个地方;而库则是一些现成的工具,可以帮助我们更方便地完成任务。
当我们在编写代码时,可能会遇到一些问题,比如数据格式不对、找不到数据源或者搬运工(函数)出错。这些问题就像是在搬家的时候,可能会遇到箱子打不开、搬运工迟到等情况。
解决这些问题的方法通常是仔细检查代码,确保每一步都正确,就像在搬家时要确保每个箱子都打包好、搬运工都按时到达。
总之,编程就像是一个复杂的搬家过程,需要我们耐心和细心,才能把数据顺利地从一个地方搬到另一个地方。
import numpy
data[0:] = data[0:].values/data[0:1].values
1
把值赋给 data[col]
:
for col in data:
data[col] /= data[col].iloc[0]
2
最简单的方法可能是一次性对整个数据表进行标准化,这样就可以避免逐行或逐列的循环操作。
>>> df = pd.DataFrame({'a': [2, 4, 5], 'b': [3, 9, 4]}, dtype=np.float) # a DataFrame
>>> df
a b
0 2 3
1 4 9
2 5 4
>>> df = df.div(df.loc[0]) # normalise DataFrame and bind back to df
>>> df
a b
0 1.0 1.000000
1 2.0 3.000000
2 2.5 1.333333