要約:パンダのデータフレームの列の対数を取得するにはどうすればよいですか? 私はnumpy.log()
がそれに取り組むべきだと考えましたが、そうではありません。データフレームにNaN
がいくつかあるので私はそれが疑わしいですか?パンダシリーズ/データフレームの対数
私のコード全体は以下の通りです。基本的に私の究極の目標(ちょっと誇張して)は、いくつかの選択された列の異なる選択された列の行をいくつかのサブプロットにプロットすることです(したがって、異なるグループ間でループを繰り返します。より洗練されたソリューション、私はそれを感謝するが、それは私を押す主要な事ではない)。あるデータフレームの値の対数と他のデータフレームのある値の対数をプロットする必要があります。そして、ここに問題があります.np.logのプロットラインで、私はこのエラーを受け取ります:AttributeError: 'float' object has no attribute 'log'
(もしnpの代わりにmathを使うなら、私はこれを得ます:TypeError: cannot convert the series to <type 'float'>
) どうすればいいですか?
ありがとうございます。ここ はコードです:
import numpy as np
import math
import pandas as pd
import matplotlib.pyplot as plt
hf = pd.DataFrame({'Z':np.arange(0,100,1),'A':(10*np.random.rand(100)), 'B':(10*np.random.rand(100)),'C':(10*np.random.rand(100)),'D':(10*np.random.rand(100)),'E':(10*np.random.rand(100)),'F':(10*np.random.rand(100))})
df = pd.DataFrame({'Z':np.arange(0,100,1),'A':(10*np.random.rand(100)), 'B':(10*np.random.rand(100)),'C':(10*np.random.rand(100)),'D':(10*np.random.rand(100)),'E':(10*np.random.rand(100)),'F':(10*np.random.rand(100))})
hf.loc[0:5,'A']=np.nan
df.loc[0:5,'A']=np.nan
hf.loc[53:58,'B']=np.nan
df.loc[53:58,'B']=np.nan
hf.loc[90:,'C']=np.nan
df.loc[90:,'C']=np.nan
I = ['A','B']
II = ['C','D']
III = ['E','F']
IV = ['F','A']
runs = [I,II,III,IV]
inds = [10,20,30,40]
fig = plt.figure(figsize=(6,4))
for r in runs:
data = pd.DataFrame(index=df.index,columns=r)
HF = pd.DataFrame(index=hf.index,columns=r)
#pdb.set_trace()
for i in r:
data.loc[:,i] = df.loc[:,i]
HF.loc[:,i] = hf.loc[:,i]
for c,z in enumerate(inds):
ax=fig.add_subplot()
ax = plt.plot(math.log1p(HF.loc[z]),Tdata.loc[z],linestyle=":",marker="o",markersize=5,label=inds[c].__str__())
# or the other version
#plt.plot(np.log(1 + HF.loc[z]),Tdata.loc[z],linestyle=":",marker="o",markersize=5,label=inds[c].__str__())
@Jasonが指摘したように、this answerはトリックをしました!ありがとうございました!
とうまく動作するはずです:で、あなたのコードの先頭を置き換えコード。これらはあなたの質問に答えますか? http://stackoverflow.com/questions/16968433/error-when-trying-to-apply-log-method-to-pandas-data-frame-column-in-python http://stackoverflow.com/questions/23748842/understanding-math-errors-in-pandas-dataframes – Jason
いいえ、私は両方を試しました。どちらも動作しません。しかし、あなたは正しい、私は両方の例を与えて、それを修正するべきだった。 – durbachit
@ Jasonが指摘したように、[この回答](http://stackoverflow.com/questions/16968433/error-when-trying-to-apply-log-method-to-pandas-data-frame-column-in- python)がトリックをやった!ありがとうございました! – durbachit