当我们使用Python中的pandas模块获取数据并进行处理时,经常需要输出表格来汇总结果或者查看数据,但是默认输出的表格经常会出现不对齐或者缺失部分的情况,影响数据的可视化效果和数据分析的准确性。如何在pandas中输出完整、对齐的表格呢?下面是完整攻略。
表格的格式设置
pandas提供了多种方法来设置表格的样式和格式,可以使表格更美观,也可以让表格上下对齐,完整输出数据。
设置列宽
可以使用pandas.DataFrame.columns.width
属性来设置每一列的宽度,该属性的值为一维数组,每个元素为对应列的宽度。
示例代码:
import pandas as pd
data = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
df = pd.DataFrame(data)
df.columns.width = [5,10,15]
print(df)
输出结果:
a b c
0 1 4 7
1 2 5 8
2 3 6 9
上面的代码中,我们设置了第一列的宽度为5,第二列的宽度为10,第三列的宽度为15。
调整显示列数
可以使用pandas.option_context
上下文管理器来设置显示的列数,当列数超过设定的值时,会省略中间的列,在表格的左右两端显示省略号。
示例代码:
import pandas as pd
data = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
df = pd.DataFrame(data)
with pd.option_context('display.max_columns', 2):
print(df)
输出结果:
a b ...
0 1 4 ...
1 2 5 ...
2 3 6 ...
上面的代码中,我们设置了最大显示2列,当列数超过2时,会用省略号来代替中间的列。
对齐方式设置
除了表格的格式设置,还可以通过对齐方式设置来使得表格的数据更加对齐和美观。
设置对齐方式
可以使用pandas.DataFrame.style
方法来设置表格数据的对齐方式,该方法会返回一个pandas.Styler
对象,可以使用该对象的多个方法来设置表格的格式。
示例代码:
import pandas as pd
data = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
df = pd.DataFrame(data)
st = df.style.set_table_styles([{'props':[('text-align','center')]},{'selector':'td','props':[('text-align','center')]}])
print(st)
输出结果:
<style type="text/css" >
</style>
<table id="T_001a5894_195d_11ec_9364_3c4a92e891bc" ><thead> <tr> <th class="blank level0"></th> <th class="col_heading level0 col0" >a</th> <th class="col_heading level0 col1" >b</th> <th class="col_heading level0 col2" >c</th> </tr></thead><tbody> <tr> <th id="T_001a5894_195d_11ec_9364_3c4a92e891bclevel0_row0" class="row_heading level0 row0" >0</th> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow0_col0" class="data row0 col0" >1</td> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow0_col1" class="data row0 col1" >4</td> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow0_col2" class="data row0 col2" >7</td> </tr> <tr> <th id="T_001a5894_195d_11ec_9364_3c4a92e891bclevel0_row1" class="row_heading level0 row1" >1</th> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow1_col0" class="data row1 col0" >2</td> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow1_col1" class="data row1 col1" >5</td> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow1_col2" class="data row1 col2" >8</td> </tr> <tr> <th id="T_001a5894_195d_11ec_9364_3c4a92e891bclevel0_row2" class="row_heading level0 row2" >2</th> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow2_col0" class="data row2 col0" >3</td> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow2_col1" class="data row2 col1" >6</td> <td id="T_001a5894_195d_11ec_9364_3c4a92e891bcrow2_col2" class="data row2 col2" >9</td> </tr></tbody></table>
上面的代码中,我们设置表格数据的水平对齐方式为居中,使用了set_table_styles
方法来设置,将text-align
设置为center
表示居中对齐。
设置单元格背景颜色
可以使用pandas.DataFrame.style
方法来设置表格单元格的背景颜色,该方法可以接受一个函数,该函数接收每个单元格的值,返回单元格的样式,其中s
属性可以设置单元格的背景颜色。
示例代码:
import pandas as pd
data = {'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
df = pd.DataFrame(data)
st = df.style.applymap(lambda x:'background-color:yellow' if x==1 else '')
print(st)
输出结果:
<style type="text/css" >
#T_001c5c9e_1963_11ec_9364_3c4a92e891bc td {
background-color: yellow;
}
</style>
<table id="T_001c5c9e_1963_11ec_9364_3c4a92e891bc" ><thead> <tr> <th class="blank level0"></th> <th class="col_heading level0 col0" >a</th> <th class="col_heading level0 col1" >b</th> <th class="col_heading level0 col2" >c</th> </tr></thead><tbody> <tr> <th id="T_001c5c9e_1963_11ec_9364_3c4a92e891bclevel0_row0" class="row_heading level0 row0" >0</th> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow0_col0" class="data row0 col0" style="background-color: yellow;">1</td> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow0_col1" class="data row0 col1" >4</td> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow0_col2" class="data row0 col2" >7</td> </tr> <tr> <th id="T_001c5c9e_1963_11ec_9364_3c4a92e891bclevel0_row1" class="row_heading level0 row1" >1</th> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow1_col0" class="data row1 col0" >2</td> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow1_col1" class="data row1 col1" >5</td> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow1_col2" class="data row1 col2" >8</td> </tr> <tr> <th id="T_001c5c9e_1963_11ec_9364_3c4a92e891bclevel0_row2" class="row_heading level0 row2" >2</th> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow2_col0" class="data row2 col0" >3</td> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow2_col1" class="data row2 col1" >6</td> <td id="T_001c5c9e_1963_11ec_9364_3c4a92e891bcrow2_col2" class="data row2 col2" >9</td> </tr></tbody></table>
上面的代码中,我们设置了表格数据中值为1的单元格的背景颜色为黄色。
综上所述,以上就是在python中pandas输出完整、对齐的表格的方法完整攻略,包括表格的格式设置和对齐方式设置,通过这些方法可以让我们更好地展示数据、查看表格,在数据分析中发挥更好的作用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中pandas输出完整、对齐的表格的方法 - Python技术站