关键词

Pandas最常用的设置数据显示格式的11种方法

在用 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)

其他

除了以上常用的方法外,还有以下方法设置数据的显示格式:

  1. max_columns: 设置显示的最大列数
  2. max_rows: 设置显示的最大行数
  3. max_colwidth: 设置每列最大的宽度
  4. precision: 设置浮点数的小数位数
  5. colheader_justify: 设置列名的对齐方式
  6. chop_threshold: 用于截断显示,当字符串长度超过设定的值时,会被截断并显示省略号
  7. 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.

本文链接:http://task.lmcjl.com/news/4515.html

展开阅读全文