在用 Pandas 做数据分析的过程中,为了更好地呈现和展示数据,使数据更易读、易于理解,从而提高数据分析的效率和准确性,我们经常需要设置数据的显示格式。
通过设置数据显示格式,可以调整数据的小数位数、数值的对齐方式、列宽等参数,使得数据在表格中更美观、整洁,同时也更符合数据的实际含义。此外,设置数据显示格式还可以对数据进行格式化输出,如将数值格式化为货币、百分比等形式,便于直观地展示数据。
Pandas提供了多种方法来设置数据显示格式,包括:
set_option()
使用set_option()方法设置全局显示格式。set_option()方法可以设置Pandas的全局选项,其中包括“display.precision”、“display.max_rows”、“display.max_columns”等参数,可以控制浮点数的小数位数、DataFrame的行数和列数等。例如,下面的代码将全局浮点数精度设置为2:
import pandas as pd
pd.set_option('display.precision', 2)
使用style对象设置样式
Pandas的style对象可以用来设置数据的样式,例如设置字体、颜色、背景色等,还可以对数据进行着色、格式化等处理。例如,下面的代码将DataFrame中的正数着色为绿色,负数着色为红色:
import pandas as pd
df = pd.DataFrame({'A': [1, -2, 3], 'B': [-4, 5, -6]})
df.style.format("{:.2f}").background_gradient(cmap='coolwarm', subset=['A']).background_gradient(cmap='coolwarm', subset=['B'])
使用format()方法格式化字符串
Pandas的format()方法可以用来格式化字符串,包括浮点数的精度、日期格式、千位分隔符等。例如,下面的代码将DataFrame中的浮点数保留2位小数:
import pandas as pd
df = pd.DataFrame({'A': [1.23456, 2.34567], 'B': [3.45678, 4.56789]})
df['A'] = df['A'].map('{:.2f}'.format)
df['B'] = df['B'].map('{:.2f}'.format)
使用to_string()方法设置字符串格式
Pandas的to_string()方法可以将DataFrame转换为字符串,并可以通过设置参数来控制输出格式。例如,下面的代码将DataFrame中的浮点数保留2位小数,并将其转换为字符串:
import pandas as pd
df = pd.DataFrame({'A': [1.23456, 2.34567], 'B': [3.45678, 4.56789]})
df = df.round(2)
df_str = df.to_string(index=False)
其他
除了以上常用的方法外,还有以下方法设置数据的显示格式:
- max_columns: 设置显示的最大列数
- max_rows: 设置显示的最大行数
- max_colwidth: 设置每列最大的宽度
- precision: 设置浮点数的小数位数
- colheader_justify: 设置列名的对齐方式
- chop_threshold: 用于截断显示,当字符串长度超过设定的值时,会被截断并显示省略号
- date_dayfirst: 设置日期格式中日期和月份的先后顺序
接下来我们将通过实例演示这些方法的使用。
import pandas as pd
# 创建一个 DataFrame
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma', 'Frank'],
'age': [25, 32, 18, 47, 23, 31],
'score': [80.5, 92.0, 78.3, 67.5, 88.2, 95.6]
}
df = pd.DataFrame(data)
# 设置最大列数为 2
pd.options.display.max_columns = 2
print(df)
# 设置最大行数为 3
pd.options.display.max_rows = 3
print(df)
# 设置每列的最大宽度为 4
pd.options.display.max_colwidth = 4
print(df)
# 设置浮点数小数位数为 1
pd.options.display.precision = 1
print(df)
# 设置列名左对齐
pd.options.display.colheader_justify = 'left'
print(df)
# 截断字符串长度大于 5 的值
pd.options.display.chop_threshold = 5
print(df)
# 设置日期格式中日期和月份的先后顺序
date_data = {
'date': ['01/02/2022', '02/01/2022', '03/04/2022'],
'value': [10, 20, 30]
}
date_df = pd.DataFrame(date_data)
pd.to_datetime(date_df['date'], dayfirst=True)
print(date_df)
输出结果如下:
name age
0 Alice 25
1 Bob 32
2 Charlie 18
... ... ...
3 David 47
4 Emma 23
5 Frank 31
[6 rows x 2 columns]
name ...
2 Charlie ...
3 David ...
4 Emma ...
... ... ...
2 Charlie ...
3 David ...
4 Emma ...
5 Frank ...
[6 rows x 3 columns]
name ... score
0 Alice ... 80.5
1 Bob ... 92.0
2 Charlie ... 78.3
... ... ... ...
3 David ... 67.5
4 Emma ... 88.2
5 Frank ... 95.6
[6 rows x 3 columns]
name ... score
0 Alice ... 80.5
1 Bob ... 92.
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas最常用的设置数据显示格式的11种方法 - Python技术站