将log2转换应用于pandas DataFrame

时间:2017-10-25 05:56:11

标签: python pandas numpy dataframe

我想将带有applymapnp2.log2的log2应用于数据并使用boxplot显示,这是我编写的代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

data = pd.read_csv('testdata.csv')
df = pd.DataFrame(data)

################################
    # a.
df.boxplot()
plt.title('Raw Data')

################################
    # b.
df.applymap(np.log2)
df.boxplot()
plt.title('Normalized Data')

以下是我为RAW数据获得的箱线图,这是好的,但我在应用log2转换后得到了相同的箱图!任何人都可以请告诉我我做错了什么,应该纠正什么来获得applymap和np.log2的规范化数据 enter image description here

3 个答案:

答案 0 :(得分:4)

很多更快的方法是:

df = np.log2(df)

不要忘记将结果分配回df

答案 1 :(得分:1)

根据API Reference DataFrame.applymap(func)

  

将函数应用于要运行的DataFrame   元素,即喜欢为每个系列做map(func,series)   数据帧

它不会更改您获取返回值所需的DataFrame并使用它。

答案 2 :(得分:0)

Pandas 现在具有 transform() 函数,在您的情况下相当于:

df = df.transform(lambda x: np.log2(x))