如何将pandas数据框打印为一个漂亮的基于文本的表,如下所示?
+------------+---------+-------------+
| column_one | col_two | column_3 |
+------------+---------+-------------+
| 0 | 0.0001 | ABCD |
| 1 | 1e-005 | ABCD |
| 2 | 1e-006 | long string |
| 3 | 1e-007 | ABCD |
+------------+---------+-------------+
Run Code Online (Sandbox Code Playgroud) 我有两个pandas数据帧,我想在Jupyter笔记本中显示它们.
做类似的事情:
display(df1)
display(df2)
Run Code Online (Sandbox Code Playgroud)
在另一个下面显示它们:
我想在第一个数据框右侧有第二个数据帧.有一个类似的问题,但看起来有人对在显示它们之间的差异的一个数据框中合并它们感到满意.
这对我不起作用.在我的例子中,数据帧可以表示完全不同的(不可比较的元素),并且它们的大小可以不同.因此,我的主要目标是节省空间.
我知道我以前在某个地方见过一些例子,但对于我的生活,我在google搜索时找不到它.
我有一些数据行:
data = [[1,2,3],
[4,5,6],
[7,8,9],
]
Run Code Online (Sandbox Code Playgroud)
我想在表格中输出这些数据,例如
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
Run Code Online (Sandbox Code Playgroud)
显然,我可以使用类似漂亮的库或下载熊猫或其他东西,但我对此非常不感兴趣.
我只想在Jupyter笔记本单元格中输出行作为表格.我该怎么做呢?
我刚刚升级到Canopy 1.7.1; 我认为这个问题源于IPython版本从2.4.1到4.1.2的变化.
我遇到的问题是在Python中调用DataFrame对象似乎使用该__print__方法,即在输入print df和df解释器之间没有区别,不幸的是,这给了我一个全文输出而不是我通常得到的好表.
所以当我打电话df而不是桌子时,我得到的东西看起来就像这样:
date flag
1 20151102 0
98663 20151101 1
Run Code Online (Sandbox Code Playgroud)
这在升级后立即发生,我也尝试更新我的所有包.我也看过这个和这个,但没有一个解决方案适合我.('display.notebook_repr_html'已经True)
编辑:问题似乎与渲染HTML有关; 打字
from IPython.core.display import display, HTML
display(HTML('<h1>Hello, world!</h1>'))
Run Code Online (Sandbox Code Playgroud)
回报
<IPython.core.display.HTML object>
Run Code Online (Sandbox Code Playgroud) 这可行,p_table.apply(pd.Series.round)但它没有小数位
import pandas as pd
Series.round(decimals=0, out=None)
Run Code Online (Sandbox Code Playgroud)
我试过这个,p_table.apply(pd.Series.round(2))但得到这个错误:
unbound method round() must be called with Series instance as first argument (got int instance instead)
Run Code Online (Sandbox Code Playgroud)
如何将数据框中的所有元素舍入到两位小数?
[编辑]想出来了.
import numpy as np
np.round(p_table, decimals=2)
Run Code Online (Sandbox Code Playgroud) 当我df.show()在 jupyter notebook 中查看 pyspark 数据框时
它告诉我:
+---+-------+-------+-------+------+-----------+-----+-------------+-----+---------+----------+-----+-----------+-----------+--------+---------+-------+------------+---------+------------+---------+---------------+------------+---------------+---------+------------+
| Id|groupId|matchId|assists|boosts|damageDealt|DBNOs|headshotKills|heals|killPlace|killPoints|kills|killStreaks|longestKill|maxPlace|numGroups|revives|rideDistance|roadKills|swimDistance|teamKills|vehicleDestroys|walkDistance|weaponsAcquired|winPoints|winPlacePerc|
+---+-------+-------+-------+------+-----------+-----+-------------+-----+---------+----------+-----+-----------+-----------+--------+---------+-------+------------+---------+------------+---------+---------------+------------+---------------+---------+------------+
| 0| 24| 0| 0| 5| 247.3000| 2| 0| 4| 17| 1050| 2| 1| 65.3200| 29| 28| 1| 591.3000| 0| 0.0000| 0| 0| 782.4000| 4| 1458| 0.8571|
| 1| 440875| 1| 1| 0| 37.6500| 1| 1| 0| 45| 1072| 1| 1| 13.5500| 26| 23| 0| 0.0000| 0| 0.0000| 0| 0| 119.6000| 3| 1511| 0.0400|
| 2| 878242| 2| 0| 1| 93.7300| 1| 0| 2| 54| 1404| 0| …Run Code Online (Sandbox Code Playgroud) Jupyter 笔记本 (Python) 以漂亮的打印格式返回单元格中最后一个变量的值。
使用print(df)不会输出打印得很漂亮的数据帧。但这会很好地打印df到 Jupyter 笔记本上:
In[1]:
import pandas as pd
import numpy as np
filename = "Umsaetze.csv"
csv_file = f"~/Desktop/{filename}"
# read csv into DataFrame
df = pd.read_csv(csv_file, sep=";", decimal=",")
df
Run Code Online (Sandbox Code Playgroud)
如何以漂亮的打印格式打印多个变量?
这里只会df3以漂亮的打印格式打印:
In[2]:
df1
df2
df3
Run Code Online (Sandbox Code Playgroud)
这是答案(来自:在 iPython Notebook 中将 DataFrame 显示为表格)
from IPython.display import display, HTML
# Assuming that dataframes df1 and df2 are already defined:
print("Dataframe 1:")
display(df1.head())
print("Dataframe 2:")
display(df2.head())
Run Code Online (Sandbox Code Playgroud) 问题:如何从1个iPython Notebook行中一起打印2个DataFrame表,这样两个表都以漂亮的表格格式显示?
以下打印只是第二个,并print df.head()不会产生漂亮的表.
df = pd.DataFrame(np.random.randn(6,4), index=pd.date_range('20150101', periods=6), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.randn(6,4), index=pd.date_range('20150101', periods=6), columns=list('WXYZ'))
df.head()
df2.head()
Run Code Online (Sandbox Code Playgroud)

