修改pandas中的nan索引

时间:2013-01-06 11:10:07

标签: python plot pandas

此问题与Visually separating bar chart clusters in pandas

有些相关

我正在阅读并绘制tmp.csv文件:

pol1 pol2 pol3
perim 0.54 0.64 0.40
mst 0.08 0.12 0.12
treeadd 0.25 0.34 0.35
health 0.14 0.17 0.17
bisort 0.48 0.56 0.56
em3d 0.14 0.17 0.17

g721d 1.41 2.58 2.58
mesa 1.16 1.8 1.8
epic 1.82 2.43 2.43
jpege 1.18 1.68 1.68

gzip 1.15 1.43 1.45
vpr 0.19 0.24 0.24
gcc 0.82 1.11 1.15
mcf 0.05 0.05 0.05
crafty 0.67 1.17 1.17

使用:

#!/usr/bin/env python

from pandas import *
import matplotlib.pyplot as plt
from numpy import zeros

# Create original dataframe
df = read_csv('tmp.csv',sep='\s')

print df

df.plot(kind='bar')
plt.show()

我得到了:

         pol1  pol2  pol3
perim    0.54  0.64  0.40
mst      0.08  0.12  0.12
treeadd  0.25  0.34  0.35
health   0.14  0.17  0.17
bisort   0.48  0.56  0.56
em3d     0.14  0.17  0.17
nan       NaN   NaN   NaN
g721d    1.41  2.58  2.58
mesa     1.16  1.80  1.80
epic     1.82  2.43  2.43
jpege    1.18  1.68  1.68
nan       NaN   NaN   NaN
gzip     1.15  1.43  1.45
vpr      0.19  0.24  0.24
gcc      0.82  1.11  1.15
mcf      0.05  0.05  0.05
crafty   0.67  1.17  1.17

enter image description here

请注意使用空行分隔簇。这就是我想要的效果。 有没有办法在x轴上用“”替换'nan'标签?

我试过了:     df.rename(index = {'nan':“”})

但是有一个断言失败

assert(new_axis.is_unique)

可能是因为df有多个'nan'索引。想法?

-Thanks

1 个答案:

答案 0 :(得分:2)

而不是修改DataFrame,或许只需更改matplotlib xtick标签:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('tmp.csv', sep = '\s')
df.plot(kind='bar')
locs, labels = plt.xticks()
plt.xticks(locs, [d if d==d else '' for d in df.index], rotation = 25)
plt.show()

enter image description here