最近在学数据分析,中英文混合的DataFrame表格会出现print()打印无法对齐的情况,导致输出的结果都没有对齐,十分不美观,也影响直观的分析。下面介绍两种解决方案,总有一款适合你:
准备工作:为演示方便,通过导入excel的方式建立名为’stu’, ‘stu2’ 的两个DataFrame格式对象
import pandas as pd
stu = pd.read_excel('Data\studentsInfo.xlsx','Group1',index_col=0)
stu.dropna(inplace=True)
stu2 = pd.read_excel('Data\studentsInfo.xlsx','Group1',index_col=0)
若在IDLE等纯文本输出的环境下,使用display()函数或print()函数都只能输出纯文本形式的表格,如下:
由于中英文混合的关系导致列没有对齐
通过pd.set_option进行设置,代码如下:
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.width', 180)
print(stu)
若在JupyterNotebook中直接输出DataFrame格式,则是有线框的HTML格式的表格
代码如下:(以下代码均是JupyterNotebook的cell中运行的)
| 性别 | 年龄 | 身高 | 体重 | 省份 | 成绩 | 月生活费 | 课程兴趣 | 案例教学 |
---|
序号 | | | | | | | | | |
---|
2 | male | 22.0 | 180 | 71.0 | GuangXi | 77.0 | 1300.0 | 3 | 4 |
4 | male | 20.0 | 177 | 72.0 | LiaoNing | 79.0 | 900.0 | 4 | 4 |
6 | male | 20.0 | 179 | 75.0 | YunNan | 92.0 | 950.0 | 5 | 5 |
7 | female | 21.0 | 166 | 53.0 | LiaoNing | 80.0 | 1200.0 | 4 | 5 |
8 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
9 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
10 | male | 19.0 | 169 | 76.0 | HeiLongJiang | 88.0 | 1100.0 | 5 | 5 |
但是这种方式无法同时在一个cell中显示两个表格,只显示最后一个表格
代码如下:
| 性别 | 年龄 | 身高 | 体重 | 省份 | 成绩 | 月生活费 | 课程兴趣 | 案例教学 |
---|
序号 | | | | | | | | | |
---|
1 | male | 20.0 | 170 | 70.0 | LiaoNing | NaN | 800.0 | 5 | 4 |
2 | male | 22.0 | 180 | 71.0 | GuangXi | 77.0 | 1300.0 | 3 | 4 |
3 | male | NaN | 180 | 62.0 | FuJian | 57.0 | 1000.0 | 2 | 4 |
4 | male | 20.0 | 177 | 72.0 | LiaoNing | 79.0 | 900.0 | 4 | 4 |
5 | male | 20.0 | 172 | NaN | ShanDong | 91.0 | NaN | 5 | 5 |
6 | male | 20.0 | 179 | 75.0 | YunNan | 92.0 | 950.0 | 5 | 5 |
7 | female | 21.0 | 166 | 53.0 | LiaoNing | 80.0 | 1200.0 | 4 | 5 |
8 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
9 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
10 | male | 19.0 | 169 | 76.0 | HeiLongJiang | 88.0 | 1100.0 | 5 | 5 |
为了在一个cell 输出多个表格,可以使用IPython.display,代码如下:
from IPython.display import display
display(stu)
display(stu2)
| 性别 | 年龄 | 身高 | 体重 | 省份 | 成绩 | 月生活费 | 课程兴趣 | 案例教学 |
---|
序号 | | | | | | | | | |
---|
2 | male | 22.0 | 180 | 71.0 | GuangXi | 77.0 | 1300.0 | 3 | 4 |
4 | male | 20.0 | 177 | 72.0 | LiaoNing | 79.0 | 900.0 | 4 | 4 |
6 | male | 20.0 | 179 | 75.0 | YunNan | 92.0 | 950.0 | 5 | 5 |
7 | female | 21.0 | 166 | 53.0 | LiaoNing | 80.0 | 1200.0 | 4 | 5 |
8 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
9 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
10 | male | 19.0 | 169 | 76.0 | HeiLongJiang | 88.0 | 1100.0 | 5 | 5 |
| 性别 | 年龄 | 身高 | 体重 | 省份 | 成绩 | 月生活费 | 课程兴趣 | 案例教学 |
---|
序号 | | | | | | | | | |
---|
1 | male | 20.0 | 170 | 70.0 | LiaoNing | NaN | 800.0 | 5 | 4 |
2 | male | 22.0 | 180 | 71.0 | GuangXi | 77.0 | 1300.0 | 3 | 4 |
3 | male | NaN | 180 | 62.0 | FuJian | 57.0 | 1000.0 | 2 | 4 |
4 | male | 20.0 | 177 | 72.0 | LiaoNing | 79.0 | 900.0 | 4 | 4 |
5 | male | 20.0 | 172 | NaN | ShanDong | 91.0 | NaN | 5 | 5 |
6 | male | 20.0 | 179 | 75.0 | YunNan | 92.0 | 950.0 | 5 | 5 |
7 | female | 21.0 | 166 | 53.0 | LiaoNing | 80.0 | 1200.0 | 4 | 5 |
8 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
9 | female | 20.0 | 162 | 47.0 | AnHui | 78.0 | 1000.0 | 4 | 4 |
10 | male | 19.0 | 169 | 76.0 | HeiLongJiang | 88.0 | 1100.0 | 5 | 5 |
觉得有用的话,不要吝惜评论点赞分享哦,希望大家多多包涵,有任何问题欢迎指正、讨论。
data=[{name:Amay,age:20,result:80},
{name:Tom,age:32,result:90}]
df=pd.DataFrame(data,columns=['name','age','result'])
print(df)
datafrma如下,现在要给其添加上表格框线。利用texttable。
tb=Texttable()
tb.set_cols_align(['l','r','r'])
tb.set_cols_dtype(['t','i','i'
a = 5 , b = 5.2,c = “123456789”
最普通的右对齐:print(“=”%a) 输出 5(详情:5前面两个空格)
print(“.3f”%b) 输出 5.200(详情:10代表整个输出占10个空间,小数点空间也算,3代表小数点后有三位,若不够则补上0)
print(“%.3f”%b) 输出5.200(详情:代表小数点后面占三位,不够则用0补齐)
字符串的情况:
与数字一样,只不过用%s来代替%d,%f
print(“%.3s”%c) 输出123
print(“.3s”%c) 输出 123(详情:1前面有7个空格)
左对齐的情况,只需pri
pandas显示对于字符宽度的控制默认是英文,当DataFrame的列名含有中文时,pandas就无法准确的控制列宽,从而导致列名和列没有对齐;对此,我们只要修改下pandas显示的默认设置即可,将两项设置都设为True即可,具体如下:
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
# Pandas 可以根据索引实现数据自动对齐,索引不重合的部分被置为NaN
df1 = pd.DataFrame(np.random.randint(low=1, high=10, size=(3,4)), columns=['a','b','c','d'])
df2 = pd.DataFrame(np.random.randint(low=1, high=10, size=(4,5)), columns=['a','b',
m_pred_survived.to_csv(clasified.csv,index=False)
以上这篇Python DataFrame 设置输出不显示index(索引)值的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
您可能感兴趣的文章:Python将DataFrame的某一列作为index的方法pandas将DataFrame的列变成行索引的方法python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)Py
>>> import pandas as pd
>>> dict1 = {'col1':[1,2,5,7],'col2':['a','b','c','d']}
>>> df = pd.DataFrame(dict1)
col1 col2
0 1 a
1 2 b
2 5 c
3 7 d
2. 从列表创建Dataframe (先把列表转化为字典,再把字典转化为DataFrame)
>>> lista = [1,2,5,7]
>>> listb = ['a','b','c','d']
>>> df = pd.Data
你可以使用 pandas.read_sql_query() 方法从 MySQL 数据库中读取表格,然后使用 pandas.DataFrame.to_string() 方法将表格转换为字符串,并使用 align 参数来控制列的对齐方式。具体实现步骤如下:
1. 导入 pandas 和 MySQLdb 模块:
```python
import pandas as pd
import MySQLdb
2. 连接 MySQL 数据库并执行查询:
```python
conn = MySQLdb.connect(host='localhost', user='root', password='123456', db='test', charset='utf8')
sql = 'SELECT * FROM my_table'
df = pd.read_sql_query(sql, conn)
3. 将 DataFrame 转换为字符串并对齐输出:
```python
print(df.to_string(index=False, header=True, align='left'))
其中,参数 index=False 表示不输出行索引,header=True 表示输出列名,align='left' 表示左对齐。
注意:在实际使用中,还需要根据具体情况调整输出格式、列宽等参数,以达到最佳的输出效果。