以下不会产生所需的漂亮表:
print df.head()
print df2.head()
Run Code Online (Sandbox Code Playgroud) 我正在将当前的DataBricks Spark笔记本迁移到Jupyter笔记本,DataBricks提供了方便,美观的display(data_frame)功能以可视化Spark数据帧和RDD,但是Jupyter没有直接等效的功能(我不确定,但我认为它是DataBricks的特定功能),我尝试过:
dataframe.show()
Run Code Online (Sandbox Code Playgroud)
但这是它的文本版本,当您有很多列中断时,因此,我试图找到一种比display()更好的呈现Spark数据帧的方法,而不是show()函数。是否有与此等效或替代的方法?
我已经看到了许多关于使用prettyprint等非常有用的文章;他们非常有帮助-谢谢。
我想知道是否有像Jupyter笔记本那样从函数中打印数据框并将其输出为“简洁”的内容:

我的主要原因是我想使用熊猫的样式功能来突出显示/着色。我也想从函数而不是Jupyter代码框中打印,因为我已经创建了一些程序包,并且我可能想在调用中吐出2个或更多数据帧。
单独使用prettyprint或print()可以得到纯文本输出:
> Year Month Mean Maximum Temperature Albury \
> 672 1955 January 30.8
> 673 1955 February 27.9
> 674 1955 March 26.7
> 675 1955 April 22.1
> ....
Run Code Online (Sandbox Code Playgroud)
我想要图形输出。不使用print(),例如
historic_dataframe
Run Code Online (Sandbox Code Playgroud)
如果在函数内不执行任何操作。
多谢您的宝贵时间。
我正在尝试在ipython笔记本中打印df,但它不会将其打印为表格.
data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions', 'Lions', 'Lions'],
'wins': [11, 8, 10, 15, 11, 6, 10, 4],
'losses': [5, 8, 6, 1, 5, 10, 6, 12]}
football = pd.DataFrame(data, columns=['year', 'team', 'wins', 'losses'])
print football
Run Code Online (Sandbox Code Playgroud)
产量
year team wins losses
0 2010 Bears 11 5
1 2011 Bears 8 8
2 2012 Bears 10 6
3 2011 Packers 15 1
4 2012 Packers 11 5
5 2010 …Run Code Online (Sandbox Code Playgroud)