3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
Pandas允許您使用matplotlib繪制表(此處有詳細(xì)信息)。通常,這會(huì)將表格直接繪制到您不想要的圖表(帶有軸和所有內(nèi)容)上。但是,可以先刪除這些:
import matplotlib.pyplot as plt
import pandas as pd
from pandas.table.plotting import table # EDIT: see deprecation warnings below
ax = plt.subplot(111, frame_on=False) # no visible frame
ax.xaxis.set_visible(False) # hide the x axis
ax.yaxis.set_visible(False) # hide the y axis
table(ax, df) # where df is your data frame
plt.savefig('mytable.png')
輸出可能不是最漂亮的,但是您可以在此處找到table()函數(shù)的其他參數(shù)。也感謝這篇文章提供了有關(guān)如何在matplotlib中刪除軸的信息。
編輯:
這是一種使用上述方法進(jìn)行繪圖時(shí)模擬多索引的方式(無(wú)疑是很hacky)。如果您有一個(gè)稱為df的多索引數(shù)據(jù)框,如下所示:
first second
bar one 1.991802
two 0.403415
baz one -1.024986
two -0.522366
foo one 0.350297
two -0.444106
qux one -0.472536
two 0.999393
dtype: float64
首先重置索引,使它們成為普通列
df = df.reset_index()
df
first second 0
0 bar one 1.991802
1 bar two 0.403415
2 baz one -1.024986
3 baz two -0.522366
4 foo one 0.350297
5 foo two -0.444106
6 qux one -0.472536
7 qux two 0.999393
通過(guò)將它們?cè)O(shè)置為空字符串,從高階多索引列中刪除所有重復(fù)項(xiàng)(在我的示例中,我在“ first”中僅具有重復(fù)索引):
df.ix[df.duplicated('first') , 'first'] = ''
df
first second 0
0 bar one 1.991802
1 two 0.403415
2 baz one -1.024986
3 two -0.522366
4 foo one 0.350297
5 two -0.444106
6 qux one -0.472536
7 two 0.999393
將“索引”上的列名稱更改為空字符串
new_cols = df.columns.values
new_cols[:2] = '','' # since my index columns are the two left-most on the table
df.columns = new_cols
現(xiàn)在調(diào)用表格函數(shù),但將表格中的所有行標(biāo)簽設(shè)置為空字符串(這可確保不顯示繪圖的實(shí)際索引):
table(ax, df, rowLabels=['']*df.shape[0], loc='center')
等:
您不太漂亮但功能齊全的多索引表。
編輯:棄用警告
正如評(píng)論中指出的,import語(yǔ)句用于table:
from pandas.tools.plotting import table
現(xiàn)在已在較新版本的熊貓中棄用,而支持:
from pandas.plotting import table
添加回答
舉報(bào)